U
    k&p[~Y  ã                   @   sd   d dl mZ zd dlmZ W n  ek
r<   d dlmZ Y nX d dlZd dlZG dd„ dejƒZdS )é    )Úunicode_literals©ÚStringIONc                   @   sd  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGdH„ Z&dIdJ„ Z'dKdL„ Z(dMdN„ Z)dOdP„ Z*dQdR„ Z+dSdT„ Z,dUdV„ Z-dWdX„ Z.dYdZ„ Z/d[d\„ Z0d]d^„ Z1d_d`„ Z2dadb„ Z3dcdd„ Z4dedf„ Z5dgdh„ Z6didj„ Z7dkdl„ Z8dmdn„ Z9dodp„ Z:dqdr„ Z;dsdt„ Z<dudv„ Z=dwdx„ Z>dydz„ Z?d{d|„ Z@d}d~„ ZAdd€„ ZBdd‚„ ZCdƒd„„ ZDd…d†„ ZEd‡dˆ„ ZFd‰dŠ„ ZGd‹dŒ„ ZHddŽ„ ZIdd„ ZJd‘d’„ ZKd“d”„ ZLd•d–„ ZMd—S )˜ÚSettingsTestsc                 C   s   t  dd¡| _d S )NÚappnameú1.0)ÚcliappÚSettingsÚsettings©Úself© r   ú7/usr/lib/python3/dist-packages/cliapp/settings_tests.pyÚsetUp   s    zSettingsTests.setUpc                 C   s   |   | jjd¡ d S )Nr   )ÚassertEqualr
   Úprognamer   r   r   r   Útest_has_progname!   s    zSettingsTests.test_has_prognamec                 C   s   d| j _|  | j jd¡ d S ©NÚfoo)r
   r   r   r   r   r   r   Útest_sets_progname$   s    z SettingsTests.test_sets_prognamec                 C   s   |   | jjd¡ d S )Nr   )r   r
   Úversionr   r   r   r   Útest_has_version(   s    zSettingsTests.test_has_versionc                 C   s0   t jdddd„ d}| ¡ }|  d|jk¡ d S )Nr   r   c                   S   s   dS )NÚxyzzyr   r   r   r   r   Ú<lambda>,   ó    z9SettingsTests.test_sets_usage_from_func.<locals>.<lambda>)Úusager   )r   r	   Zbuild_parserÚ
assertTruer   )r   ÚsÚpr   r   r   Útest_sets_usage_from_func+   s    z'SettingsTests.test_sets_usage_from_funcc                 C   s4   |   d| jk¡ |   d| jk¡ |   d| jk¡ d S )NÚoutputÚlogú	log-level)r   r
   r   r   r   r   Ú&test_adds_default_options_and_settings0   s    z4SettingsTests.test_adds_default_options_and_settingsc                    s2   dddg‰ |   t‡ fdd„| jD ƒƒtˆ ƒ¡ d S )Nr    r!   r"   c                 3   s   | ]}|ˆ kr|V  qd S ©Nr   ©Ú.0Úx©Zknownr   r   Ú	<genexpr>7   s      zLSettingsTests.test_iterates_over_canonical_settings_names.<locals>.<genexpr>)r   Úsortedr
   r   r   r(   r   Ú+test_iterates_over_canonical_settings_names5   s    
ÿz9SettingsTests.test_iterates_over_canonical_settings_namesc                    s6   dddg‰ |   t‡ fdd„| j ¡ D ƒƒtˆ ƒ¡ d S )Nr    r!   r"   c                 3   s   | ]}|ˆ kr|V  qd S r$   r   r%   r(   r   r   r)   <   s      zBSettingsTests.test_keys_returns_canonical_names.<locals>.<genexpr>)r   r*   r
   Úkeysr   r   r(   r   Ú!test_keys_returns_canonical_names:   s    
ÿz/SettingsTests.test_keys_returns_canonical_namesc                 C   s\   | j jdgddd | j  dgd¡ | j  ddg¡ |  | j d d¡ |  | j d d	¡ d S )
Nr   úfoo help©ÚgroupÚbarúbar helpz--foo=foovalueú--barZfoovalueT)r
   ÚstringÚbooleanÚ
parse_argsr   r   r   r   r   Útest_parses_options?   s
    z!SettingsTests.test_parses_optionsc                 C   s6   | j  dgd¡ | j  ddg¡ |  | j d d¡ d S )Nr1   r2   r3   ú--no-barF©r
   r5   r6   r   r   r   r   r   Ú#test_parses_boolean_negation_optionF   s    z1SettingsTests.test_parses_boolean_negation_optionc                 C   s:   | j jdgddd | j  ddg¡ |  | j d d¡ d S )Nr1   r2   r/   r3   r8   Fr9   r   r   r   r   Ú,test_parses_boolean_negation_option_in_groupK   s    z:SettingsTests.test_parses_boolean_negation_option_in_groupc                 C   s   |   d| jk¡ d S r   )ÚassertFalser
   r   r   r   r   Ú)test_does_not_have_foo_setting_by_defaultP   s    z7SettingsTests.test_does_not_have_foo_setting_by_defaultc                 C   s   |   t| jjd¡ d S r   )ÚassertRaisesÚKeyErrorr
   Ú__getitem__r   r   r   r   Ú0test_raises_keyerror_for_getting_unknown_settingS   s    z>SettingsTests.test_raises_keyerror_for_getting_unknown_settingc                 C   s   |   t| jjdd¡ d S )Nr   r1   )r>   r?   r
   Ú__setitem__r   r   r   r   Ú0test_raises_keyerror_for_setting_unknown_settingV   s    z>SettingsTests.test_raises_keyerror_for_setting_unknown_settingc                 C   s$   | j  dgd¡ |  d| j k¡ d S ©Nr   r.   )r
   r4   r   r   r   r   r   Útest_adds_string_settingY   s    z&SettingsTests.test_adds_string_settingc                 C   s$   | j  dgd¡ |  d| j k¡ d S rD   )r
   Ústring_listr   r   r   r   r   Útest_adds_string_list_setting]   s    z+SettingsTests.test_adds_string_list_settingc                 C   s2   | j  dgd¡ | j  g ¡ |  | j d g ¡ d S )Nr   Ú ©r
   rF   r6   r   r   r   r   r   Ú)test_string_list_is_empty_list_by_defaulta   s    z7SettingsTests.test_string_list_is_empty_list_by_defaultc                 C   s6   | j  dgd¡ | j  dg¡ |  | j d dg¡ d S )Nr   rH   ú	--foo=foorI   r   r   r   r   Ú test_string_list_parses_one_itemf   s    z.SettingsTests.test_string_list_parses_one_itemc                 C   s<   | j  dgd¡ | j  dddg¡ |  | j d ddg¡ d S )Nr   rH   rK   z--foor1   rI   r   r   r   r   Ú!test_string_list_parses_two_itemsk   s    z/SettingsTests.test_string_list_parses_two_itemsc                 C   s:   | j jdgddgd | j  g ¡ |  | j d dg¡ d S )Nr   rH   r1   ©ÚdefaultrI   r   r   r   r   Ú/test_string_list_uses_nonempty_default_if_givenp   s    z=SettingsTests.test_string_list_uses_nonempty_default_if_givenc                 C   s@   | j jdgddgd | j  ddg¡ |  | j d ddg¡ d S )	Nr   rH   r1   rN   z
--foo=pinkz
--foo=punkZpinkZpunkrI   r   r   r   r   Ú=test_string_list_uses_ignores_default_if_user_provides_valuesu   s    zKSettingsTests.test_string_list_uses_ignores_default_if_user_provides_valuesc                 C   s*   | j  dgddgd¡ |  d| j k¡ d S ©Nr   r1   r.   )r
   Úchoicer   r   r   r   r   Útest_adds_choice_settingz   s    z&SettingsTests.test_adds_choice_settingc                 C   s8   | j  dgddgd¡ | j  g ¡ |  | j d d¡ d S rR   ©r
   rS   r6   r   r   r   r   r   Ú!test_choice_defaults_to_first_one~   s    z/SettingsTests.test_choice_defaults_to_first_onec                 C   sZ   | j  dgddgd¡ | j  dg¡ |  | j d d¡ | j  dg¡ |  | j d d¡ d S )Nr   r1   r.   rK   z	--foo=barrU   r   r   r   r   Ú#test_choice_accepts_any_valid_valueƒ   s
    z1SettingsTests.test_choice_accepts_any_valid_valuec                 C   s2   | j  dgddgd¡ | jt| j jdgdd d S )Nr   r1   r.   ú--foo=xyzzyT)Zsuppress_errors)r
   rS   r>   Ú
SystemExitr6   r   r   r   r   Ú/test_choice_raises_error_for_unacceptable_valueŠ   s     þz=SettingsTests.test_choice_raises_error_for_unacceptable_valuec                 C   s$   | j  dgd¡ |  d| j k¡ d S rD   ©r
   r5   r   r   r   r   r   Útest_adds_boolean_setting   s    z'SettingsTests.test_adds_boolean_settingc                 C   s$   | j  dgd¡ |  | j d ¡ d S rD   ©r
   r5   r<   r   r   r   r   Ú(test_boolean_setting_is_false_by_default”   s    z6SettingsTests.test_boolean_setting_is_false_by_defaultc                 C   sH   | j  dgd¡ d| j d< |  | j d ¡ d| j d< |  | j d ¡ d S )Nr   r.   Té   r[   r   r   r   r   Ú6test_sets_boolean_setting_to_true_for_many_true_values˜   s
    

zDSettingsTests.test_sets_boolean_setting_to_true_for_many_true_valuesc                 C   s–   | j  dgd¡ d| j d< |  | j d ¡ d| j d< |  | j d ¡ d| j d< |  | j d ¡ g | j d< |  | j d ¡ d| j d< |  | j d ¡ d S )Nr   r.   Fr   r   rH   r]   r   r   r   r   Ú8test_sets_boolean_setting_to_false_for_many_false_valuesŸ   s    




zFSettingsTests.test_sets_boolean_setting_to_false_for_many_false_valuesc                 C   sF   dd„ }| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )Nc                 S   s   t dƒS )Nz[config]
foo = yes
r   ©Úfilenamer   r   r   Ú	fake_open­   s    zHSettingsTests.test_sets_boolean_to_true_from_ini_file.<locals>.fake_openr   r.   úfoo.conf©Z	open_fileT©r
   r5   Úconfig_filesÚload_configsr   ©r   rd   r   r   r   Ú'test_sets_boolean_to_true_from_ini_file¬   s
    
z5SettingsTests.test_sets_boolean_to_true_from_ini_filec                 C   sF   dd„ }| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )Nc                 S   s   t dƒS )Nz[config]
foo = False
r   rb   r   r   r   rd   µ   s    zISettingsTests.test_sets_boolean_to_false_from_ini_file.<locals>.fake_openr   r.   re   rf   Frg   rj   r   r   r   Ú(test_sets_boolean_to_false_from_ini_file´   s
    
z6SettingsTests.test_sets_boolean_to_false_from_ini_filec                 C   sF   dd„ }| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )Nc                 S   s   t dƒS )Nzconfig:
 foo: true
r   rb   r   r   r   rd   ½   s    zISettingsTests.test_sets_boolean_to_true_from_yaml_file.<locals>.fake_openr   r.   úfoo.yamlrf   Trg   rj   r   r   r   Ú(test_sets_boolean_to_true_from_yaml_file¼   s
    
z6SettingsTests.test_sets_boolean_to_true_from_yaml_filec                 C   sF   dd„ }| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )Nc                 S   s   t dƒS )Nzconfig:
 foo: false
r   rb   r   r   r   rd   Å   s    zJSettingsTests.test_sets_boolean_to_false_from_yaml_file.<locals>.fake_openr   r.   rm   rf   Frg   rj   r   r   r   Ú)test_sets_boolean_to_false_from_yaml_fileÄ   s
    
z7SettingsTests.test_sets_boolean_to_false_from_yaml_filec                 C   s$   | j  dgd¡ |  d| j k¡ d S rD   )r
   Úbytesizer   r   r   r   r   Útest_adds_bytesize_settingÌ   s    z(SettingsTests.test_adds_bytesize_settingc                 C   sh  | j  dgd¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d	¡ | j jd
gd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ | j jdgd |  | j d d¡ d S )Nr   r.   rX   ©Úargsr   ú	--foo=123é{   z
--foo=123kixà z
--foo=123miÀÔTz
--foo=123gl    ¾Fr z
--foo=123tl    0Vx? z--foo=123kibi ì z--foo=123mibi  °z--foo=123gibl       { z--foo=123tibl        l )r
   rp   r6   r   r   r   r   r   Útest_parses_bytesize_optionÐ   s*    z)SettingsTests.test_parses_bytesize_optionc                 C   s$   | j  dgd¡ |  d| j k¡ d S rD   )r
   Úintegerr   r   r   r   r   Útest_adds_integer_settingñ   s    z'SettingsTests.test_adds_integer_settingc                 C   sZ   | j jdgddd | j jg d |  | j d d¡ | j jdgd |  | j d d¡ d S )Nr   r.   ru   rN   rr   rt   )r
   rw   r6   r   r   r   r   r   Útest_parses_integer_optionõ   s
    z(SettingsTests.test_parses_integer_optionc                 C   s.   | j j}|  t|tƒ¡ |  t|ƒdk¡ d S )Nr   )r
   Údefault_config_filesr   Ú
isinstanceÚlistÚlen)r   Údefaultsr   r   r   Ú%test_has_list_of_default_config_filesþ   s    z3SettingsTests.test_has_list_of_default_config_filesc                 C   s   |   | j d¡g ¡ d S )NZnotexist)r   r
   Ú	listconfsr   r   r   r   Ú;test_listconfs_returns_empty_list_for_nonexistent_directory  s    zISettingsTests.test_listconfs_returns_empty_list_for_nonexistent_directoryc                 C   s*   dd„ }| j jd|d}|  |dg¡ d S )Nc                 S   s   ddgS )Nre   zfoo.notconfr   ©Údirnamer   r   r   Úmock_listdir  s    zJSettingsTests.test_listconfs_lists_config_files_only.<locals>.mock_listdirÚ.©Úlistdirú
./foo.conf©r
   r€   r   ©r   r„   Únamesr   r   r   Ú&test_listconfs_lists_config_files_only  s    z4SettingsTests.test_listconfs_lists_config_files_onlyc                 C   s,   dd„ }| j jd|d}|  |ddg¡ d S )Nc                 S   s   ddgS )Nre   zbar.confr   r‚   r   r   r   r„     s    zJSettingsTests.test_listconfs_sorts_names_in_C_locale.<locals>.mock_listdirr…   r†   z
./bar.confrˆ   r‰   rŠ   r   r   r   Ú&test_listconfs_sorts_names_in_C_locale  s    z4SettingsTests.test_listconfs_sorts_names_in_C_localec                 C   s   |   | jj| jj¡ d S r$   )r   r
   rh   rz   r   r   r   r   Útest_has_config_files_attribute  s    
ÿz-SettingsTests.test_has_config_files_attributec                 C   s0   | j  jdg7  _|  | j j| j jdg ¡ d S )Nz./foo)r
   rh   r   rz   r   r   r   r   Ú)test_has_config_files_list_can_be_changed  s    
ÿz7SettingsTests.test_has_config_files_list_can_be_changedc                 C   sH   ddd„}| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )	Nc                 S   s   t dƒS )Nz[config]
foo = yeehaa
r   ©rc   Úmoder   r   r   Ú	mock_open  s    z5SettingsTests.test_loads_ini_files.<locals>.mock_openr   r.   úwhatever.confrf   Úyeehaa)N©r
   r4   rh   ri   r   ©r   r’   r   r   r   Útest_loads_ini_files  s
    

z"SettingsTests.test_loads_ini_filesc                 C   sH   ddd„}| j  dgd¡ dg| j _| j j|d |  | j d d¡ d S )	Nc                 S   s   t dƒS )Nzconfig:
  foo: yeehaa
r   r   r   r   r   r’   *  s    z6SettingsTests.test_loads_yaml_files.<locals>.mock_openr   r.   úwhatever.yamlrf   r”   )Nr•   r–   r   r   r   Útest_loads_yaml_files(  s
    

z#SettingsTests.test_loads_yaml_filesc                 C   s˜   ddd„}| j  dgd¡ | j  dgd¡ | j  dgd¡ d	g| j _| j j|d
 |  | j d dg¡ |  | j d ddg¡ |  | j d dddg¡ d S )Nc                 S   s   t dƒS )NzE[config]
foo = yeehaa
bar = ping, pong
comma = ping, pong, "foo,bar"
r   r   r   r   r   r’   7  s    zFSettingsTests.test_loads_string_list_from_ini_files.<locals>.mock_openr   r.   r1   r2   Úcommaú
comma helpr“   rf   r”   ÚpingÚpongúfoo,bar)N©r
   rF   rh   ri   r   r–   r   r   r   Ú%test_loads_string_list_from_ini_files5  s    

z3SettingsTests.test_loads_string_list_from_ini_filesc                 C   s˜   ddd„}| j  dgd¡ | j  dgd¡ | j  dgd¡ d	g| j _| j j|d
 |  | j d dg¡ |  | j d ddg¡ |  | j d dddg¡ d S )Nc                 S   s   t dƒS )NzKconfig:
  foo: yeehaa
  bar: [ping, pong]
  comma: [ping, pong, "foo,bar"]
r   r   r   r   r   r’   J  s    zGSettingsTests.test_loads_string_list_from_yaml_files.<locals>.mock_openr   r.   r1   r2   rš   r›   r˜   rf   r”   rœ   r   rž   )NrŸ   r–   r   r   r   Ú&test_loads_string_list_from_yaml_filesH  s    

z4SettingsTests.test_loads_string_list_from_yaml_filesc                 C   sv   d
dd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 |  | j d d¡ |  | j d dg¡ d S )Nc                 S   s   t dƒS )Nz	[config]
r   r   r   r   r   r’   ]  s    zESettingsTests.test_handles_defaults_with_ini_files.<locals>.mock_openr   r.   rN   r1   r2   r“   rf   )N©r
   r4   rF   rh   ri   r   r–   r   r   r   Ú$test_handles_defaults_with_ini_files[  s    

z2SettingsTests.test_handles_defaults_with_ini_filesc                 C   sv   d
dd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 |  | j d d¡ |  | j d dg¡ d S )Nc                 S   s   t dƒS )Nzconfig: {}
r   r   r   r   r   r’   k  s    zFSettingsTests.test_handles_defaults_with_yaml_files.<locals>.mock_openr   r.   rN   r1   r2   r˜   rf   )Nr¢   r–   r   r   r   Ú%test_handles_defaults_with_yaml_filesi  s    

z3SettingsTests.test_handles_defaults_with_yaml_filesc                 C   sx   ddd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 |  | j d d
¡ |  | j d ddg¡ d S )Nc                 S   s   t dƒS ©Nz'[config]
foo = yeehaa
bar = ping, pong
r   r   r   r   r   r’   y  s    zPSettingsTests.test_handles_overridden_defaults_with_ini_files.<locals>.mock_openr   r.   rN   r1   r2   r“   rf   r”   rœ   r   )Nr¢   r–   r   r   r   Ú/test_handles_overridden_defaults_with_ini_filesw  s    

z=SettingsTests.test_handles_overridden_defaults_with_ini_filesc                 C   sx   ddd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 |  | j d d
¡ |  | j d ddg¡ d S )Nc                 S   s   t dƒS ©Nz*config:
  foo: yeehaa
  bar: [ping, pong]
r   r   r   r   r   r’   ‰  s    zQSettingsTests.test_handles_overridden_defaults_with_yaml_files.<locals>.mock_openr   r.   rN   r1   r2   r˜   rf   r”   rœ   r   )Nr¢   r–   r   r   r   Ú0test_handles_overridden_defaults_with_yaml_files‡  s    

z>SettingsTests.test_handles_overridden_defaults_with_yaml_filesc                 C   sŠ   ddd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 | j  d
ddg¡ |  | j d d¡ |  | j d ddg¡ d S )Nc                 S   s   t dƒS r¥   r   r   r   r   r   r’   ™  s    z^SettingsTests.test_handles_values_from_ini_files_overridden_on_command_line.<locals>.mock_openr   r.   rN   r1   r2   r“   rf   ú	--foo=redú
--bar=blueú--bar=white,commaÚredÚblueúwhite,comma)N©r
   r4   rF   rh   ri   r6   r   r–   r   r   r   Ú=test_handles_values_from_ini_files_overridden_on_command_line—  s    

ÿzKSettingsTests.test_handles_values_from_ini_files_overridden_on_command_linec                 C   sŠ   ddd„}| j jdgddd | j jdgddgd dg| j _| j j|d	 | j  d
ddg¡ |  | j d d¡ |  | j d ddg¡ d S )Nc                 S   s   t dƒS r§   r   r   r   r   r   r’   «  s    z_SettingsTests.test_handles_values_from_yaml_files_overridden_on_command_line.<locals>.mock_openr   r.   rN   r1   r2   r˜   rf   r©   rª   r«   r¬   r­   r®   )Nr¯   r–   r   r   r   Ú>test_handles_values_from_yaml_files_overridden_on_command_line©  s    

ÿzLSettingsTests.test_handles_values_from_yaml_files_overridden_on_command_linec                 C   s$   ddd„}| j tj| jj|d d S )Nc                 S   s   t dƒS )Nz[config]
unknown = variable
r   r   r   r   r   r’   ½  s    z[SettingsTests.test_load_configs_raises_error_for_unknown_variable_in_ini.<locals>.mock_openrf   )N)r>   r   ÚUnknownConfigVariabler
   ri   r–   r   r   r   Ú:test_load_configs_raises_error_for_unknown_variable_in_ini»  s    
ýzHSettingsTests.test_load_configs_raises_error_for_unknown_variable_in_inic                 C   s>   ddd„}| j  dgd¡ dg| j _| jtj| j j|d d S )Nc                 S   s   t dƒS )Nzconfig:
  unknown: yeehaa
r   r   r   r   r   r’   Ê  s    z\SettingsTests.test_load_configs_raises_error_for_unknown_variable_in_yaml.<locals>.mock_openr   r.   r˜   rf   )N)r
   rF   rh   r>   r   r²   ri   r–   r   r   r   Ú;test_load_configs_raises_error_for_unknown_variable_in_yamlÈ  s    

 þzISettingsTests.test_load_configs_raises_error_for_unknown_variable_in_yamlc                 C   sh   ddd„}| j  dgd¡ dg| j _| j j|d | j  ¡ }|  | ¡ ddg¡ |  | dd	¡d
¡ d S )Nc                 S   s   t dƒS )Nz[extra]
something = else
r   r   r   r   r   r’   Ø  s    zRSettingsTests.test_load_configs_remembers_extra_sections_in_ini.<locals>.mock_openr   r.   r“   rf   ÚconfigÚextraÚ	somethingÚelse)N©r
   rF   rh   ri   Úas_cpr   ÚsectionsÚget©r   r’   Úcpr   r   r   Ú1test_load_configs_remembers_extra_sections_in_iniÖ  s    


z?SettingsTests.test_load_configs_remembers_extra_sections_in_inic                 C   sh   ddd„}| j  dgd¡ dg| j _| j j|d | j  ¡ }|  | ¡ ddg¡ |  | dd	¡d
¡ d S )Nc                 S   s   t dƒS )Nz$config: {}
extra:
  something: else
r   r   r   r   r   r’   ç  s    zSSettingsTests.test_load_configs_remembers_extra_sections_in_yaml.<locals>.mock_openr   r.   r˜   rf   rµ   r¶   r·   r¸   )Nr¹   r½   r   r   r   Ú2test_load_configs_remembers_extra_sections_in_yamlå  s    


z@SettingsTests.test_load_configs_remembers_extra_sections_in_yamlc                 C   s$   ddd„}|   | jj|dd ¡ d S )Nc                 S   s
   t ƒ ‚d S r$   )ÚIOErrorr   r   r   r   r’   ÷  s    zOSettingsTests.test_load_configs_ignore_errors_opening_a_file.<locals>.mock_openrf   )N)r   r
   ri   r–   r   r   r   Ú.test_load_configs_ignore_errors_opening_a_fileõ  s    
z<SettingsTests.test_load_configs_ignore_errors_opening_a_filec                 C   s,   | j  dg¡ |  | j j| j jdg ¡ d S )Nú--config=foo.confre   )r
   r6   r   rh   rz   r   r   r   r   Ú+test_adds_config_file_with_dash_dash_configü  s    
ÿz9SettingsTests.test_adds_config_file_with_dash_dash_configc                 C   s"   | j  dg¡ |  | j jg ¡ d S )Nú--no-default-configs©r
   r6   r   rh   r   r   r   r   Útest_ignores_default_configs  s    z*SettingsTests.test_ignores_default_configsc                 C   s&   | j  ddg¡ |  | j jdg¡ d S )NrÅ   rÃ   re   rÆ   r   r   r   r   Ú$test_ignores_then_adds_configs_works  s    z2SettingsTests.test_ignores_then_adds_configs_worksc                 C   s,   | j jdgdd d |  tj| j jd¡ d S ©Nr   r.   rN   ©r
   r4   r>   r   ÚAppExceptionÚrequirer   r   r   r   Ú)test_require_raises_error_if_string_unset	  s    ÿz7SettingsTests.test_require_raises_error_if_string_unsetc                 C   s6   | j jdgdd d d| j d< |  | j  d¡d ¡ d S )Nr   r.   rN   r1   ©r
   r4   r   rÌ   r   r   r   r   Ú"test_require_is_ok_with_set_string  s    
z0SettingsTests.test_require_is_ok_with_set_stringc                 C   s,   | j jdgddd |  | j  d¡d ¡ d S )Nr   r.   zfoo defaultrN   rÎ   r   r   r   r   Ú&test_require_is_ok_with_default_string  s    z4SettingsTests.test_require_is_ok_with_default_stringc                 C   s(   | j  dgd¡ |  tj| j jd¡ d S rD   )r
   rF   r>   r   rË   rÌ   r   r   r   r   Ú.test_require_raises_error_if_string_list_unset  s    z<SettingsTests.test_require_raises_error_if_string_list_unsetc                 C   s6   | j  dgd¡ ddg| j d< |  | j  d¡d ¡ d S )Nr   r.   r1   rÎ   r   r   r   r   Ú'test_require_is_ok_with_set_string_list  s    z5SettingsTests.test_require_is_ok_with_set_string_listc                 C   s.   | j jdgddgd |  | j  d¡d ¡ d S rÉ   rÎ   r   r   r   r   Ú+test_require_is_ok_with_default_string_list   s    z9SettingsTests.test_require_is_ok_with_default_string_listc                 C   s.   | j  dgddgd¡ |  | j  d¡d ¡ d S rR   )r
   rS   r   rÌ   r   r   r   r   Ú$test_require_is_ok_with_unset_choice$  s    z2SettingsTests.test_require_is_ok_with_unset_choicec                 C   s(   | j  dgd¡ |  | j  d¡d ¡ d S rD   )r
   r5   r   rÌ   r   r   r   r   Ú%test_require_is_ok_with_unset_boolean(  s    z3SettingsTests.test_require_is_ok_with_unset_booleanc                 C   s(   | j  dgd¡ |  | j  d¡d ¡ d S rD   )r
   rp   r   rÌ   r   r   r   r   Ú&test_require_is_ok_with_unset_bytesize,  s    z4SettingsTests.test_require_is_ok_with_unset_bytesizec                 C   s(   | j  dgd¡ |  | j  d¡d ¡ d S rD   )r
   rw   r   rÌ   r   r   r   r   Ú%test_require_is_ok_with_unset_integer0  s    z3SettingsTests.test_require_is_ok_with_unset_integerc                 C   sH   | j  dgd¡ | j jdgdd d ddg}| jtj| j jf|žŽ  d S )Nr   r.   r1   r2   rN   rÊ   ©r   rs   r   r   r   Ú<test_require_raises_error_when_one_value_of_several_is_unset4  s    zJSettingsTests.test_require_raises_error_when_one_value_of_several_is_unsetc                 C   s@   | j  dgd¡ | j  dgd¡ ddg}|  | j j|Ž d ¡ d S )Nr   r.   r1   r2   rÎ   rØ   r   r   r   Ú'test_require_is_ok_with_multiple_values:  s    z5SettingsTests.test_require_is_ok_with_multiple_valuesc                 C   s^   | j jdgddd | j jdgddd | j  ¡ }|  | dd¡d	¡ |  | dd¡d¡ d S )
Nr   r.   r_   rN   r1   r2   Zyorµ   Ú1)r
   rw   r4   rº   r   r¼   )r   r¾   r   r   r   Ú'test_exports_configparser_with_settings@  s
    
z5SettingsTests.test_exports_configparser_with_settingsc                 C   s˜   ddd„}| j jdgddd dg| j _| j j|d | j  ¡ }|  t| ¡ ƒdd	g¡ |  | dd¡d
¡ |  | 	d	¡dg¡ |  | d	d¡d¡ d S )Nc                 S   s   t dƒS )Nz*[config]
foo = yeehaa

[other]
bar = dodo
r   r   r   r   r   r’   I  s    zKSettingsTests.test_exports_all_config_sections_via_as_cp.<locals>.mock_openr   r.   rN   r“   rf   rµ   Úotherr”   r1   Zdodo)N)
r
   r4   rh   ri   rº   r   r*   r»   r¼   Zoptionsr½   r   r   r   Ú*test_exports_all_config_sections_via_as_cpG  s    
	

z8SettingsTests.test_exports_all_config_sections_via_as_cpN)NÚ__name__Ú
__module__Ú__qualname__r   r   r   r   r   r#   r+   r-   r7   r:   r;   r=   rA   rC   rE   rG   rJ   rL   rM   rP   rQ   rT   rV   rW   rZ   r\   r^   r`   ra   rk   rl   rn   ro   rq   rv   rx   ry   r   r   rŒ   r   rŽ   r   r—   r™   r    r¡   r£   r¤   r¦   r¨   r°   r±   r³   r´   r¿   rÀ   rÂ   rÄ   rÇ   rÈ   rÍ   rÏ   rÐ   rÑ   rÒ   rÓ   rÔ   rÕ   rÖ   r×   rÙ   rÚ   rÜ   rÞ   r   r   r   r   r      s–   !	r   )	Z
__future__r   r   ÚImportErrorÚioZunittestr   ZTestCaser   r   r   r   r   Ú<module>   s   