
    ceC                    *   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl	m
Z
 d dlZd dlmZ d dlZd dlmZ d dlmZ ej$                  Z G d dej(                        Z G d d	ej(                        Z G d
 de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Z G d de      Zd Z e
j@                  de       G d de             Z! G d  d!e      Z" G d" d#e      Z# G d$ d%e      Z$ G d& d'e      Z% G d( d)e      Z& G d* d+e      Z' G d, d-e      Z( G d. d/e      Z) G d0 d1e      Z* G d2 d3e      Z+ G d4 d5e      Z, G d6 d7e      Z- G d8 d9e      Z. G d: d;e      Z/ G d< d=e      Z0 G d> d?e      Z1 G d@ dAe      Z2 G dB dCe      Z3 G dD dEe      Z4 G dF dGe      Z5 G dH dIe      Z6 G dJ dKe      Z7 G dL dMe      Z8 G dN dOe      Z9 G dP dQe      Z: G dR dSe      Z; G dT dUe      Z< G dV dWe      Z= G dX dYe      Z> G dZ d[e      Z? G d\ d]e      Z@ G d^ d_e      ZA G d` dae      ZB G db dce      ZC G dd dee      ZD G df dgej(                        ZE G dh diej(                        ZF G dj dke      ZG G dl dme      ZH e
j@                  de       G dn doeH             ZI e
j@                  de       G dp dqeH             ZJ G dr dseJ      ZKy)t    N)mock)base)cfg)typesc                   Z    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zy)ExceptionsTestCasec                 d    t        t        j                  d            }| j                  d|       y )Nfoobar)strr   ErrorassertEqualselfmsgs     </usr/lib/python3/dist-packages/oslo_config/tests/test_cfg.py
test_errorzExceptionsTestCase.test_error'   s%    #))H%&3'    c                 d    t        t        j                  d            }| j                  d|       y )Nr
   z arguments already parsed: foobar)r   r   ArgsAlreadyParsedErrorr   r   s     r   test_args_already_parsed_errorz1ExceptionsTestCase.test_args_already_parsed_error+   s(    #,,X67;SAr   c                 d    t        t        j                  d            }| j                  d|       y )Nfooz%no such option foo in group [DEFAULT])r   r   NoSuchOptErrorr   r   s     r   test_no_such_opt_errorz)ExceptionsTestCase.test_no_such_opt_error/   s(    #$$U+,@#Fr   c                     t        t        j                  dt        j                  d                  }| j	                  d|       y )Nr   barz!no such option foo in group [bar])r   r   r   OptGroupr   r   s     r   !test_no_such_opt_error_with_groupz4ExceptionsTestCase.test_no_such_opt_error_with_group3   s3    #$$UCLL,?@A<cBr   c                 d    t        t        j                  d            }| j                  d|       y )Nr   zno such group [bar])r   r   NoSuchGroupErrorr   r   s     r   test_no_such_group_errorz+ExceptionsTestCase.test_no_such_group_error7   s(    #&&u-..4r   c                 d    t        t        j                  d            }| j                  d|       y )Nr   zduplicate option: foo)r   r   DuplicateOptErrorr   r   s     r   test_duplicate_opt_errorz+ExceptionsTestCase.test_duplicate_opt_error;   s(    #''./0#6r   c                 d    t        t        j                  d            }| j                  d|       y )Nr   z0value required for option foo in group [DEFAULT])r   r   RequiredOptErrorr   r   s     r   test_required_opt_errorz*ExceptionsTestCase.test_required_opt_error?   s+    #&&u-.K	r   c                     t        t        j                  dt        j                  d                  }| j	                  d|       y )Nr   r   z,value required for option foo in group [bar])r   r   r&   r   r   r   s     r   "test_required_opt_error_with_groupz5ExceptionsTestCase.test_required_opt_error_with_groupD   s3    #&&ucll5.ABCGMr   c                 d    t        t        j                  d            }| j                  d|       y )Nr
   z#template substitution error: foobar)r   r   TemplateSubstitutionErrorr   r   s     r    test_template_substitution_errorz3ExceptionsTestCase.test_template_substitution_errorH   s(    #//9:>Dr   c                 h    t        t        j                  ddg            }| j                  d|       y )Nr   r   z)Failed to find some config files: foo,bar)r   r   ConfigFilesNotFoundErrorr   r   s     r   !test_config_files_not_found_errorz4ExceptionsTestCase.test_config_files_not_found_errorL   s,    #..u~>?DcJr   c                 h    t        t        j                  ddg            }| j                  d|       y )Nr   r   z)Failed to open some config files: foo,bar)r   r    ConfigFilesPermissionDeniedErrorr   r   s     r   )test_config_files_permission_denied_errorz<ExceptionsTestCase.test_config_files_permission_denied_errorP   s,    #66u~FGDcJr   c                 d    t        t        j                  d            }| j                  d|       y )Nr
   z,Failed to read config file directory: foobar)r   r   ConfigDirNotFoundErrorr   r   s     r   test_config_dir_not_found_errorz2ExceptionsTestCase.test_config_dir_not_found_errorT   s(    #,,X67GMr   c                 f    t        t        j                  dd            }| j                  d|       y )Nr   r
   zFailed to parse foo: foobar)r   r   ConfigFileParseErrorr   r   s     r   test_config_file_parse_errorz/ExceptionsTestCase.test_config_file_parse_errorX   s*    #**5(;<6<r   N)__name__
__module____qualname__r   r   r   r   r!   r$   r'   r)   r,   r/   r2   r5   r8    r   r   r   r   %   sK    (BGC57
NEKKN=r   r   c                   P     e Zd Z G d dej                        Z fdZddZ xZS )BaseTestCasec                       e Zd Zdg g dfdZy)BaseTestCase.TestConfigOptsNc                 T    t         j                  j                  | |dd|dd||d
      S )Ntest1.0somedesctepilogT)	argsprogversionusagedescriptionepilogdefault_config_filesdefault_config_dirsvalidate_default_values)r   
ConfigOpts__call__)r   rF   rL   rM   rI   s        r   rP   z$BaseTestCase.TestConfigOpts.__call__`   s<    >>**& %9$7(, + 
. 
.r   )r9   r:   r;   rP   r<   r   r   TestConfigOptsr@   _   s     $2)+4	.r   rQ   c                     t         t        |           | j                  t	        j
                                | j                         | _        g | _        y N)	superr>   setUp
useFixturefixturesNestedTempfilerQ   conftempdirsr   	__class__s    r   rU   zBaseTestCase.setUpn   s<    lD')//12'')	r   c                    g }|D ]Q  \  }}t         j                  j                  |      st        j                         }t         j                  j                  |||z         }t         j                  j                  t         j                  j                  |            s8t        j                  t         j                  j                  |             n||z   }t        j                  |t         j                  t         j                  z        }|j                  |       	 t        j                  ||j                  d             t        j                  |       T |S # t        j                  |       w xY w)Nzutf-8)ospathisabstempfilemkdtempjoinexistsdirnamemakedirsopenO_CREATO_WRONLYappendwriteencodeclose)	r   filesext	tempfilesbasenamecontentstmpdirr_   fds	            r   create_tempfileszBaseTestCase.create_tempfilesu   s    	$) 	 Xx77==*!))+ww||FHsN; ww~~bggood&;<KK 56#~rzzBKK78BT"X__W56!	"  s   %EE3).conf)	r9   r:   r;   r   rO   rQ   rU   ru   __classcell__r\   s   @r   r>   r>   ]   s    . .r   r>   c                       e Zd Zd Zd Zd Zy)UsageTestCasec                    t        j                         }| j                  g        | j                  j                  |       | j	                  d|j                                | j                  d|j                                | j                  d|j                                | j                  d|j                                y NfileDusage: test [-h] [--config-dir DIR] [--config-file PATH] [--version]rD   rE   	optional:)ioStringIOrY   print_usageassertIngetvalueassertNotInr   fs     r   test_print_usagezUsageTestCase.test_print_usage   s    KKM		"		1%JJL	 	QZZ\2AJJL1ajjl3r   c                    | j                         }g | _        t        j                         } |g d       |j	                  |       | j                  d|j                                | j                  d|j                                | j                  d|j                                | j                  d|j                                y )Nz%(prog)s FOO BAR)rI   r}   zusage: test FOO BARrD   rE   r   )rQ   rZ   r   r   r   r   r   r   )r   rY   r   s      r   test_print_custom_usagez%UsageTestCase.test_print_custom_usage   s    ""$KKMR)*a +QZZ\:QZZ\2AJJL1ajjl3r   c                    t        j                         }| j                  g        | j                  j                  |       | j	                  d|j                                | j	                  d|j                                | j	                  d|j                                | j                  d|j                                y r|   )r   r   rY   
print_helpr   r   r   r   s     r   test_print_helpzUsageTestCase.test_print_help   s    KKM		"		!$JJL	 	j!**,/i.ajjl3r   N)r9   r:   r;   r   r   r   r<   r   r   rz   rz      s    
4
4
4r   rz   c                   *    e Zd Zd Zd Zd Zd Zd Zy)HelpTestCasec                 F   t        j                         }| j                  g        | j                  j                  |       | j	                  d|j                                | j                  |j                         d       | j	                  d|j                                y )Nr}   r   option(s|al arguments):
-h, --help)r   r   rY   r   r   r   assertRegexr   s     r   r   zHelpTestCase.test_print_help   st    KKM		"		!$JJL	 	'@AlAJJL1r   c           	         t        j                         }t        j                  dddg dd      t        j                  ddd	g d
d      t        j                  dddg dd      g}| j                  j                  |       | j	                  g        | j                  j                  |       | j                  d|j                                | j                  |j                         d       | j                  d|j                                | j                  d|j                                | j                  d|j                                | j                  d|j                                y )Naaaxx)r   yyzzzStrOpt with choices.)shortdefaultchoiceshelpbbbr   )Nr   r   cccr   ) r   r   r}   zAusage: test [-h] [--aa AA] [--bb BB] [--cc CC] [--config-dir DIR]r   r   z/StrOpt with choices. Allowed values: xx, yy, zzz3StrOpt with choices. Allowed values: <None>, yy, zzz/StrOpt with choices. Allowed values: '', yy, zz)
r   r   r   StrOptrY   register_cli_optsr   r   r   r   )r   r   cli_optss      r   #test_print_strOpt_with_choices_helpz0HelpTestCase.test_print_strOpt_with_choices_help   s#   KKMJJt3124 JJt3124 JJt3/24

 			##H-		"		!$!JJL	 	'@AlAJJL1Gjjl	$Kjjl	$Gjjl	$r   c                 0   t        j                         }| j                  j                  t	        j
                  d             | j                  j                  t	        j
                  d             | j                  j                  t	        j
                  d             | j                  j                  t	        j
                  d             | j                  g        | j                  j                  |       |j                         j                  d      }|j                         j                  d      }|j                         j                  d      }|j                         j                  d	      }||||g}| j                  t        |      |       y )
Nabczbaghidebr}   --zba--abc--ghiz--debr   r   rY   register_cli_optr   r   r   r   findr   sorted)r   r   r   r   r   r   lists          r   test_print_sorted_helpz#HelpTestCase.test_print_sorted_help   s   KKM		""3::e#45		""3::e#45		""3::e#45		""3::e#45		"		!$jjl(jjl(jjl(jjl(S#s#t,r   c                    t        j                         }| j                  j                  t	        j
                  ddd             | j                  j                  t	        j
                  d             | j                  j                  t	        j
                  d             | j                  j                  t	        j
                  d             | j                  g        | j                  j                  |       |j                         j                  d	      }|j                         j                  d
      }|j                         j                  d      }|||g}| j                  t        |      |       y )NpstTF)
positionalrequiredr   r   r   r}   r   r   r   r   )r   r   r   r   r   r   s         r   'test_print_sorted_help_with_positionalsz4HelpTestCase.test_print_sorted_help_with_positionals   s   KKM		""JJu>	@		""3::e#45		""3::e#45		""3::e#45		"		!$jjl(jjl(jjl(S#t,r   c                    t        j                         }t        j                  dt        j                  d      g      }t        j                  dd      }| j
                  j                  |       | j
                  j                  |       | j                  g        | j
                  j                  |       | j                  d|j                                | j                  d	|j                                y )
Nza-bczd-efdeprecated_optszu-vwzx-yzdeprecated_namer}   z%--a-bc A_BC, --d-ef A_BC, --d_ef A_BCz%--u-vw U_VW, --x-yz U_VW, --x_yz U_VW)
r   r   r   r   DeprecatedOptrY   r   r   r   r   )r   r   r   uvws       r   test_print_help_with_deprecatedz,HelpTestCase.test_print_help_with_deprecated   s    KKMjj*-*;*;F*C)DFjj)/1 			""3'		""3'		"		!$=qzz|L=qzz|Lr   N)r9   r:   r;   r   r   r   r   r   r<   r   r   r   r      s    2$@--Mr   r   c                   $    e Zd Zd Zd Zd Zd Zy)FindConfigFilesTestCasec                 0   t         j                  j                  d      dg| j                  t	        j
                  ddg             | j                  t	        j
                  dfd             | j                  t        j                  d             y )	Nz~/.blaa/blaa.conf/etc/foo.confsys.argvr   os.path.existsc                     | v S rS   r<   pconfig_filess    r   <lambda>z@FindConfigFilesTestCase.test_find_config_files.<locals>.<lambda>      !|"3 r   blaaproject)	r^   r_   
expanduserrV   rW   MonkeyPatchr   r   find_config_filesr   r   s    @r   test_find_config_filesz.FindConfigFilesTestCase.test_find_config_files  sy    GG23

 	,,Z%AB,,-=35 	6 	..v>Mr   c                    t         j                  j                  d      t         j                  j                  d      t         j                  j                  d      ddddg| j                  t	        j
                  dfd	             t         j                  j                  d      t         j                  j                  d      g}t        j                  d
d      }| j                  ||       y)zEnsure priority of directories is enforced.

        Ensure we will only ever return two files: $project.conf and
        $prog.conf.
        z~/.foo/foo.confz
~/foo.confz
~/bar.confz/etc/foo/foo.confz/etc/foo/bar.confr   z/etc/bar.confr   c                     | v S rS   r<   r   s    r   r   zJFindConfigFilesTestCase.test_find_config_files_overrides.<locals>.<lambda>/  s    \(9 r   r   r   )r   rG   N)	r^   r_   r   rV   rW   r   r   r   r   )r   expectedactualr   s      @r    test_find_config_files_overridesz8FindConfigFilesTestCase.test_find_config_files_overrides  s     GG01GG|,GG|,	
 	,,9; 	< GG01GG|,
 &&u5A6*r   c                 L   ddgddd}| j                  t        j                  ddg             | j                  t        j                  dfd	             | j                  t        j                  d
|             | j                  t	        j
                  d      dg       y )Nz%/snap/nova/current/etc/blaa/blaa.confz(/var/snap/nova/common/etc/blaa/blaa.conf/snap/nova/current//var/snap/nova/common/SNAPSNAP_COMMONr   r   r   c                     | v S rS   r<   r   s    r   r   zEFindConfigFilesTestCase.test_find_config_files_snap.<locals>.<lambda>D  r   r   
os.environr   r   rV   rW   r   r   r   r   )r   fake_envr   s     @r   test_find_config_files_snapz3FindConfigFilesTestCase.test_find_config_files_snap8  s    36

 *3

 	,,Z%AB,,-=35 	6,,\8DE..v>DE	Gr   c                 B   dg| j                  t        j                  ddg             | j                  t        j                  dfd             | j                  t	        j
                  d      g        | j                  t	        j
                  dd	             y )
Nz/etc/foo.jsonr   r   r   c                     | v S rS   r<   r   s    r   r   zOFindConfigFilesTestCase.test_find_config_files_with_extension.<locals>.<lambda>O  r   r   r   r   z.jsonr   	extensionr   r   s    @r   %test_find_config_files_with_extensionz=FindConfigFilesTestCase.test_find_config_files_with_extensionJ  s    '(,,Z%AB,,-=35 	6 	..v>C..v9@B%	'r   N)r9   r:   r;   r   r   r   r   r<   r   r   r   r     s    
N+6G$
'r   r   c                   $    e Zd Zd Zd Zd Zd Zy)FindConfigDirsTestCasec                 0   t         j                  j                  d      dg| j                  t	        j
                  ddg             | j                  t	        j
                  dfd             | j                  t        j                  d             y )	Nz~/.blaa/blaa.conf.dz/etc/foo.conf.dr   r   r   c                     | v S rS   r<   r   config_dirss    r   r   z>FindConfigDirsTestCase.test_find_config_dirs.<locals>.<lambda>_      qK7G r   r   r   )	r^   r_   r   rV   rW   r   r   r   find_config_dirsr   r   s    @r   test_find_config_dirsz,FindConfigDirsTestCase.test_find_config_dirsY  s{    ww))*?@(* 	,,Z%AB,,-=-GI 	J 	--f={Kr   c                 H   dgddd}| j                  t        j                  ddg             | j                  t        j                  dfd             | j                  t        j                  d	|             | j                  t	        j
                  d
             y )Nz*/var/snap/nova/common/etc/blaa/blaa.conf.dr   r   r   r   r   r   c                     | v S rS   r<   r   s    r   r   zCFindConfigDirsTestCase.test_find_config_dirs_snap.<locals>.<lambda>j  r   r   r   r   r   rV   rW   r   r   r   r   )r   r   r   s     @r   test_find_config_dirs_snapz1FindConfigDirsTestCase.test_find_config_dirs_snapc  s    CD1#;= 	,,Z%AB,,-=-GI 	J,,\8DE--f={Kr   c                     | j                  t        j                  ddg             | j                  t	        j
                  d      g        y )Nr   r   r   r   r   r   s    r    test_find_config_dirs_non_existsz7FindConfigDirsTestCase.test_find_config_dirs_non_existso  s8    ,,Z%AB--f=rBr   c                 B   dg| j                  t        j                  ddg             | j                  t        j                  dfd             | j                  t	        j
                  d      g        | j                  t	        j
                  dd	             y )
Nz/etc/foo.json.dr   r   r   c                     | v S rS   r<   r   s    r   r   zMFindConfigDirsTestCase.test_find_config_dirs_with_extension.<locals>.<lambda>x  r   r   r   r   z.json.dr   r   r   s    @r   $test_find_config_dirs_with_extensionz;FindConfigDirsTestCase.test_find_config_dirs_with_extensions  s    (),,Z%AB,,-=-GI 	J 	--f=rB--f8AC$	&r   N)r9   r:   r;   r   r   r   r   r<   r   r   r   r   W  s    L
LC
&r   r   c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
DefaultConfigFilesTestCasec                    | j                   j                  t        j                  d             | j	                  dg      }| j                   j                  t        j                  d             | j                  ddg|d   g       | j                  |d   g| j                   j                         | j                  d| j                   j                         y )	Nr   zfoo-[DEFAULT]
foo = bar
zconfig-file-fooz--config-file-foofoo.confr   rF   rL   r   )	rY   register_optr   r   ru   r   r   config_filer   r   pathss     r   test_use_defaultz+DefaultConfigFilesTestCase.test_use_default  s    		szz%01%%'K&LM		""3::.?#@A		+Z8(-az 	 	3 	%(TYY%:%:;		.r   c                 V   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   gdg       | j                  |d   g| j                   j                         | j                  d| j                   j                         y )Nr   r  --config-filer   bar.confr  r   rY   r  r   r   ru   r   r  r   r	  s     r   !test_do_not_use_default_multi_argz<DefaultConfigFilesTestCase.test_do_not_use_default_multi_arg  s    		szz%01%%'K&LM		q2(2| 	 	5 	%(TYY%:%:;		.r   c                 Z   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   z   gdg       | j                  |d   g| j                   j                         | j                  d| j                   j                         y )Nr   r  z--config-file=r   r  r  r   r  r	  s     r   "test_do_not_use_default_single_argz=DefaultConfigFilesTestCase.test_do_not_use_default_single_arg  s    		szz%01%%'K&LM		(5834(2| 	 	5 	%(TYY%:%:;		.r   c                 t    | j                  g        | j                  g | j                   j                         y N)rF   )rY   r   r  r   s    r   test_no_default_config_filez6DefaultConfigFilesTestCase.test_no_default_config_file  s*    		r	TYY223r   c                     | j                  dg      | j                  t        j                  dfd             | j	                  g d        | j                  | j                  j                         y )Ndef	[DEFAULT]z!oslo_config.cfg.find_config_filesc                     S rS   r<   )r   rG   r
  s     r   r   zJDefaultConfigFilesTestCase.test_find_default_config_file.<locals>.<lambda>  s    e r   r  )ru   rV   rW   r   rY   r   r  r	  s    @r   test_find_default_config_filez8DefaultConfigFilesTestCase.test_find_default_config_file  sb    %%';&<=,,;35 	6 			r	5		 5 56r   c                     | j                  dg      }| j                  g |       | j                  || j                  j                         y )Nr  r  ru   rY   r   r  r	  s     r   test_default_config_filez3DefaultConfigFilesTestCase.test_default_config_file  s@    %%';&<=		r	6		 5 56r   c                 B   | j                   j                  t        j                  d             | j	                  dg      }| j                  g |       | j                  || j                   j                         | j                  d| j                   j                         y )Nr   r  r  r  r   rY   r   r   r   ru   r   r  r   r	  s     r   #test_default_config_file_with_valuez>DefaultConfigFilesTestCase.test_default_config_file_with_value  ss    		""3::e#45%%'J&KL		r	6		 5 56		.r   c                 D   | j                   j                  t        j                  d             | j	                  dg      }| j                  dg|       | j                  || j                   j                         | j                  d| j                   j                         y )Nr   r   
--foo=blaar  r   r!  r	  s     r   !test_default_config_file_priorityz<DefaultConfigFilesTestCase.test_default_config_file_priority  su    		""3::e#45%%'J&KL		~E	B		 5 56/r   N)r9   r:   r;   r  r  r  r  r  r  r"  r%  r<   r   r   r  r    s*    	///477/0r   r  c                   <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
DefaultConfigDirsTestCasec                    | j                   j                  t        j                  d             | j	                  dg      }t
        j                  j                  |d         }| j                   j                  t        j                  d             | j                  ddg|g       | j                  |g| j                   j                         | j                  d| j                   j                         y )	Nr   zfoo.conf.d/foor  r   zconfig-dir-fooz--config-dir-fooz
foo.conf.drF   rM   r   )rY   r  r   r   ru   r^   r_   re   r   r   
config_dirr   r   r
  r   s      r   r  z*DefaultConfigDirsTestCase.test_use_default  s    		szz%01%% (D 'E FGGOOE!H%		""3::.>#?@		*L9'(c 	 	+ 	!dii223		.r   c                    | j                   j                  t        j                  d             | j	                  dg      }t
        j                  j                  |d         }| j                  d|gdg       | j                  |g| j                   j                         | j                  d| j                   j                         y )Nr   r)  r   --config-dir
bar.conf.dr*  r   )rY   r  r   r   ru   r^   r_   re   r   r   r   r,  s      r   r  z;DefaultConfigDirsTestCase.test_do_not_use_default_multi_arg  s    		szz%01%% (D 'E FGGOOE!H%		*'3n 	 	6 	!dii334		.r   c                    | j                   j                  t        j                  d             | j	                  dg      }t
        j                  j                  |d         }| j                  d|z   gdg       | j                  |g| j                   j                         | j                  d| j                   j                         y )Nr   r)  r   z--config-dir=r/  r*  r   )rY   r  r   r   ru   r^   r_   re   r   r+  r   r,  s      r   r  z<DefaultConfigDirsTestCase.test_do_not_use_default_single_arg  s    		szz%01%% (D 'E FGGOOE!H%		!+,'3n 	 	6 	!dii223		.r   c                 t    | j                  g        | j                  g | j                   j                         y r  )rY   r   r+  r   s    r   test_no_default_config_dirz4DefaultConfigDirsTestCase.test_no_default_config_dir  s*    		r	TYY112r   c                 2   | j                  dg      }t        j                  j                  |d         | j	                  t        j                  dfd             | j                  g d        | j                  g| j                  j                         y )Ndef.conf.d/defr  r   z oslo_config.cfg.find_config_dirsc                     S rS   r<   )r   rG   r   s     r   r   zHDefaultConfigDirsTestCase.test_find_default_config_dir.<locals>.<lambda>  s    a r   r*  )
ru   r^   r_   re   rV   rW   r   rY   r   r+  r,  s     @r   test_find_default_config_dirz6DefaultConfigDirsTestCase.test_find_default_config_dir  s    %% (5 '6 7GGOOE!H%,,:/1 	2 			rt	4!dii223r   c                     | j                  dg      }t        j                  j                  |d         }| j	                  g |g       | j                  |g| j                  j                         y )Nr4  r   r*  )ru   r^   r_   re   rY   r   r+  r,  s      r   test_default_config_dirz1DefaultConfigDirsTestCase.test_default_config_dir  s`    %% (5 '6 7GGOOE!H%		rs	3!dii223r   c                    | j                   j                  t        j                  d             | j	                  dg      }t
        j                  j                  |d         }| j                  g |g       | j                  |g| j                   j                         | j                  d| j                   j                         y )Nr   r5  r  r   r*  r   rY   r   r   r   ru   r^   r_   re   r   r+  r   r,  s      r   "test_default_config_dir_with_valuez<DefaultConfigDirsTestCase.test_default_config_dir_with_value  s    		""3::e#45%% (D 'E FGGOOE!H%		rs	3!dii223		.r   c                    | j                   j                  t        j                  d             | j	                  dg      }t
        j                  j                  |d         }| j                  dg|g       | j                  |g| j                   j                         | j                  d| j                   j                         y )Nr   r;  r   r$  r*  r   r<  r,  s      r    test_default_config_dir_priorityz:DefaultConfigDirsTestCase.test_default_config_dir_priority  s    		""3::e#45%% (D 'E FGGOOE!H%		~A3	?!dii223/r   N)r9   r:   r;   r  r  r  r2  r7  r9  r=  r?  r<   r   r   r'  r'    s*    
/	/	/3	44	/	0r   r'  c            
          e Zd ZdZ ej
                  ej                  d      Z ej
                  ej                  d      Z	 ej
                  ej                   ej                               Z ej
                  ej                   ej                               Z ej
                  ej                   ej                                Zg d eej&                  dg dd	      fd
 eej&                  dddgdd	      fd eej&                  dddgdd	      fd eej&                  dddgdd	      fd eej&                  dddgdd	      fd eej&                  dddgdd	      fd eej(                  dg dd	      fd eej(                  ddgdd	      fd eej(                  ddgdd	      fd eej(                  ddgdd	      fd eej(                  ddgdd	      fd eej(                  ddgdd	      fd  eej(                  ddd!gdd	      fd" eej(                  ddd#gdd	      fd$ eej(                  ddd%gdd	      fd& eej(                  ddd!gdd	      fd' eej(                  ddd(gdd	      fd) eej*                  d*g d*d	      fd+ eej*                  dd,gd-d	      fd. eej*                  dd/gd-d	      fd0 eej*                  dd1gd-d	      fd2 eej*                  dd,gd-d	      fd3 eej*                  dd4gd-d	      fd5 eej,                  d6g d6d	      fd7 eej,                  ddd8gd9d	      fd: eej,                  ddd8gd9d	      fd; eej,                  ddd8gd9d	      fd< eej,                  ddd8gd9d	      fd= eej,                  ddd8gd9d	      fd> eej,                  d?dd8gd9d	      fd@ eedddAgdAd	      fdB eej                  dddAgdAd	      fdC eej                  dddDgdDd	      fdE ee	dddDgdDd	      fdF eej.                  dgg dgd	      fdG eej.                  dddHgdIdgd	      fdJ eej.                  dddKgdIdgd	      fdL eej.                  dddHgdIdgd	      fdM eej.                  dddHgdIdgd	      fdN eej.                  dddHgdIdgd	      fdO eej.                  dddHgdIdgd	      fdP eej0                  dQdig dQdid	      fdR eej0                  dddSgdIddTd	      fdU eej0                  dg dVdWdid	      fdX eej0                  dddYgdIddTd	      fdZ eej0                  dg d[dWdid	      fd\ eej0                  dddSgdIddTd	      fd] eej0                  dg d^dWdid	      fd_ eej0                  dg dVdWdid	      fd` eej0                  dddSgdIddTd	      fda eej0                  dg dbdWdid	      fdc eej2                  ddg ddd	      fde eej2                  ddfgddd	      fdg eej2                  ddhgddd	      fdi eej2                  ddjgddd	      fdk eej2                  ddfgddd	      fdl eej2                  ddmgddd	      fdn eej4                  dog dod	      fdp eej4                  dddogdod	      fdq eej6                  dgg dgd	      fdr eej6                  dg dsdIdgd	      fdt eej6                  dg dudIdgd	      fdv eej6                  dg dwdIdgd	      fdx eej6                  dg dsdIdgd	      fdy eej6                  dg dzdIdgd	      fd{ eedg d|d}d?gd	      fd~ eedg dddgd	      fd eedg dddgd	      fZd Zy)CliOptsTestCasea  Test CLI Options.

    Each test scenario takes a name for the scenarios, as well as a dict:
    opt_class - class of the type of option that should be tested
    default - a default value for the option
    cli_args - a list containing a representation of an input command line
    value - the result value that is expected to be found
    deps - a tuple of deprecated name/group
       )rH      	item_typestr_defaultNNN)	opt_classr   cli_argsvaluedepsstr_arg--foor   str_arg_deprecated_name--oldfoo)oldfooNstr_arg_deprecated_group	--old-foo)Nold str_arg_deprecated_group_default)NDEFAULT!str_arg_deprecated_group_and_name	--old-oof)oofrS  bool_defaultFbool_argTbool_arg_deprecated_namebool_arg_deprecated_group!bool_arg_deprecated_group_default"bool_arg_deprecated_group_and_namebool_arg_inverse--nofoo bool_arg_inverse_deprecated_namez
--nooldfoo!bool_arg_inverse_deprecated_groupz--old-nofoo)bool_arg_inverse_deprecated_group_default*bool_arg_inverse_deprecated_group_and_namez--old-nooofint_default
   int_argz--foo=20   int_arg_deprecated_namez--oldfoo=20int_arg_deprecated_groupz--old-foo=20 int_arg_deprecated_group_default!int_arg_deprecated_group_and_namez--old-oof=20float_default      ?	float_arg2.0       @float_arg_deprecated_namefloat_arg_deprecated_group"float_arg_deprecated_group_default#float_arg_deprecated_group_and_namefloat_default_as_integer   ipv4addr_argz192.168.0.1ipaddr_arg_implicitv4ipaddr_arg_implicitv6z
abcd:ef::1ipv6addr_arglist_defaultlist_argblaa,barr   list_arg_with_spacesz	blaa ,barlist_arg_deprecated_namelist_arg_deprecated_group!list_arg_deprecated_group_default"list_arg_deprecated_group_and_namedict_defaultr   dict_argkey1:blaa,key2:barkey1key2 dict_arg_multiple_keys_last_wins)rM  	key1:blaarM  key2:barr  dict_arg_with_spaceszkey1:blaa   ,key2:bardict_arg_deprecated_name)rO  r  rO  r  dict_arg_deprecated_groupdict_arg_deprecated_group2)rR  r  rR  r  !dict_arg_deprecated_group_default"dict_arg_deprecated_group_and_name#dict_arg_deprecated_group_and_name2)rW  r  rW  r  port_defaultP   port_argz--foo=80port_arg_deprecated_namez--oldfoo=80port_arg_deprecated_groupz--old-foo=80!port_arg_deprecated_group_default"port_arg_deprecated_group_and_namez--old-oof=80uri_defaulthttp://example.comuri_argmultistr_defaultmultistr_arg)rM  r   rM  r   multistr_arg_deprecated_name)rO  r   rO  r   multistr_arg_deprecated_group)rR  r   rR  r   %multistr_arg_deprecated_group_default&multistr_arg_deprecated_group_and_name)rW  r   rW  r   multiopt_arg_int)rM  1rM  2   multiopt_float_int)rM  z1.2rM  z2.3g333333?gffffff@multiopt_string)rM  r   rM  bazr  c           	         | j                   j                  | j                  d| j                  | j                  d   | j                  d                | j                  | j
                         | j                  t        | j                   d             | j                  | j                  | j                   j                         y )Nr   r   r  )r   r   deprecated_group)rY   r   rH  r   rK  rI  
assertTruehasattrr   rJ  r   r   s    r   test_clizCliOptsTestCase.test_cli%  s    		""NN5$,,+/99Q<,0IIaL  :	;
 			$-- 		512TYY]]3r   )r9   r:   r;   __doc__	functoolspartialr   IPOptIPv4OptIPv6OptMultiOptr   Integer	multi_intFloatmulti_floatStringmulti_stringdictr   BoolOptIntOptFloatOptListOptDictOptPortOptURIOptMultiStrOpt	scenariosr  r<   r   r   rA  rA    s     i		15Gi		15G!	!!#,,-%--/JI#)##CLLKEKKMJK$9$$S\\\U\\^LLt		

D2T
!	"t 
	

DGU;K
.	/	t 
#	

D"E*%#
%	&t 
$	

D#U+5 
"	#t 
,	

DGU;K 1
3	4t$ 
-	

D#U+5!
#	$%t, 
	U\
;	<-t2 
	Ty<
A	B3t8 
$	T"|4#
%	&9t@ 
%	T#}D 
"	#AtH 
-	Ty$
&	'ItP 
.	T#}D!
#	$QtX 
	T+5|
M	NYt^ 
,	T"L1#
%	&_tf 
-	T#]35 
"	#gtn 
5	T+5$
&	'otv 
6	T#]35!
#	$wt~ 
	

B,
8	9tD 
	

D"|2L
B	CEtJ 
#	

D%b7G
I	JKtP 
$	

D&'r
G	HQtV 
,	

D"|24E
G	HWt\ 
-	

D&'r
H	I]tb 
	c<
9	:cth 
	d's
G	Hitn 
%	d"E*#<L
N	Oott 
&	d#U+3]
L	Mutz 
.	d's9J
L	M{t@ 
/	d#U+3^
M	NAtF 
$	a#U+3^
M	NGtL 
	/}
!	"MtT 
!			4/}
!	"Ut\ 
!			4.l
!	"]td 
	.l
!	"etl 
	eW%|
=	>mtr 
	T,VUO
!	"stz 
 	T-fe_
!	"{tB 
$	T"J/#
%	&CtJ 
%	T#Z0 
"	#KtR 
-	T,VUO$
&	'StZ 
.	T#Z0!
#	$[tb 
	eU^%l
D	Ecth 
	T!56#U3,
H	Iitp 
,	TBUO,
8	9qtx 
 	T!89#U3,
H	Iyt@ 
$	THUO*:
<	=AtH 
%	T#%9:#U3-
I	JItP 
&	TJUO-
9	:QtX 
-	TBUO*;
=	>Yt` 
.	T#%9:#U3.
J	Kath 
/	TJUO.
:	;itp 
	R,
8	9qtv 
	T"|2L
B	Cwt| 
$	T%b7G
I	J}tB 
%	T&'r
G	HCtH 
-	T"|24E
G	HItN 
.	T&'r
H	IOtT 
	

,@!5L
J	KUtZ 
	

D!56(|
=	>[tb 
	%2G,
0	1cth 
	8UO,
8	9itp 
(	>UO*:
<	=qtx 
)	@UO-
9	:yt@ 
1	8UO*;
=	>AtH 
2	@UO.
:	;ItP 
		43F
/	0QtX 
	T7#J\
3	4Yt` 
	d7EN
7	8atIl
4r   rA  c                       e Zd Zd Zd Zd Zy)CliSpecialOptsTestCasec                    | j                  t        j                  dt        j                                      | j                  t        | j                  dg       | j                  dt        j                  j                                | j                  dt        j                  j                                | j                  dt        j                  j                                | j                  dt        j                  j                                | j                  dt        j                  j                                | j                  dt        j                  j                                y )N
sys.stdout--helpzusage: testz[--version]z[-h]z[--config-dir DIR]z[--config-file PATH])rV   rW   r   r   r   assertRaises
SystemExitrY   r   sysstdoutr   r   s    r   	test_helpz CliSpecialOptsTestCase.test_help4  s    ,,\2;;=IJ*dii(<mSZZ%8%8%:;mSZZ%8%8%:;fcjj1134h

 3 3 56*CJJ,?,?,AB,cjj.A.A.CDr   c                    d}| j                  t        j                  d|z  t        j                                      | j                  t        | j                  dg       | j                  dt        t        |      j                                y )Nr  zsys.%sz	--versionrC   )rV   rW   r   r   r   r  r  rY   r   getattrr  r   )r   stream_names     r   test_versionz#CliSpecialOptsTestCase.test_version>  sf    ,,X-C-/[[]< 	=*dii+?eWS+6??ABr   c                     | j                  ddg      }| j                  d|d   d|d   g       | j                  || j                  j                         y )N)r  r  )r  r  r  r   r  r  r	  s     r   test_config_filez'CliSpecialOptsTestCase.test_config_fileE  sV    %%'9'9'; < 			?E!HouQxHI		 5 56r   N)r9   r:   r;   r  r  r  r<   r   r   r  r  2  s    EC7r   r  c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.y-).PositionalTestCasec                    | j                   j                   |d|dd             | j                  |       | j                  t        | j                   d             | j	                  || j                   j
                         y )Nr   TF)r   r   r   )rY   r   r  r  r   r   )r   rH  r   rI  rJ  s        r   _do_pos_testzPositionalTestCase._do_pos_testP  sc    		""9U5<8<6;$= 	>
 			(		512		.r   c                 H    | j                  t        j                  d g d        y rS   r  r   r   r   s    r    test_positional_str_none_defaultz3PositionalTestCase.test_positional_str_none_default[      #**dB5r   c                 H    | j                  t        j                  dg d       y Nr   r  r   s    r   test_positional_str_defaultz.PositionalTestCase.test_positional_str_default^  s    #**eR7r   c                 J    | j                  t        j                  d dgd       y r  r  r   s    r   test_positional_str_argz*PositionalTestCase.test_positional_str_arga  s    #**dUGU;r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r    test_positional_int_none_defaultz3PositionalTestCase.test_positional_int_none_defaultd  r  r   c                 H    | j                  t        j                  dg d       y )Nrf  r  r   s    r   test_positional_int_defaultz.PositionalTestCase.test_positional_int_defaultg  s    #**b"b1r   c                 J    | j                  t        j                  d dgd       y )N20rh  r  r   s    r   test_positional_int_argz*PositionalTestCase.test_positional_int_argj  s    #**dTFB7r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   "test_positional_float_none_defaultz5PositionalTestCase.test_positional_float_none_defaultm  s    #,,b$7r   c                 H    | j                  t        j                  dg d       y )Nrn  r  r   s    r   test_positional_float_defaultz0PositionalTestCase.test_positional_float_defaultp  s    #,,R5r   c                 J    | j                  t        j                  d dgd       y )Nrp  rq  r  r   s    r   test_positional_float_argz,PositionalTestCase.test_positional_float_args  s    #,,ugs;r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   !test_positional_list_none_defaultz4PositionalTestCase.test_positional_list_none_defaultv      #++tR6r   c                 H    | j                  t        j                  g g g        y rS   r  r   s    r   "test_positional_list_empty_defaultz5PositionalTestCase.test_positional_list_empty_defaulty      #++r2r2r   c                 L    | j                  t        j                  dgg dg       y r  r  r   s    r   test_positional_list_defaultz/PositionalTestCase.test_positional_list_default|  s    #++wUG<r   c                 N    | j                  t        j                  d dgddg       y )Nr~  r   r   r  r   s    r   test_positional_list_argz+PositionalTestCase.test_positional_list_arg  s#    #++t%,	9r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   !test_positional_dict_none_defaultz4PositionalTestCase.test_positional_dict_none_default  r  r   c                 H    | j                  t        j                  i g i        y rS   r  r   s    r   "test_positional_dict_empty_defaultz5PositionalTestCase.test_positional_dict_empty_default  r  r   c                 P    | j                  t        j                  ddig ddi       y )Nr  r   r  r   s    r   test_positional_dict_defaultz/PositionalTestCase.test_positional_dict_default  s"    #++VUOLr   c                 P    | j                  t        j                  d dgddd       y )Nr  r   r   r  r  r   s    r   test_positional_dict_argz+PositionalTestCase.test_positional_dict_arg  s&    #++t/0#)59	;r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   test_positional_ip_none_defaultz2PositionalTestCase.test_positional_ip_none_default  s    #))T2t4r   c                 H    | j                  t        j                  dg d       y Nz	127.0.0.1r  r   s    r   test_positional_ip_defaultz-PositionalTestCase.test_positional_ip_default  s    #))["kBr   c                 J    | j                  t        j                  d dgd       y r  r  r   s    r   test_positional_ip_argz)PositionalTestCase.test_positional_ip_arg  s    #))TK=+Fr   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   !test_positional_port_none_defaultz4PositionalTestCase.test_positional_port_none_default  r  r   c                 H    | j                  t        j                  dg d       y )Nr  r  r   s    r   test_positional_port_defaultz/PositionalTestCase.test_positional_port_default  r  r   c                 J    | j                  t        j                  d dgd       y )N443i  r  r   s    r   test_positional_port_argz+PositionalTestCase.test_positional_port_arg  s    #++teWc:r   c                 H    | j                  t        j                  dg d       y Nr  r  r   r  r   s    r   test_positional_uri_defaultz.PositionalTestCase.test_positional_uri_default  s    #**&:B.	0r   c                 H    | j                  t        j                  d g d        y rS   r  r   s    r    test_positional_uri_none_defaultz3PositionalTestCase.test_positional_uri_none_default  r  r   c                 J    | j                  t        j                  d dgd       y r  r  r   s    r   test_positional_uri_argz*PositionalTestCase.test_positional_uri_arg  s!    #**d-A,B.	0r   c                 H    | j                  t        j                  d g d        y rS   r  r   r  r   s    r   %test_positional_multistr_none_defaultz8PositionalTestCase.test_positional_multistr_none_default  s    #//4T:r   c                 H    | j                  t        j                  g g g        y rS   r   r   s    r   &test_positional_multistr_empty_defaultz9PositionalTestCase.test_positional_multistr_empty_default  s    #//2r26r   c                 L    | j                  t        j                  dgg dg       y r  r   r   s    r    test_positional_multistr_defaultz3PositionalTestCase.test_positional_multistr_default  s    #//E7B@r   c                 P    | j                  t        j                  d ddgddg       y )Nr   r   r   r   s    r   test_positional_multistr_argz/PositionalTestCase.test_positional_multistr_arg  s%    #//4!5/FE?	<r   c                 R    | j                  t        t        j                  dd       y )Nr   Tr   r  
ValueErrorr   r  r   s    r   test_positional_boolz'PositionalTestCase.test_positional_bool  s    *ckk5TJr   c                 .   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dg       | j                  t!        | j                   d             | j#                  d| j                   j$                         y )Nr   Tr   r   r  r   foo
r   rY   r   r   r   rV   rW   r   r   r   r  r  r   r  r  r   r  r  r   r   r   s    r   $test_required_positional_opt_definedz7PositionalTestCase.test_required_positional_opt_defined  s    		""JJut=	? 	,,\2;;=IJ*dii(<h

 3 3 56		5'		512		.r   c                    | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  t        | j                   g        y )Nr   Tr.  r  r  r/  rY   r   r   r   rV   rW   r   r   r   r  r  r   r  r  r   r   s    r   &test_required_positional_opt_undefinedz9PositionalTestCase.test_required_positional_opt_undefined  s    		""JJut=	? 	,,\2;;=IJ*dii(<h

 3 3 56*dii4r   c                 .   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dg       | j                  t!        | j                   d             | j#                  d| j                   j$                         y )	Nr   FTr.  r  r   [foo]
r   r0  r   s    r   $test_optional_positional_opt_definedz7PositionalTestCase.test_optional_positional_opt_defined  s    		""JJuu>	@ 	,,\2;;=IJ*dii(<j#**"5"5"78		5'		512		.r   c                 *   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  g        | j                  t!        | j                   d             | j#                  | j                   j$                         y )Nr   FTr.  r  r  r6  )rY   r   r   r   rV   rW   r   r   r   r  r  r   r  r  r   r  r  assertIsNoner   r   s    r   &test_optional_positional_opt_undefinedz9PositionalTestCase.test_optional_positional_opt_undefined  s    		""JJuu>	@ 	,,\2;;=IJ*dii(<j#**"5"5"78		"		512$))--(r   c                 .   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dg       | j                  t!        | j                   d	             | j#                  d| j                   j$                         y )
Nfoo-barFTr.  r  r   [foo_bar]
r  foo_barrY   r   r   r   rV   rW   r   r   r   r  r  r   r  r  r   r  r  r   r>  r   s    r   /test_optional_positional_hyphenated_opt_definedzBPositionalTestCase.test_optional_positional_hyphenated_opt_defined  s    		""JJy5TB	D 	,,\2;;=IJ*dii(<ncjj&9&9&;<		5'		956		 1 12r   c                 *   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  g        | j                  t!        | j                   d             | j#                  | j                   j$                         y )	Nr<  FTr.  r  r  r=  r>  )rY   r   r   r   rV   rW   r   r   r   r  r  r   r  r  r   r  r  r9  r>  r   s    r   1test_optional_positional_hyphenated_opt_undefinedzDPositionalTestCase.test_optional_positional_hyphenated_opt_undefined  s    		""JJy5TB	D 	,,\2;;=IJ*dii(<ncjj&9&9&;<		"		956$))++,r   c                 .   | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dg       | j                  t!        | j                   d             | j#                  d| j                   j$                         y )	Nr<  Tr.  r  r  	 foo_bar
r  r>  r?  r   s    r   /test_required_positional_hyphenated_opt_definedzBPositionalTestCase.test_required_positional_hyphenated_opt_defined  s    		""JJy4DA	C 	,,\2;;=IJ*dii(<lCJJ$7$7$9:		5'		956		 1 12r   c                    | j                   j                  t        j                  ddd             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  t        | j                   g        y )Nr<  Tr.  r  r  rD  r3  r   s    r   1test_required_positional_hyphenated_opt_undefinedzDPositionalTestCase.test_required_positional_hyphenated_opt_undefined  s    		""JJy4DA	C 	,,\2;;=IJ*dii(<lCJJ$7$7$9:*dii4r   c                     | j                   j                  t        j                  ddd             | j	                  t
        | j                   g        y )Nr   Tr.  rY   r   r   r   r  r  r   s    r   test_missing_required_cli_optz0PositionalTestCase.test_missing_required_cli_opt  s:    		""JJut=	?*dii4r   c                    | j                   j                  t        j                  dd      t        j                  dd      t        j                  dd      f       | j                  g d       | j	                  d| j                   j
                         | j	                  d| j                   j                         | j	                  d| j                   j                         y NcommandTr)  arg1arg2rM  rN  rO  )rY   r   r   r   r   rM  rN  rO  r   s    r   test_positional_opts_orderz-PositionalTestCase.test_positional_opts_order"  s    		##JJyT2JJv$/JJv$/%1 	
 			-.DII$5$5600r   c                 .   | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                  g d       | j	                  d| j                   j
                         | j	                  d| j                   j                         | j	                  d| j                   j                         y rL  )rY   r   r   r   r   rM  rN  rO  r   s    r   test_positional_opt_orderz,PositionalTestCase.test_positional_opt_order/  s    		""JJyT2	4		""JJv$/	1		""JJv$/	1 			-.DII$5$5600r   c                 ~   t        j                  dd      }t        j                  dd      }t        j                  dd      }| j                  j                  |       | j                  j                  |       | j                  j                  |       | j                  g d       | j	                  d| j                  j
                         | j	                  d| j                  j                         | j	                  d| j                  j                         | j                  j                          | j                  j                  |       | j                  j                  |       t        j                  dd      }| j                  j                  |       | j                  j                  |       | j                  g d       | j	                  d| j                  j
                         | j	                  d| j                  j                         | j	                  d| j                  j                         y )	NrM  Tr)  rN  rO  rP  arg0)rM  rU  rN  )r   r   rY   r   r   rM  rN  rO  resetunregister_optrU  )r   rM  rN  rO  rU  s        r   test_positional_opt_unregisterz1PositionalTestCase.test_positional_opt_unregister=  s|   **Y48zz&T2zz&T2		""7+		""4(		""4(		-.DII$5$5600				  &		  &zz&T2		""4(		""4(		-.DII$5$5600r   N)/r9   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,  r1  r4  r7  r:  r@  rB  rE  rG  rJ  rQ  rS  rX  r<   r   r   r  r  N  s    	/68<62886<73=973M;
5CG73;060;7A<K/5/)
3
-
355
111r   r  c                 :    d|z  } | j                   |g|i | y )NzDeprecated: %s)warning)loggerr   rF   kwargsstdmsgs        r   _fake_deprecated_featurer^  ]  s$    #FFNN6+D+F+r   z/oslo_log.versionutils.report_deprecated_featurec                   <    e Zd Z fdZ	 	 ddZd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d  Z"d! Z#d" Z$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/d. Z0d/ Z1d0 Z2d1 Z3d2 Z4d3 Z5d4 Z6d5 Z7d6 Z8d7 Z9d8 Z:d9 Z;d: Z<d; Z=d< Z>d= Z?d> Z@d? ZAd@ ZBdA ZCdB ZDdC ZEdD ZFdE ZGdF ZHdG ZIdH ZJdI ZKdJ ZLdK ZMdL ZNdM ZOdN ZPdO ZQdP ZRdQ ZSdR ZTdS ZUdT ZVdU ZWdV ZXdW ZYdX ZZdY Z[dZ Z\d[ Z]d\ Z^d] Z_d^ Z`d_ Zad` Zbda Zcdb Zddc Zedd Zfde Zgdf Zhdg Zidh Zjdi Zkdj Zldk Zmdl Zndm Zodn Zpdo Zqdp Zrdq Zsdr Ztds Zudt Zvdu Zwdv Zxdw Zydx Zzdy Z{dz Z|d{ Z}d| Z~d} Zd~ Zd Zd Zd Zd Zd Zd Zd Z xZS )ConfigFileOptsTestCasec                     t         t        |           | j                  t	        j
                  dt        j                  d            | _        y )Nz%(message)sT)formatlevelnuke_handlers)	rT   r`  rU   rV   rW   
FakeLoggerloggingWARNINGr[  r[   s    r   rU   zConfigFileOptsTestCase.setUpf  s<    $d13oo$oo"
r   c                 Z   | j                   j                   |d||             | j                  dd|z   dz   |z   dz   |z   dz   fg      }| j                  d|d	   g       | j                  t	        | j                   d             | j                  || j                   j                         y )
Nnewfoor   r  rB   []
z = 
r  r   )rY   r  ru   r  r  r   ri  )	r   rH  rJ  resultkeysectiondnamedgroupr
  s	            r   _do_deprecated_testz*ConfigFileOptsTestCase._do_deprecated_testp  s     			y9>:@ B 	C %%(+g(=(+),.3)46;)<>B)C(D 'E F 			?E!H-.		845!1!12r   c                 0    | j                  |||dd       y )NrP  rq  rs  r   rH  rJ  rn  s       r   _do_dname_test_usez)ConfigFileOptsTestCase._do_dname_test_use         E68'/ 	! 	1r   c                 2    | j                  |||ddd       y )Nri  rS  rp  rr  rv  rw  s       r   _do_dgroup_test_usez*ConfigFileOptsTestCase._do_dgroup_test_use  s"      E68).u 	! 	>r   c                 2    | j                  |||ddd       y )Nri  rU  r{  rv  rw  s       r   _do_default_dgroup_test_usez2ConfigFileOptsTestCase._do_default_dgroup_test_use  s#      E68)29 	! 	Fr   c           	      4    | j                  |||dddd       y NrX  rS  )rp  rr  rq  rv  rw  s       r   _do_dgroup_and_dname_test_usez4ConfigFileOptsTestCase._do_dgroup_and_dname_test_use  %      E65).uE 	! 	Kr   c                 0    | j                  |||dd       y )Nri  rP  ru  rv  rw  s       r   _do_dname_test_ignorez,ConfigFileOptsTestCase._do_dname_test_ignore  ry  r   c                 2    | j                  |||ddd       y )Nri  rU  rS  r{  rv  rw  s       r   _do_dgroup_test_ignorez-ConfigFileOptsTestCase._do_dgroup_test_ignore  s#      E68)25 	! 	Br   c           	      4    | j                  |||dddd       y r  rv  rw  s       r    _do_dgroup_and_dname_test_ignorez7ConfigFileOptsTestCase._do_dgroup_and_dname_test_ignore  r  r   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y Nr   r   r   rB   
[DEFAULT]
r  r   	rY   r  r   r   ru   r  r  r   r   r	  s     r   test_conf_file_str_defaultz1ConfigFileOptsTestCase.test_conf_file_str_default  sw    		szz%?@%%'>&?@		?E!H-.		512		.r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y Nr   rB   r  r  r   r   r  r	  s     r   test_conf_file_str_valuez/ConfigFileOptsTestCase.test_conf_file_str_value  su    		szz%01%%'K&LM		?E!H-.		512		.r   c           	      V   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  d	| j                   j                         y )
Nr   r  z[DEFAULT]
foo = baar
r  z[DEFAULT]
foo = baaar
rM  r   r  r   r  baaar	rY   r   r   r   ru   r  r  r   r   r	  s     r   !test_conf_file_str_value_overridez8ConfigFileOptsTestCase.test_conf_file_str_value_override  s    		""3::e#45%% (8(9': ; 			7E"E!H"E!H. 	/ 			512$))--0r   c           	         | j                   j                  t        j                  dd             | j	                  ddg      }| j                  ddd|d	   d|d
   g       | j                  t        | j                   d             | j                  t        | j                   d             | j                  d| j                   j                         | j                  j                  }| j                  d|       | j                  d|       y)z<last option should always win, even if last uses deprecated.ri  rP  r   )0z[DEFAULT]
newfoo = middle
)r  z[DEFAULT]
oldfoo = last
z--newfoofirstr  r   r  lastzis deprecatedzUse option "newfoo"N)rY   r   r   r   ru   r  r  r   ri  r[  outputr   r   r
  log_outs      r   0test_conf_file_str_value_override_use_deprecatedzGConfigFileOptsTestCase.test_conf_file_str_value_override_use_deprecated  s    		""JJx:	< %% (=(;'< = 			:w"E!H"E!H. 	/ 			845		845!1!12++$$ow/+W5r   c                    | j                   j                  t        j                  dd             | j	                  dg      }| j                  ddd|d   g       | j
                  j                  }| j                  d	|       y )
NrP  Tdeprecated_for_removalr  z[DEFAULT]
oldfoo = middle
rO  r  r  r   zdeprecated for removal.rY   r   r   r   ru   r[  r  r   r  s      r   .test_use_deprecated_for_removal_without_reasonzEConfigFileOptsTestCase.test_use_deprecated_for_removal_without_reason  s    		""JJx.24	5 %% (= '> ? 			:w"E!H. 	/ ++$$/9r   c                 
   | j                   j                  t        j                  ddd             | j	                  dg      }| j                  ddd|d	   g       | j
                  j                  }| j                  d
|       y )NrP  Tza very good reason)r  deprecated_reasonr  rO  r  r  r   z,deprecated for removal (a very good reason).r  r  s      r   +test_use_deprecated_for_removal_with_reasonzBConfigFileOptsTestCase.test_use_deprecated_for_removal_with_reason  s    		""JJx.2)=?	@
 %% (= '> ? 			:w"E!H. 	/ ++$$DgNr   c                 F    | j                  t        j                  dd       y Nvalue1)rx  r   r   r   s    r   test_conf_file_str_use_dnamez3ConfigFileOptsTestCase.test_conf_file_str_use_dname  s    

Hh?r   c                 F    | j                  t        j                  dd       y r  )r|  r   r   r   s    r   test_conf_file_str_use_dgroupz4ConfigFileOptsTestCase.test_conf_file_str_use_dgroup  s      Xx@r   c                 F    | j                  t        j                  dd       y r  )r~  r   r   r   s    r   %test_conf_file_str_use_default_dgroupz<ConfigFileOptsTestCase.test_conf_file_str_use_default_dgroup  s    ((XxHr   c                 F    | j                  t        j                  dd       y r  )r  r   r   r   s    r   'test_conf_file_str_use_dgroup_and_dnamez>ConfigFileOptsTestCase.test_conf_file_str_use_dgroup_and_dname  s    **3::xJr   c                 F    | j                  t        j                  dd       y Nvalue2)r  r   r   r   s    r   test_conf_file_str_ignore_dnamez6ConfigFileOptsTestCase.test_conf_file_str_ignore_dname  s    ""3::xBr   c                 F    | j                  t        j                  dd       y r  )r  r   r   r   s    r    test_conf_file_str_ignore_dgroupz7ConfigFileOptsTestCase.test_conf_file_str_ignore_dgroup  s    ##CJJ(Cr   c                 F    | j                  t        j                  dd       y r  )r  r   r   r   s    r   *test_conf_file_str_ignore_dgroup_and_dnamezAConfigFileOptsTestCase.test_conf_file_str_ignore_dgroup_and_dname  s    --cjj(HMr   c                 N   | j                   j                  t        j                  dddg             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r   r  r   r  r  r   r  r	  s     r   /test_conf_file_str_value_with_good_choice_valuezFConfigFileOptsTestCase.test_conf_file_str_value_with_good_choice_value  s{    		szz%%HI%%'K&LM		?E!H-.		512		.r   c                 D   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   r  r  r   )	rY   r  r   r  ru   r  r  r9  r   r	  s     r    test_conf_file_bool_default_nonez7ConfigFileOptsTestCase.test_conf_file_bool_default_none  s{    		s{{512%% (7 '8 9 			?E!H-.		512$))--(r   c                 H   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   Fr  r  r  r   )	rY   r  r   r  ru   r  r  assertFalser   r	  s     r   !test_conf_file_bool_default_falsez8ConfigFileOptsTestCase.test_conf_file_bool_default_false  s}    		s{{5%@A%% (7 '8 9 			?E!H-.		512'r   c                 D   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   )rB   [DEFAULT]
foo = true
r  r   )rY   r  r   r  ru   r  r  r   r	  s     r   test_conf_file_bool_valuez0ConfigFileOptsTestCase.test_conf_file_bool_value*  sy    		s{{512%% (8 '9 : 			?E!H-.		512		&r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  dd|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   r  z[DEFAULT]
foo = 0
rM  r  r   )	rY   r   r   r  ru   r  r  r  r   r	  s     r   &test_conf_file_bool_cli_value_overridez=ConfigFileOptsTestCase.test_conf_file_bool_cli_value_override6  s    		""3;;u#56%% (5 '6 7 			7"E!H. 	/ 			512'r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  dd|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   )r  r  r`  r  r   rY   r   r   r  ru   r  r  r   r	  s     r   (test_conf_file_bool_cli_inverse_overridez?ConfigFileOptsTestCase.test_conf_file_bool_cli_inverse_overrideC  s    		""3;;u#56%% (8 '9 : 			9"E!H. 	/ 			512		&r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   dg       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   )r  z[DEFAULT]
foo = false
r  r   rM  r  r	  s     r   &test_conf_file_bool_cli_order_overridez=ConfigFileOptsTestCase.test_conf_file_bool_cli_order_overrideP  s    		""3;;u#56%% (9 ': ; 			?E!H 	 			512		&r   c                 P   | j                   j                  t        j                  d             | j	                  ddg      }| j                  d|d   d|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   r  )r  z[DEFAULT]
foo = yes
r  r   r  r  r	  s     r   'test_conf_file_bool_file_value_overridez>ConfigFileOptsTestCase.test_conf_file_bool_file_value_override]  s    		""3;;u#56%% (5(7'8 9 			?E!H"E!H. 	/ 			512		&r   c                 F    | j                  t        j                  dd       y NyesT)rx  r   r  r   s    r   test_conf_file_bool_use_dnamez4ConfigFileOptsTestCase.test_conf_file_bool_use_dnamem  s    UD9r   c                 F    | j                  t        j                  dd       y r  )r|  r   r  r   s    r   test_conf_file_bool_use_dgroupz5ConfigFileOptsTestCase.test_conf_file_bool_use_dgroupp  s      eT:r   c                 F    | j                  t        j                  dd       y r  )r~  r   r  r   s    r   &test_conf_file_bool_use_default_dgroupz=ConfigFileOptsTestCase.test_conf_file_bool_use_default_dgroups  s    ((eTBr   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   (test_conf_file_bool_use_dgroup_and_dnamez?ConfigFileOptsTestCase.test_conf_file_bool_use_dgroup_and_dnamev  s    **3;;tDr   c                 F    | j                  t        j                  dd       y NnoF)r  r   r  r   s    r    test_conf_file_bool_ignore_dnamez7ConfigFileOptsTestCase.test_conf_file_bool_ignore_dnamey  s    ""3;;e<r   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   !test_conf_file_bool_ignore_dgroupz8ConfigFileOptsTestCase.test_conf_file_bool_ignore_dgroup|  s    ##CKKu=r   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   *test_conf_file_bool_ignore_group_and_dnamezAConfigFileOptsTestCase.test_conf_file_bool_ignore_group_and_dname  s    --ckk4Gr   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr     r  r  r  r   	rY   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_int_defaultz1ConfigFileOptsTestCase.test_conf_file_int_default  s    		szz%=>%% (7 '8 9 			?E!H-.		512diimm,r   c                     | j                   j                  t        j                  dd             | j                  g        | j	                  d| j                   j
                         y )Nr   666r  r  )rY   r  r   r  r   r   r   s    r   &test_conf_file_int_string_default_typez=ConfigFileOptsTestCase.test_conf_file_int_string_default_type  sB    		szz%?@		"diimm,r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   )rB   [DEFAULT]
foo = 666
r  r   r  r  r	  s     r   test_conf_file_int_valuez/ConfigFileOptsTestCase.test_conf_file_int_value  s}    		szz%01%% (7 '8 9 			?E!H-.		512diimm,r   c           	      V   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  d	| j                   j                         y )
Nr   )r  z[DEFAULT]
foo = 66
)r  r  rM  6r  r   r  r  )	rY   r   r   r  ru   r  r  r   r   r	  s     r   !test_conf_file_int_value_overridez8ConfigFileOptsTestCase.test_conf_file_int_value_override  s    		""3::e#45%% (6(7'8 9 			7C"E!H"E!H. 	/ 			512diimm,r   c                     | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y Nr   r     minmax)rB   z[DEFAULT]
foo = 10
r  r   )rY   r  r   r  ru   r  ConfigFileValueError_getr	  s     r   test_conf_file_int_min_maxz1ConfigFileOptsTestCase.test_conf_file_int_min_max  sr    		szz%QA>?%% (6 '7 8 			?E!H-.#22DIINNEJr   c                 T    | j                  t        t        j                  ddd       y )Nr   r  r  r  )r  r+  r   r  r   s    r   "test_conf_file_int_min_greater_maxz9ConfigFileOptsTestCase.test_conf_file_int_min_greater_max  s    *cjj%QAFr   c                 F    | j                  t        j                  dd       y N66B   )rx  r   r  r   s    r   test_conf_file_int_use_dnamez3ConfigFileOptsTestCase.test_conf_file_int_use_dname  s    

D"5r   c                 F    | j                  t        j                  dd       y r  )r|  r   r  r   s    r   test_conf_file_int_use_dgroupz4ConfigFileOptsTestCase.test_conf_file_int_use_dgroup  s      T26r   c                 F    | j                  t        j                  dd       y r  )r~  r   r  r   s    r   %test_conf_file_int_use_default_dgroupz<ConfigFileOptsTestCase.test_conf_file_int_use_default_dgroup  s    ((T2>r   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   'test_conf_file_int_use_dgroup_and_dnamez>ConfigFileOptsTestCase.test_conf_file_int_use_dgroup_and_dname  s    **3::tR@r   c                 F    | j                  t        j                  dd       y N64@   )r  r   r  r   s    r   test_conf_file_int_ignore_dnamez6ConfigFileOptsTestCase.test_conf_file_int_ignore_dname  s    ""3::tR8r   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r    test_conf_file_int_ignore_dgroupz7ConfigFileOptsTestCase.test_conf_file_int_ignore_dgroup  s    ##CJJb9r   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   *test_conf_file_int_ignore_dgroup_and_dnamezAConfigFileOptsTestCase.test_conf_file_int_ignore_dgroup_and_dname  s    --cjj$Cr   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   p=
ף@r  r  r  r   	rY   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_float_defaultz3ConfigFileOptsTestCase.test_conf_file_float_default  s    		s||E4@A%% (7 '8 9 			?E!H-.		512tyy}}-r   c                 f    | j                  t        j                  t        j                  dd       y )Nr   z
foobar6.66r  )r  r   DefaultValueErrorr  r   s    r   'test_conf_file_float_default_wrong_typez>ConfigFileOptsTestCase.test_conf_file_float_default_wrong_type  s(    #//u". 	 	0r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   )rB   [DEFAULT]
foo = 6.66
r  r   r  r  r	  s     r   test_conf_file_float_valuez1ConfigFileOptsTestCase.test_conf_file_float_value  s}    		s||E23%% (8 '9 : 			?E!H-.		512tyy}}-r   c           	      V   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  d	| j                   j                         y )
Nr   )r  z[DEFAULT]
foo = 6.6
)r  r  rM  r  r  r   r  r  )	rY   r   r   r  ru   r  r  r   r   r	  s     r   #test_conf_file_float_value_overridez:ConfigFileOptsTestCase.test_conf_file_float_value_override  s    		""3<<#67%% (7(8'9 : 			7C"E!H"E!H. 	/ 			512tyy}}-r   c                 F    | j                  t        j                  dd       y Nz66.54g(\P@)rx  r   r  r   s    r   test_conf_file_float_use_dnamez5ConfigFileOptsTestCase.test_conf_file_float_use_dname  s    gu=r   c                 F    | j                  t        j                  dd       y r  )r|  r   r  r   s    r   test_conf_file_float_use_dgroupz6ConfigFileOptsTestCase.test_conf_file_float_use_dgroup   s      w>r   c                 F    | j                  t        j                  dd       y r  )r~  r   r  r   s    r   'test_conf_file_float_use_default_dgroupz>ConfigFileOptsTestCase.test_conf_file_float_use_default_dgroup  s    ((wFr   c                 F    | j                  t        j                  dd       y r  )r  r   r  r   s    r   )test_conf_file_float_use_dgroup_and_dnamez@ConfigFileOptsTestCase.test_conf_file_float_use_dgroup_and_dname  s    **3<<%Hr   c                 F    | j                  t        j                  dd       y Nz64.54g(\"P@)r  r   r  r   s    r   !test_conf_file_float_ignore_dnamez8ConfigFileOptsTestCase.test_conf_file_float_ignore_dname	  s    ""3<<%@r   c                 F    | j                  t        j                  dd       y r&  )r  r   r  r   s    r   "test_conf_file_float_ignore_dgroupz9ConfigFileOptsTestCase.test_conf_file_float_ignore_dgroup  s    ##CLL'5Ar   c                 F    | j                  t        j                  dd       y r&  )r  r   r  r   s    r   ,test_conf_file_float_ignore_dgroup_and_dnamezCConfigFileOptsTestCase.test_conf_file_float_ignore_dgroup_and_dname  s    --cllGUKr   c                     | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   皙?      @r  rB   z[DEFAULT]
foo = 10.5
r  r   rY   r  r   r  ru   r  r  r  r	  s     r   &test_conf_file_float_min_max_above_maxz=ConfigFileOptsTestCase.test_conf_file_float_min_max_above_max  sr    		s||EsDE%% (8 '9 : 			?E!H-.#22DIINNEJr   c                    | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   r.  r  r/  r  r   r0  r	  s     r   'test_conf_file_float_only_max_above_maxz>ConfigFileOptsTestCase.test_conf_file_float_only_max_above_max  sp    		s||Es;<%% (8 '9 : 			?E!H-.#22DIINNEJr   c                     | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   r-  r.  r  rB   z[DEFAULT]
foo = 0.5
r  r   r0  r	  s     r   &test_conf_file_float_min_max_below_minz=ConfigFileOptsTestCase.test_conf_file_float_min_max_below_min&  sr    		s||EsDE%% (7 '8 9 			?E!H-.#22DIINNEJr   c                    | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   r-  r  r6  r  r   r0  r	  s     r   'test_conf_file_float_only_min_below_minz>ConfigFileOptsTestCase.test_conf_file_float_only_min_below_min0  sp    		s||Es;<%% (7 '8 9 			?E!H-.#22DIINNEJr   c                 L   | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )	Nr   r-  r.  r  rB   z[DEFAULT]
foo = 4.5
r  r         @r  r	  s     r   %test_conf_file_float_min_max_in_rangez<ConfigFileOptsTestCase.test_conf_file_float_min_max_in_range:  s    		s||EsDE%% (7 '8 9 			?E!H-.		512diimm,r   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r.  r3  r<  r  r   r=  r  r	  s     r   &test_conf_file_float_only_max_in_rangez=ConfigFileOptsTestCase.test_conf_file_float_only_max_in_rangeF      		s||Es;<%% (7 '8 9 			?E!H-.		512diimm,r   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   g      @r9  r<  r  r   r=  r  r	  s     r   &test_conf_file_float_only_min_in_rangez=ConfigFileOptsTestCase.test_conf_file_float_only_min_in_rangeR  rA  r   c                 T    | j                  t        t        j                  ddd       y )Nr   r.  g      ?r  )r  r+  r   r  r   s    r   $test_conf_file_float_min_greater_maxz;ConfigFileOptsTestCase.test_conf_file_float_min_greater_max^  s    *cllEsLr   c                 N   | j                   j                  t        j                  ddg             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  dg| j                   j                         y r  	rY   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_list_defaultz2ConfigFileOptsTestCase.test_conf_file_list_defaulta  s    		s{{55'BC%% (7 '8 9 			?E!H-.		512%$))--0r   c                 f    | j                  t        j                  t        j                  dd       y )Nr      r  )r  r   r  r  r   s    r   &test_conf_file_list_default_wrong_typez=ConfigFileOptsTestCase.test_conf_file_list_default_wrong_typel  s(    #//e"$ 	 	&r   c                 H   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  dg| j                   j                         y r  rG  r	  s     r   test_conf_file_list_valuez0ConfigFileOptsTestCase.test_conf_file_list_valuep  s    		s{{512%% (7 '8 9 			?E!H-.		512%$))--0r   c           	      Z   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  g d	| j                   j                         y )
Nr   )r  z[DEFAULT]
foo = bar,bar
)r  z[DEFAULT]
foo = b,a,r
rM  r   r  r   r  )r   r   r)	rY   r   r   r  ru   r  r  r   r   r	  s     r   "test_conf_file_list_value_overridez9ConfigFileOptsTestCase.test_conf_file_list_value_override|  s    		""3;;u#56%% (;(9': ; 			7E"E!H"E!H. 	/ 			512$))--8r   c                 r   | j                   j                  t        j                  dt	        j
                                      | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddg| j                   j                         y )Nr   rD  )r  z[DEFAULT]
foo = 1,2
r  r   r  rw  )rY   r   r   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_list_item_typez4ConfigFileOptsTestCase.test_conf_file_list_item_type  s    		""3;;u9>$J 	K %% (7 '8 9 			?E!H-.		512!Q/r   c                     | j                  t        j                  t        j                  ddt	        j
                                y )Nr   r   )r   rE  )r  r   r  r  r   r  r   s    r   #test_conf_file_list_item_wrong_typez:ConfigFileOptsTestCase.test_conf_file_list_item_wrong_type  s1    #//e"'5==? 	 	Dr   c                     | j                   j                  t        j                  dt	        j
                         dd             | j                  g        | j                  ddg| j                   j                         y )Nr   z[1,2]T)rE  r   boundsr  rw  )rY   r   r   r  r   r  r   r   r   s    r   test_conf_file_list_boundsz1ConfigFileOptsTestCase.test_conf_file_list_bounds  sY    		""3;;u9>7>6:$< 	= 			"!Q/r   c                 J    | j                  t        j                  dg d       y Nza,b,cr   r   r   rx  r   r  r   s    r   test_conf_file_list_use_dnamez4ConfigFileOptsTestCase.test_conf_file_list_use_dname  s    WoFr   c                 J    | j                  t        j                  dg d       y rY  r|  r   r  r   s    r   test_conf_file_list_use_dgroupz5ConfigFileOptsTestCase.test_conf_file_list_use_dgroup  s      gGr   c                 J    | j                  t        j                  dg d       y rY  r~  r   r  r   s    r   &test_conf_file_list_use_default_dgroupz=ConfigFileOptsTestCase.test_conf_file_list_use_default_dgroup  s    ((gOr   c                 J    | j                  t        j                  dg d       y rY  r  r   r  r   s    r   (test_conf_file_list_use_dgroup_and_dnamez?ConfigFileOptsTestCase.test_conf_file_list_use_dgroup_and_dname  s    **3;;+:	<r   c                 J    | j                  t        j                  dg d       y Nzd,e,fder   r  r   r  r   s    r    test_conf_file_list_ignore_dnamez7ConfigFileOptsTestCase.test_conf_file_list_ignore_dname  s    ""3;;Ir   c                 J    | j                  t        j                  dg d       y rg  r  r   r  r   s    r   !test_conf_file_list_ignore_dgroupz8ConfigFileOptsTestCase.test_conf_file_list_ignore_dgroup  s    ##CKK/Jr   c                 J    | j                  t        j                  dg d       y rg  r  r   r  r   s    r   +test_conf_file_list_ignore_dgroup_and_dnamezBConfigFileOptsTestCase.test_conf_file_list_ignore_dgroup_and_dname  s    --KK/	3r   c                 J    | j                  t        j                  dg d       y Nza, b, crZ  r[  r   s    r   $test_conf_file_list_spaces_use_dnamez;ConfigFileOptsTestCase.test_conf_file_list_spaces_use_dname  s    YHr   c                 J    | j                  t        j                  dg d       y rt  r^  r   s    r   %test_conf_file_list_spaces_use_dgroupz<ConfigFileOptsTestCase.test_conf_file_list_spaces_use_dgroup  s      iIr   c                 J    | j                  t        j                  dg d       y rt  ra  r   s    r   -test_conf_file_list_spaces_use_default_dgroupzDConfigFileOptsTestCase.test_conf_file_list_spaces_use_default_dgroup  s    ((KKO	5r   c                 J    | j                  t        j                  dg d       y rt  rd  r   s    r   /test_conf_file_list_spaces_use_dgroup_and_dnamezFConfigFileOptsTestCase.test_conf_file_list_spaces_use_dgroup_and_dname  s    **KKO	5r   c                 J    | j                  t        j                  dg d       y Nzd, e, frh  rk  r   s    r   'test_conf_file_list_spaces_ignore_dnamez>ConfigFileOptsTestCase.test_conf_file_list_spaces_ignore_dname  s    ""3;;	?Kr   c                 J    | j                  t        j                  dg d       y r}  rn  r   s    r   (test_conf_file_list_spaces_ignore_dgroupz?ConfigFileOptsTestCase.test_conf_file_list_spaces_ignore_dgroup  s    ##CKKOLr   c                 J    | j                  t        j                  dg d       y r}  rq  r   s    r   2test_conf_file_list_spaces_ignore_dgroup_and_dnamezIConfigFileOptsTestCase.test_conf_file_list_spaces_ignore_dgroup_and_dname  s    --ckk9.=	?r   c                 R   | j                   j                  t        j                  dddi             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddi| j                   j                         y )Nr   ro  r   r  r  r  r   	rY   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_dict_defaultz2ConfigFileOptsTestCase.test_conf_file_dict_default  s    		s{{55%.IJ%% (7 '8 9 			?E!H-.		512%7r   c                 J   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddi| j                   j                         y )Nr   )rB   z[DEFAULT]
foo = key:bar
r  r   ro  r   r  r	  s     r   test_conf_file_dict_valuez0ConfigFileOptsTestCase.test_conf_file_dict_value  s    		s{{512%% (; '< = 			?E!H-.		512%7r   c                 J   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddi| j                   j                         y )Nr   )rB   z[DEFAULT]
foo = key:bar:baz
r  r   ro  zbar:bazr  r	  s     r   "test_conf_file_dict_colon_in_valuez9ConfigFileOptsTestCase.test_conf_file_dict_colon_in_value  s    		s{{512%% (? '@ A 			?E!H-.		512%+TYY]];r   c                 f   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       | j                  t        t        | j                   d       y )Nr   )rB   z[DEFAULT]
foo = key:bar,baz
r  r   
rY   r  r   r  ru   r  r  r  r+  r  r	  s     r   "test_conf_file_dict_value_no_colonz9ConfigFileOptsTestCase.test_conf_file_dict_value_no_colon  s    		s{{512%% (? '@ A 			?E!H-.#22DIINNEJ*gtyy%@r   c                 f   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       | j                  t        t        | j                   d       y )Nr   )rB   z [DEFAULT]
foo = key:bar,key:baz
r  r   r  r	  s     r   'test_conf_file_dict_value_duplicate_keyz>ConfigFileOptsTestCase.test_conf_file_dict_value_duplicate_key  s    		s{{512%% (C 'D E 			?E!H-.#22DIINNEJ*gtyy%@r   c           	      ^   | j                   j                  t        j                  dd             | j	                  ddg      }| j                  ddd|d	   d|d
   g       | j                  t        | j                   d             | j                  ddi| j                   j                         y )Nr   rP  r   )r  z[DEFAULT]
foo = key1:bar1
)r  z0[DEFAULT]
oldfoo = key2:bar2
oldfoo = key3:bar3
rM  z	key0:bar0r  r   r  key3bar3	rY   r   r   r  ru   r  r  r   r   r	  s     r   .test_conf_file_dict_values_override_deprecatedzEConfigFileOptsTestCase.test_conf_file_dict_values_override_deprecated  s    		""3;;u3;$= 	> %% (=(@'A B 			7K"E!H"E!H. 	/ 			512&&)499==9r   c                 N   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddi| j                   j                         y )	Nri  rP  r   )rB   z/[DEFAULT]
oldfoo= key1:bar1
oldfoo = key2:bar2
r  r   r  bar2)	rY   r  r   r  ru   r  r  r   ri  r	  s     r   test_conf_file_dict_deprecatedz5ConfigFileOptsTestCase.test_conf_file_dict_deprecated$  s    		s{{8XNO%% (@ 'A B
 			?E!H-.		845&&)499+;+;<r   c           	      \   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  d	d
d| j                   j                         y )Nr   )r  z![DEFAULT]
foo = key:bar,key2:bar
)r  z[DEFAULT]
foo = k1:v1,k2:v2
rM  z	x:y,x2:y2r  r   r  v1v2)k1k2r  r	  s     r   "test_conf_file_dict_value_overridez9ConfigFileOptsTestCase.test_conf_file_dict_value_override0  s    		""3;;u#56%% (D(?'@ A 			7K"E!H"E!H. 	/ 			512D1499==Ar   c                 N    | j                  t        j                  ddddd       y Nzk1:a,k2:b,k3:cr   r   r   r  r  k3rx  r   r  r   s    r   test_conf_file_dict_use_dnamez4ConfigFileOptsTestCase.test_conf_file_dict_use_dnameA  $     0'*#S A	Cr   c                 N    | j                  t        j                  ddddd       y r  r|  r   r  r   s    r   test_conf_file_dict_use_dgroupz5ConfigFileOptsTestCase.test_conf_file_dict_use_dgroupF  $      !1(+3c!B	Dr   c                 N    | j                  t        j                  ddddd       y r  r~  r   r  r   s    r   &test_conf_file_dict_use_default_dgroupz=ConfigFileOptsTestCase.test_conf_file_dict_use_default_dgroupK  $    (()9033c)J	Lr   c                 N    | j                  t        j                  ddddd       y r  r  r   r  r   s    r   (test_conf_file_dict_use_dgroup_and_dnamez?ConfigFileOptsTestCase.test_conf_file_dict_use_dgroup_and_dnameP  $    **3;;+;25S+L	Nr   c                 N    | j                  t        j                  ddddd       y Nzk1:d,k2:e,k3:fri  rj  r   r  r  r   r  r   s    r    test_conf_file_dict_ignore_dnamez7ConfigFileOptsTestCase.test_conf_file_dict_ignore_dnameU  $    ""3;;#3*-S#D	Fr   c                 N    | j                  t        j                  ddddd       y r  r  r   r  r   s    r   !test_conf_file_dict_ignore_dgroupz8ConfigFileOptsTestCase.test_conf_file_dict_ignore_dgroupZ  $    ##CKK$4+.c$E	Gr   c                 N    | j                  t        j                  ddddd       y r  r  r   r  r   s    r   +test_conf_file_dict_ignore_dgroup_and_dnamezBConfigFileOptsTestCase.test_conf_file_dict_ignore_dgroup_and_dname_  '    --ckk.>585858/:	;r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   $test_conf_file_dict_spaces_use_dnamez;ConfigFileOptsTestCase.test_conf_file_dict_spaces_use_dnamef  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   %test_conf_file_dict_spaces_use_dgroupz<ConfigFileOptsTestCase.test_conf_file_dict_spaces_use_dgroupk  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   -test_conf_file_dict_spaces_use_default_dgroupzDConfigFileOptsTestCase.test_conf_file_dict_spaces_use_default_dgroupp  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   /test_conf_file_dict_spaces_use_dgroup_and_dnamezFConfigFileOptsTestCase.test_conf_file_dict_spaces_use_dgroup_and_dnameu  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   'test_conf_file_dict_spaces_ignore_dnamez>ConfigFileOptsTestCase.test_conf_file_dict_spaces_ignore_dnamez  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   (test_conf_file_dict_spaces_ignore_dgroupz?ConfigFileOptsTestCase.test_conf_file_dict_spaces_ignore_dgroup  r  r   c                 N    | j                  t        j                  ddddd       y r  r  r   s    r   2test_conf_file_dict_spaces_ignore_dgroup_and_dnamezIConfigFileOptsTestCase.test_conf_file_dict_spaces_ignore_dgroup_and_dname  r  r   c                    | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   )rB   z[DEFAULT]
foo = 65536
r  r   rY   r  r   r  ru   r  r  r  r	  s     r   !test_conf_file_port_outside_rangez8ConfigFileOptsTestCase.test_conf_file_port_outside_range  sn    		s{{512%% (9 ': ; 			?E!H-.#22DIINNEJr   c                 r   | j                   j                  t        j                  dt	        j
                                      | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddg| j                   j                         y )Nr   rD  rB   z[DEFAULT]
foo = 22, 80
r  r      r  rY   r  r   r  r   Portru   r  r  r   r   r	  s     r   test_conf_file_port_listz/ConfigFileOptsTestCase.test_conf_file_port_list  s    		s{{5EJJLIJ%% (: '; < 			?E!H-.		512"b499==1r   c                 x   | j                   j                  t        j                  dt	        j
                         ddg             | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  dd	g| j                   j                         y )
Nr   7   M   rE  r   r  r  r   r  r  r  r	  s     r    test_conf_file_port_list_defaultz7ConfigFileOptsTestCase.test_conf_file_port_list_default  s    		s{{5EJJL468 = 	> %% (: '; < 			?E!H-.		512"b499==1r   c                 x   | j                   j                  t        j                  dt	        j
                         ddg             | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddg| j                   j                         y )Nr   r  r  r  r  r  r   r  r	  s     r   %test_conf_file_port_list_only_defaultz<ConfigFileOptsTestCase.test_conf_file_port_list_only_default  s    		s{{5EJJL468 = 	> %% (7 '8 9 			?E!H-.		512"b499==1r   c                 B   | j                   j                  t        j                  dt	        j
                                      | j                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   rD  )rB   z[DEFAULT]
foo = 1,65536
r  r   )
rY   r  r   r  r   r  ru   r  r  r  r	  s     r   &test_conf_file_port_list_outside_rangez=ConfigFileOptsTestCase.test_conf_file_port_list_outside_range  sv    		s{{5EJJLIJ%% (; '< = 			?E!H-.#22DIINNEJr   c                     | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y r  r  r	  s     r   %test_conf_file_port_min_max_above_maxz<ConfigFileOptsTestCase.test_conf_file_port_min_max_above_max  sr    		s{{5aQ?@%% (6 '7 8 			?E!H-.#22DIINNEJr   c                    | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr     r3  )rB   z[DEFAULT]
foo = 600
r  r   r  r	  s     r   &test_conf_file_port_only_max_above_maxz=ConfigFileOptsTestCase.test_conf_file_port_only_max_above_max  sp    		s{{5c:;%% (7 '8 9 			?E!H-.#22DIINNEJr   c                     | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr   d   r  r  )rB   z[DEFAULT]
foo = 99
r  r   r  r	  s     r   %test_conf_file_port_min_max_below_minz<ConfigFileOptsTestCase.test_conf_file_port_min_max_below_min  sr    		s{{5csCD%% (6 '7 8 			?E!H-.#22DIINNEJr   c                    | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       y )Nr     r9  )rB   z[DEFAULT]
foo = 1024
r  r   r  r	  s     r   &test_conf_file_port_only_min_below_minz=ConfigFileOptsTestCase.test_conf_file_port_only_min_below_min  sp    		s{{5d;<%% (8 '9 : 			?E!H-.#22DIINNEJr   c                 L   | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )	Nr   r  ip  r  )rB   z[DEFAULT]
foo = 2500
r  r   i	  	rY   r  r   r  ru   r  r  r   r   r	  s     r   $test_conf_file_port_min_max_in_rangez;ConfigFileOptsTestCase.test_conf_file_port_min_max_in_range  s    		s{{5dEF%% (8 '9 : 			?E!H-.		512tyy}}-r   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   i  r3  rB   z[DEFAULT]
foo = 45
r  r   -   r  r	  s     r   %test_conf_file_port_only_max_in_rangez<ConfigFileOptsTestCase.test_conf_file_port_only_max_in_range  s    		s{{5d;<%% (6 '7 8 			?E!H-.		512TYY]]+r   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   #   r9  r  r  r   r  r  r	  s     r   %test_conf_file_port_only_min_in_rangez<ConfigFileOptsTestCase.test_conf_file_port_only_min_in_range  s    		s{{5b9:%% (6 '7 8 			?E!H-.		512TYY]]+r   c                 T    | j                  t        t        j                  ddd       y )Nr   r     r  )r  r+  r   r  r   s    r   #test_conf_file_port_min_greater_maxz:ConfigFileOptsTestCase.test_conf_file_port_min_greater_max  s    *ckk5bbIr   c                 N   | j                   j                  t        j                  ddg             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  dg| j                   j                         y r  	rY   r  r   r  ru   r  r  r   r   r	  s     r   test_conf_file_multistr_defaultz6ConfigFileOptsTestCase.test_conf_file_multistr_default  s    		suugFG%% (7 '8 9 			?E!H-.		512%$))--0r   c                 H   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  dg| j                   j                         y r  r  r	  s     r   test_conf_file_multistr_valuez4ConfigFileOptsTestCase.test_conf_file_multistr_value  s    		su56%% (7 '8 9 			?E!H-.		512%$))--0r   c           	      ^   | j                   j                  t        j                  dd             | j	                  ddg      }| j                  ddd|d	   d|d
   g       | j                  t        | j                   d             | j                  g d| j                   j                         y )Nr   rP  r   r  [DEFAULT]
foo = bar1
)r  z&[DEFAULT]
oldfoo = bar2
oldfoo = bar3
rM  bar0r  r   r  r  bar1r  r  	rY   r   r   r  ru   r  r  r   r   r	  s     r   0test_conf_file_multistr_values_append_deprecatedzGConfigFileOptsTestCase.test_conf_file_multistr_values_append_deprecated'  s    		""3??53;$= 	> %% (8(;'< = 			7F"E!H"E!H. 	/ 			5129499==Ir   c           	      Z   | j                   j                  t        j                  d             | j	                  ddg      }| j                  ddd|d   d|d   g       | j                  t        | j                   d             | j                  g d	| j                   j                         y )
Nr   r  )r  z [DEFAULT]
foo = bar2
foo = bar3
rM  r  r  r   r  r  r   r	  s     r   %test_conf_file_multistr_values_appendz<ConfigFileOptsTestCase.test_conf_file_multistr_values_append;  s    		""3??5#9:%% (8(8'9 : 			7F"E!H"E!H. 	/ 			5129499==Ir   c                 N   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  ddg| j                   j                         y )	Nri  rP  r   )rB   z%[DEFAULT]
oldfoo= bar1
oldfoo = bar2
r  r   r  r  )	rY   r  r   r  ru   r  r  r   ri  r	  s     r   "test_conf_file_multistr_deprecatedz9ConfigFileOptsTestCase.test_conf_file_multistr_deprecatedN  s    		OOHh?	A %% (; '< =
 			?E!H-.		845&&)499+;+;<r   c                    | j                   j                  t        j                  d      t        j                  d      g       | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r   )rB   z[DEFAULT]
foo = bar
bar = foo
r  r   )
rY   register_optsr   r   ru   r  r  r   r   r   r	  s     r   test_conf_file_multiple_optsz3ConfigFileOptsTestCase.test_conf_file_multiple_opts[  s    		E!2CJJu4E FG%% (7 '8 9
 			?E!H-.		512		.		512		.r   c                 F   | j                   j                  t        j                  d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   )rB   z[DEFAULT]
foo = bar-%08x
r  r   zbar-%08xr  r	  s     r   test_conf_file_raw_valuez/ConfigFileOptsTestCase.test_conf_file_raw_valuej  s}    		szz%01%% (< '= > 			?E!H-.		512TYY]]3r   c                    t        d      D ]f  }t        j                  d|z  d      }| j                  j	                  |       | j                  j                  t        j                  d      |       h | j                  dg      }| j                  d|d   g       | j                  d	| j                  j                  j                         y )
Nrf  zgroup%soptionsopt1group)rB   z([group1]
opt1 = foo
[group2]
opt2 = bar
r  r   r   )ranger   r   rY   register_groupr   r   ru   r   group1r  )r   ir  r
  s       r   test_conf_file_sorted_groupz2ConfigFileOptsTestCase.test_conf_file_sorted_groupv  s    r 	HALLQ	:EII$$U+II&&szz&'9&G	H
 %%EFH 			?E!H-.		 0 0 5 56r   )rU  NN)r9   r:   r;   rU   rs  rx  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  r  r  r  r  r  r  r  r  r  r   r"  r$  r'  r)  r+  r1  r4  r7  r:  r>  r@  rC  rE  rH  rK  rM  rP  rR  rT  rW  r\  r_  rb  re  rl  ro  rr  ru  rw  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  r  r  r
  r  rw   rx   s   @r   r`  r`  b  s   
 %./331>FK1BK//1"6.:O @AIKCDN/	)	(
'(''' :;CE=>H	--

--"KG67?A9:D	.0
..">?GIABLKKKK
-
-
-M	1&
19"0D0GHP<JK3IJ55LM?	8
8
<
A
A:(
=B"C
D
L
N
F
G
;C
D
L
N
F
G
;K	2
2	2KKKKK
.
,
,J	1
1J(J&=/
47r   r`  c                   $    e Zd Zd Zd Zd Zd Zy)ConfigFileReloadTestCasec                 J   | j                   j                  t        j                  d             | j	                  ddg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         t        j                  |d   |d          | j                   j                          | j                  t        | j                   d             | j                  d| j                   j                         y )	Nr   r  r  r  r   baarr  r  )rY   r   r   r   ru   r  r  r   r   shutilcopyreload_config_filesr	  s     r   test_conf_files_reloadz/ConfigFileReloadTestCase.test_conf_files_reload  s    		""3::e#45%% (8(9': ; 			?E!H-.		512/E!HeAh'		%%'		512$))--0r   c                 *   | j                   j                  t        j                  d             | j                   j                  t        j                  d             | j	                  ddg      }| j	                  ddg      }| j                  g |       | j                  t        | j                   d             | j                  d| j                   j                         | j                  t        | j                   d             | j                  d	| j                   j                         t        j                  |d
   |d
          t        j                  |d   |d          | j                   j                          | j                  t        | j                   d             | j                  d| j                   j                         | j                  t        | j                   d             | j                  d| j                   j                         y )Nfoo1foo2)r  z[DEFAULT]
foo1 = default1
)r  z[DEFAULT]
foo2 = default2
)r  z![DEFAULT]
foo1 = change_default1
)r  z![DEFAULT]
foo2 = change_default2
r  default1default2r   r  change_default1change_default2)rY   r   r   r   ru   r  r  r   r  r  r  r  r  )r   r
  paths_changes      r   test_conf_files_reload_defaultz7ConfigFileReloadTestCase.test_conf_files_reload_default  s   		""3::f#56		""3::f#56%% (=(='> ? ,, /K/K.L M 			r	6		623TYY^^4		623TYY^^4LOU1X.LOU1X.		%%'		623*DIINN;		623*DIINN;r   c                 D   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         t        j                  |d          | j                   j                          | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   Tr   r  r  r   r  )rY   r   r   r   ru   r  r  r   r   r^   remover  r	  s     r   %test_conf_files_reload_file_not_foundz>ConfigFileReloadTestCase.test_conf_files_reload_file_not_found  s    		""3::ed#CD%% (8 '9 : 			?E!H-.		512/
		%(		%%'		512/r   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j	                  ddg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d	| j                   j                         | j                  t        | j                   d             | j                  d
| j                   j                         t        j                  |d   |d          | j                   j                          | j                  t        | j                   d             | j                  d	| j                   j                         | j                  t        | j                   d             | j                  d
| j                   j                         y )Nr   Tr'  r  )r  z$[DEFAULT]
foo = test1
foo1 = test11
)r  z%[DEFAULT]
foo2 = test2
foo3 = test22
r  r   test1test11r  )rY   r   r   r   ru   r  r  r   r   r  r  r  r  r	  s     r   test_conf_files_reload_errorz5ConfigFileReloadTestCase.test_conf_files_reload_error  sT   		""3::ed#CD		""3::ft#DE%% (;(;	'< = 			?E!H-.		512$))--0		623499>>2E!HeAh'		%%'		512$))--0		623499>>2r   N)r9   r:   r;   r  r%  r)  r-  r<   r   r   r  r    s    1(<B0 3r   r  c                   T     e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Z xZS )ConfigFileMutateTestCasec                     t         t        |           t        j                  dd      | _        | j                  j                  | j
                         y )Nr  zgroup options)rT   r/  rU   r   r   my_grouprY   r  r[   s    r   rU   zConfigFileMutateTestCase.setUp  s9    &35Wo>		  /r   c                     | j                  ddg      }| j                  d|d   g       t        j                  |d   |d          | j                  j	                         S )Nr  z.[DEFAULT]
foo = old_foo
[group]
boo = old_boo
r  z.[DEFAULT]
foo = new_foo
[group]
boo = new_boo
r  r   r  )ru   rY   r  r  mutate_config_filesr	  s     r   _test_conf_files_mutatez0ConfigFileMutateTestCase._test_conf_files_mutate  sa    %%%%'& ' 			?E!H-.E!HeAh'yy,,..r   c                    | j                   j                  t        j                  d             | j	                          | j                  t        | j                   d             | j                  d| j                   j                         y)z)Test that immutable opts are not reloadedr   old_fooN	rY   r   r   r   r6  r  r  r   r   r   s    r   test_conf_files_mutate_nonez4ConfigFileMutateTestCase.test_conf_files_mutate_none  sZ     			""3::e#45$$&		512DIIMM2r   c                    | j                   j                  t        j                  dd             | j	                          | j                  t        | j                   d             | j                  d| j                   j                         y)z(Test that a mutable opt can be reloaded.r   Tmutablenew_fooNr9  r   s    r   test_conf_files_mutate_fooz3ConfigFileMutateTestCase.test_conf_files_mutate_foo	  s\     			""3::eT#BC$$&		512DIIMM2r   c                    | j                   j                  t        j                  dd      | j                         | j                          | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y)z1Test that mutable opts in groups can be reloaded.booTr<  r  r  new_booN)rY   r   r   r   r1  r6  r  r  r  r   rA  r   s    r   test_conf_files_mutate_groupz5ConfigFileMutateTestCase.test_conf_files_mutate_group	  s    		""3::eT#B)- 	# 	8$$&		734		78DIIOO$7$78r   c                    | j                  t        j                               | _        | j                  j                  t        j                  dd             | j                  j                  t        j                  d      | j                         | j                          | j                  d| j                  j                         y )Nr   Tr<  rA  r  zeIgnoring change to immutable option group.boo
Option DEFAULT.foo changed from [old_foo] to [new_foo]
rV   rW   re  log_fixturerY   r   r   r   r1  r6  r   r  r   s    r   test_warn_immutabilityz/ConfigFileMutateTestCase.test_warn_immutability	  s    ??8+>+>+@A		""3::eT#BC		""3::e#4DMM"J$$&G##	%r   c                    | j                  t        j                               | _        | j                  j                  t        j                  d             | j                  j                  t        j                  dd             | j                  j                  t        j                  dd             | j                  j                  t        j                  dd      | j                         | j                         }| j                  dd	d
|       d}| j                  || j                  j                         y )NimmblankTr<  r   rA  r  )r8  r>  )old_boorB  )Nr   )r  rA  zlOption DEFAULT.foo changed from [old_foo] to [new_foo]
Option group.boo changed from [old_boo] to [new_boo]
rE  )r   diffr   s      r   	test_diffz"ConfigFileMutateTestCase.test_diff	  s    ??8+>+>+@A		""3::e#45		""3::gt#DE		""3::eT#BC		""3::eT#B)- 	# 	8++-257	M4#3#3#:#:;r   c                      i dg fd} j                   j                  |        j                   j                  |        j                           j                  dd          y )Nr   c                 |    j                  | j                         j                  |       dxx   dz  cc<   y )Nr   r  )r   rY   )rY   	foo_freshfreshrn  r   s     r   r   z=ConfigFileMutateTestCase.test_hooks_invoked_once.<locals>.foo3	  s4    T499-UI.1INIr   r  )rY   register_mutate_hookr6  r   )r   r   rR  rn  s   ` @@r   test_hooks_invoked_oncez0ConfigFileMutateTestCase.test_hooks_invoked_once/	  sZ    	
 			&&s+		&&s+$$&F1I&r   c                      fd} j                   j                  t        j                  dd              j                   j	                  |        j                  ddg      } j                  d|d   g        j                  d	 j                   j                         t        j                  |d
   |d           j                   j                           j                  d j                   j                         y )Nc                 >    j                  d| j                         y )Nr>  )r   r   )rY   rR  r   s     r   r   z?ConfigFileMutateTestCase.test_hooks_see_new_values.<locals>.foo>	  s    Y1r   r   Tr<  r3  r4  r  r   r8  r  r>  )rY   r   r   r   rS  ru   r   r   r  r  r5  )r   r   r
  s   `  r   test_hooks_see_new_valuesz2ConfigFileMutateTestCase.test_hooks_see_new_values=	  s    	2 			""3::eT#BC		&&s+%%%%'& ' 			?E!H-. 	DIIMM2E!HeAh'		%%'DIIMM2r   c                 |   | j                   j                  t        j                  d             | j                   j	                  t        j                  d             | j                   j                         D cg c]  \  }}|d   j                   }}}| j                  d|       | j                  d|       | j                   j                          | j                   j                         D cg c]  \  }}|d   j                   }}}| j                  d|       | j                  d|       yc c}}w c c}}w )zShow that #clear doesn't undeclare opts.

        This justifies not clearing mutate_hooks either. ResetAndClearTestCase
        shows that values are cleared.
        clir   optN)	rY   r   r   r   r  _all_opt_infosdestr   clear)r   info_destss       r   
test_clearz#ConfigFileMutateTestCase.test_clearY	  s     			""3::e#45		szz%01151I1I1KLgdAe!!LLeU#eU#		151I1I1KLgdAe!!LLeU#eU# M
 Ms   :D21D8)r9   r:   r;   rU   r6  r:  r?  rC  rG  rN  rT  rW  ra  rw   rx   s   @r   r/  r/    s5    0
/339%< '38$r   r/  c                   l    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zy)OptGroupsTestCasec                 *   t        j                  dd      }| j                  j                  |       | j                  j	                  t        j
                  d      |       | j                  ddg       | j                  t        | j                  d             | j                  t        | j                  j                  d             | j                  d| j                  j                  j                         | j                  dt        |             y )Nr   blaa optionsr   r  
--blaa-foor   )r   r   rY   r  r   r   r  r  r   r   r   r   r   
blaa_groups     r   test_arg_groupz OptGroupsTestCase.test_arg_groupm	  s    \\&.9
		  ,		""3::e#4J"G		<'(		623		67		 2 23Z1r   c                    | j                   j                  t        j                  d      d       | j                  ddg       | j	                  t        | j                   d             | j	                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   r  rf  r   )	rY   r   r   r   r  r  r   r   r   r   s    r   test_autocreate_group_by_namez/OptGroupsTestCase.test_autocreate_group_by_namey	  s    		""3::e#4F"C		<'(		623		67		 2 23r   c                    t        j                  dd      }| j                  j                  t        j                  d      |       | j                  ddg       | j                  t        | j                  d             | j                  t        | j                  j                  d             | j                  d| j                  j                  j                         y )Nr   zBlaa options)nametitler   r  rf  r   )
r   r   rY   r   r   r  r  r   r   r   )r   r  s     r   test_autocreate_group_by_groupz0OptGroupsTestCase.test_autocreate_group_by_group	  s    &?		""3::e#4E"B		<'(		623		67		 2 23r   c                 f    t        j                  d      }| j                  |j                  d       y )Nr   re  )r   r   r   rn  rg  s     r   test_autocreate_titlez'OptGroupsTestCase.test_autocreate_title	  s&    \\&)
))>:r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  ddg       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   r  rf  r   rY   r  r   r   r   r   r  r  r   r   r   r   s    r   test_arg_group_by_namez(OptGroupsTestCase.test_arg_group_by_name	  s    		  f!56		""3::e#4F"C		<'(		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  g        | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   r   r  r  rs  r   s    r   test_arg_group_with_defaultz-OptGroupsTestCase.test_arg_group_with_default	  s    		  f!56		""JJue,F 	# 	< 			"		623		67		 2 23r   c                    | j                   j                  t        j                  d      d       | j                   j                  t        j                  d      d       | j                  g d       | j	                  t        | j                   d             | j	                  t        | j                   j                  d             | j                  d| j                   j                  j                          | j	                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )NrY   r   r  r  )z--blaa-confr   z--blaa-groupr   r   r   )	rY   r   r   r   r  r  r   r   r  r   s    r   'test_arg_group_with_conf_and_group_optsz9OptGroupsTestCase.test_arg_group_with_conf_and_group_opts	  s    		""3::f#5V"D		""3::g#6f"E		?@		623		78		 3 34		89		 4 45r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   r  )rB   z[blaa]
foo = bar
r  r   r   rY   r  r   r   r  r   ru   r  r  r   r   r   r	  s     r   test_arg_group_in_config_filez/OptGroupsTestCase.test_arg_group_in_config_file	  s    		  f!56		szz%0?%% (7 '8 9 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         y )
Nr   r   rP  r   r  )rB   z[blaa]
oldfoo = bar
r  r   r   rz  r	  s     r   2test_arg_group_in_config_file_with_deprecated_namezDOptGroupsTestCase.test_arg_group_in_config_file_with_deprecated_name	  s    		  f!56		szz%J%+ 	 	- %% (: '; < 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         y )
Nr   r   rU  r  r  r  r  r   r   rz  r	  s     r   3test_arg_group_in_config_file_with_deprecated_groupzEOptGroupsTestCase.test_arg_group_in_config_file_with_deprecated_group	  s    		  f!56		szz%)L%+ 	 	- %% (7 '8 9 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                  dg      }| j                  d|d	   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d
| j                   j                  j                         y )Nr   r   rU  rP  r  r   r  )rB   z[DEFAULT]
oldfoo = bar
r  r   r   rz  r	  s     r   <test_arg_group_in_config_file_with_deprecated_group_and_namezNOptGroupsTestCase.test_arg_group_in_config_file_with_deprecated_group_and_name	  s    		  f!56		JJuy'/18> 	 	@ %% (: '; < 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         y )
Nr   r   rP  r   r  )rB   z![blaa]
foo = bar
oldfoo = blabla
r  r   r   rz  r	  s     r   6test_arg_group_in_config_file_override_deprecated_namezHOptGroupsTestCase.test_arg_group_in_config_file_override_deprecated_name	  s    		  f!56		szz%J%+ 	 	- %% (= '> ?
 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         y )
Nr   r   rU  r  r  )rB   z([DEFAULT]
foo = blabla
[blaa]
foo = bar
r  r   r   rz  r	  s     r   7test_arg_group_in_config_file_override_deprecated_groupzIOptGroupsTestCase.test_arg_group_in_config_file_override_deprecated_group	  s    		  f!56		szz%)L%+ 	 	- %% (7 '8 9 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                  dg      }| j                  d|d	   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d
| j                   j                  j                         y )Nr   r   rU  rP  r  r  )rB   z+[DEFAULT]
oldfoo = blabla
[blaa]
foo = bar
r  r   r   rz  r	  s     r   @test_arg_group_in_config_file_override_deprecated_group_and_namezROptGroupsTestCase.test_arg_group_in_config_file_override_deprecated_group_and_name
  s    		  f!56		JJuy'/18> 	 	@ %% (7 '8 9 			?E!H-.		623		67		 2 23r   c                 b   | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )	Nr   r   r  rB   z[BLAA]
foo = bar
r  r   BLAAr   )rY   r  r   r   r  r   ru   r  r  r  r   r   r   r	  s     r   /test_arg_group_in_config_file_with_capital_namezAOptGroupsTestCase.test_arg_group_in_config_file_with_capital_name 
      		  f!56		szz%0?%% (7 '8 9 			?E!H-.F34		623		67		 2 23r   c                 b   | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )	Nr  r   r  r  r  r   r   r   )rY   r  r   r   r  r   ru   r  r  r  r  r   r   r	  s     r   >test_arg_group_in_config_file_with_capital_name_on_legacy_codezPOptGroupsTestCase.test_arg_group_in_config_file_with_capital_name_on_legacy_code/
  r  r   N)r9   r:   r;   ri  rk  ro  rq  rt  rv  rx  r{  r}  r  r  r  r  r  r  r  r<   r   r   rc  rc  k	  sR    
244;4	4
64444 4 4"4$44r   rc  c                       e Zd Zd Zd Zy)MappingInterfaceTestCasec                 :   | j                   j                  t        j                  d             | j                  ddg       | j	                  d| j                          | j	                  d| j                          | j                  t        | j                         d       | j                  d| j                   d          | j                  d| j                   j                  d             | j	                  dt        | j                   j                                      y )Nr   rM  r   r  rB  )
rY   r   r   r   r   r   lengetr   valuesr   s    r   test_mapping_interfacez/MappingInterfaceTestCase.test_mapping_interfaceA
  s    		""3::e#45		7E"#eTYY'mTYY/TYY+		% 01		e 45eT$))"2"2"456r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  ddg       | j                  d| j                          | j                  dt        | j                   d                | j                  t        | j                   d         d       | j                  d| j                   d   d          | j                  d| j                   d   j                  d             | j                  d| j                   d   j                                | j                  | j                   d   | j                   j                         y )Nr   r   r  rf  r   r  )rY   r  r   r   r   r   r   r   r   r  r  r  r   r   s    r   !test_mapping_interface_with_groupz:MappingInterfaceTestCase.test_mapping_interface_with_groupM
  s   		  f!56		""3::e#4F"C		<'(fdii(eT$))F"345TYYv./3		& 1% 89		& 1 5 5e <=eTYYv.55786*DIINN;r   N)r9   r:   r;   r  r  r<   r   r   r  r  ?
  s    
7<r   r  c                       e Zd Zd eddddddd      fd eddddddd      fgZd Zd	 Zd
 Zd Zd Z	d Z
d Zd Zd Zd Zy)OptNameSeparatorTestCasehyphenr<  r>  T)opt_nameopt_destbroken_opt_destcf_namebroken_cf_namecli_namer  
underscoreFc                    | j                   j                  t        j                  | j                               | j                  t        | j                   | j                               | j                  t        | j                   | j                               | j                  | j                  | j                          | j                  | j                  | j                          y rS   rY   r  r   r   r  r  r  r  r  r  r   r   r   s    r   test_attribute_and_key_namez4OptNameSeparatorTestCase.test_attribute_and_key_nameu
  s    		szz$--89		4==9:D,@,@ABdmmTYY/--tyy9r   c                    | j                   j                  t        j                  | j                               | j                  d| j
                  z   g       | j                  t        | j                   | j                               y )N--)	rY   r   r   r  r  r  r  r  r  r   s    r   test_cli_opt_namez*OptNameSeparatorTestCase.test_cli_opt_name}
  sT    		""3;;t}}#=>		4$--'()		4==9:r   c                 f   | j                   j                  t        j                  | j                               | j                  dd| j                  z   dz   | j                  z   dz   fg      }| j                  d|d   g       | j                  t        | j                   | j                               y )NrB   r   = True
z	 = False
r  r   )rY   r  r   r  r  ru   r  r  r  r  r  r	  s     r   test_config_file_opt_namez2OptNameSeparatorTestCase.test_config_file_opt_name
  s    		s{{4==9:%%(5(,)57B)C(,(;(;)<>J)K(L 'M N
 			?E!H-.		4==9:r   c                 N   | j                   j                  t        j                  d| j                               | j                  t        | j                   d             | j                  t        | j                   | j                               | j                  t        | j                   | j                               | j                  d| j                          | j                  | j                  | j                          | j                  | j                  | j                          y )Nr
   r   r  r   s    r   test_deprecated_namez-OptNameSeparatorTestCase.test_deprecated_name
  s    		szz(:>-- I 	J 			845		4==9:D,@,@ABh		*		2--tyy9r   c                    | j                   j                  t        j                  d| j                  d      t        j
                  d             | j                  t        | j                   j                  d             | j                  t        | j                   j                  | j                               | j                  t        | j                   j                  | j                               | j                  d| j                   j                         | j                  | j                  | j                   j                         | j                  | j                  | j                   j                         y )Nr
   testingrj  r  )rY   r  r   r   r  r   r  r  r  r  r  r  r   r   r   s    r   $test_deprecated_name_alternate_groupz=OptNameSeparatorTestCase.test_deprecated_name_alternate_group
  s    		JJx'+}}(13 ,,y)	 	 	
 			 1 18<=		 1 14==AB!2!2D4H4HIJh		 1 12		(9(9:--tyy/@/@Ar   c                     | j                   j                  t        j                  d| j                               | j                  d| j
                  z   g       | j                  | j                   j                         y )Nr
   r   r  )rY   r   r   r  r  r  r  r
   r   s    r   test_deprecated_name_cliz1OptNameSeparatorTestCase.test_deprecated_name_cli
  sZ    		""3;;x?C}}$N 	O 			4$--'()		(()r   c                 6   | j                   j                  t        j                  d| j                               | j                  dd| j                  z   dz   fg      }| j                  d|d   g       | j                  | j                   j                         y )Nr
   r   rB   r  r  r  r   )	rY   r  r   r  r  ru   r  r  r
   r	  s     r    test_deprecated_name_config_filez9OptNameSeparatorTestCase.test_deprecated_name_config_file
  s    		s{{8;?== J 	K %%(5(,)57B)C(D 'E F 			?E!H-.		(()r   c                 z   t        j                  | j                        g}| j                  j	                  t        j
                  d|             | j                  t        | j                  d             | j                  t        | j                  | j                               | j                  t        | j                  | j                               | j                  d| j                         | j                  | j                  | j                         | j                  | j                  | j                         y )Nr
   r   )r   r   r  rY   r  r   r  r  r  r  r  r   r   r   oldoptss     r   test_deprecated_optsz-OptNameSeparatorTestCase.test_deprecated_opts
  s    $$T]]34		szz(:A C 	D 			845		4==9:D,@,@ABh		*		2--tyy9r   c                 ,   t        j                  | j                        g}| j                  j	                  t        j
                  d|             | j                  d| j                  z   g       | j                  | j                  j                         y )Nr
   r   r  )	r   r   r  rY   r   r  r  r  r
   r  s     r   test_deprecated_opts_cliz1OptNameSeparatorTestCase.test_deprecated_opts_cli
  sm    $$T]]34		""3;;x?F$H 	I 			4$--'()		(()r   c                 b   t        j                  | j                        g}| j                  j	                  t        j
                  d|             | j                  dd| j                  z   dz   fg      }| j                  d|d   g       | j                  | j                  j                         y )Nr
   r   rB   r  r  r  r   )
r   r   r  rY   r  r  ru   r  r  r
   r   r  r
  s      r    test_deprecated_opts_config_filez9OptNameSeparatorTestCase.test_deprecated_opts_config_file
  s    $$T]]34		s{{8;B D 	E %%(5(,)57B)C(D 'E F 			?E!H-.		(()r   N)r9   r:   r;   r  r  r  r  r  r  r  r  r  r  r  r  r<   r   r   r  r  \
  s     
	y '& 
	 
	y '& 
	I&:;
;
:B *
*:**r   r  c                       e Zd Zd Zd Zy)ReRegisterOptTestCasec                     t        j                  d      }| j                  | j                  j	                  |             | j                  | j                  j	                  |             y rL  )r   r   r  rY   r  r  r   rZ  s     r   test_conf_file_re_register_optz4ReRegisterOptTestCase.test_conf_file_re_register_opt
  sH    jj		..s34//45r   c                 t   t        j                  d      }| j                  j                  |       | j                  j                  |       t        j                  d      }| j                  | j                  j                  ||             | j                  | j                  j                  |d             y )Nr   r   r  )r   r   rY   r  r   r  r  r  )r   r  rZ  s      r   'test_conf_file_re_register_opt_in_groupz=ReRegisterOptTestCase.test_conf_file_re_register_opt_in_group
  s    V$		  '		  'jj		..s%.@A//6/BCr   N)r9   r:   r;   r  r  r<   r   r   r  r  
  s    6
Dr   r  c                       e Zd Zd Zy)RegisterOptNameTestCasec                     t         j                  j                  D ]B  }t        j                  |      }| j	                  t
        | j                  j                  |       D y rS   )r   rO   disallow_namesr   r  r+  rY   r  )r   rm  rZ  s      r   $test_register_opt_with_disallow_namez<RegisterOptNameTestCase.test_register_opt_with_disallow_name
  sG    NN11 	GD**T"Cj$))*@*@#F	Gr   N)r9   r:   r;   r  r<   r   r   r  r  
  s    Gr   r  c                       e Zd Zd(dZd Zd Zd Zd Zd Zd Z	d	 Z
d
 Zd Zd Zd Zd Zd Zd Zd Zd Zd(dZd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d  Z!d! Z"d" Z#d# Z$d$ Z%d% Z&d& Z'd' Z(y))TemplateSubstitutionTestCaseNc                     | j                   j                  t        j                  d|             | j                   j                  t        j                  d|             y Nr   r  r   )rY   r   r   r   r   foo_defaultbar_defaults      r   _prep_test_str_subz/TemplateSubstitutionTestCase._prep_test_str_sub
  <    		""3::e[#IJ		""3::e[#IJr   c                     | j                  t        | j                  d             | j                  d| j                  j                         y )Nr   r   r  r  rY   r   r   r   s    r   _assert_str_subz,TemplateSubstitutionTestCase._assert_str_sub  s1    		512/r   c                 l    | j                  dd       | j                  g        | j                          y )Nr   $foor  r  r  rY   r  r   s    r   !test_str_sub_default_from_defaultz>TemplateSubstitutionTestCase.test_str_sub_default_from_default  s,    FG		"r   c                     | j                   j                  t        j                  dd             | j	                  dd       | j                  g        | j                          y )Nr   r  $blaar  r  )rY   r   r   r   r  r  r   s    r   )test_str_sub_default_from_default_recursezFTemplateSubstitutionTestCase.test_str_sub_default_from_default_recurse  sI    		""3::ff#EFGH		"r   c                 n    | j                  d       | j                  ddg       | j                          y )Nr  r  rM  r   r  r   s    r   test_str_sub_default_from_argz:TemplateSubstitutionTestCase.test_str_sub_default_from_arg  0    F3		7F#$r   c                     | j                  d       | j                  dg      }| j                  d|d   g       | j                          y )Nr  r  rB   z[DEFAULT]
foo = blaa
r  r   r  ru   rY   r  r	  s     r   %test_str_sub_default_from_config_filezBTemplateSubstitutionTestCase.test_str_sub_default_from_config_file  P    F3%% (8 '9 : 			?E!H-.r   c                 n    | j                  d       | j                  ddg       | j                          y )Nr   r  --barr  r  r   s    r   test_str_sub_arg_from_defaultz:TemplateSubstitutionTestCase.test_str_sub_arg_from_default'  r  r   c                 j    | j                          | j                  g d       | j                          y )N)rM  r   r  r  r  r   s    r   test_str_sub_arg_from_argz6TemplateSubstitutionTestCase.test_str_sub_arg_from_arg.  s'    !		45r   c                     | j                          | j                  dg      }| j                  d|d   dg       | j                          y )Nr  r  r   
--bar=$foor  r	  s     r   !test_str_sub_arg_from_config_filez>TemplateSubstitutionTestCase.test_str_sub_arg_from_config_file5  M    !%% (8 '9 : 			?E!Hl;<r   c                     | j                  d       | j                  dg      }| j                  d|d   g       | j                          y )Nr   r  rB   z[DEFAULT]
bar = $foo
r  r   r  r	  s     r   %test_str_sub_config_file_from_defaultzBTemplateSubstitutionTestCase.test_str_sub_config_file_from_default@  r  r   c                     | j                          | j                  dg      }| j                  d|d   dg       | j                          y )Nr  r  r   r$  r  r	  s     r   !test_str_sub_config_file_from_argz>TemplateSubstitutionTestCase.test_str_sub_config_file_from_argK  r  r   c                     | j                          | j                  dg      }| j                  d|d   g       | j                          y )N)rB   z [DEFAULT]
bar = $foo
foo = blaa
r  r   r  r	  s     r   )test_str_sub_config_file_from_config_filezFTemplateSubstitutionTestCase.test_str_sub_config_file_from_config_fileV  sK    !%% (8 '9 :
 			?E!H-.r   c                 
   | j                          | j                  dg      }| j                  d|d   g       | j                  t	        | j                  d             | j                  d| j                  j                         y )N)rB   z[DEFAULT]
bar=foo-somethin$$k2
r  r   r   foo-somethin$k2r  ru   rY   r  r  r   r   r	  s     r   $test_str_sub_with_dollar_escape_charzATemplateSubstitutionTestCase.test_str_sub_with_dollar_escape_charb  sr    !%% (B 'C D 			?E!H-.		512*DIIMM:r   c                 
   | j                          | j                  dg      }| j                  d|d   g       | j                  t	        | j                  d             | j                  d| j                  j                         y )N)rB   z[DEFAULT]
bar=foo-somethin\$k2
r  r   r   r  r  r	  s     r   'test_str_sub_with_backslash_escape_charzDTemplateSubstitutionTestCase.test_str_sub_with_backslash_escape_charn  sr    !%% (C 'D E 			?E!H-.		512*DIIMM:r   c                 N   | j                   j                  t        j                  dd             | j                   j	                  t        j
                  d             | j                   j                  t        j                  dd      d       | j                  g        | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   r  barO  r  r  )rY   r   r   r   r  r   r  r  r   r   rO  r   s    r   test_str_sub_group_from_defaultz<TemplateSubstitutionTestCase.test_str_sub_group_from_defaultz  s    		""3::eV#DE		  d!34		""3::c6#B$"O		"		401		c230r   c                     | j                          | j                  j                  dd       | j                  j                  dd       | j                  g        | j                          y Nr   r  r   r   )r  rY   set_defaultr  r   s    r   test_str_sub_set_defaultz5TemplateSubstitutionTestCase.test_str_sub_set_default  sM    !		eV,		eV,		"r   c                     | j                          | j                  j                  dd       | j                  j                  dd       | j                  g        | j                          y r  )r  rY   set_overrider  r   s    r   test_str_sub_set_overridez6TemplateSubstitutionTestCase.test_str_sub_set_override  sM    !		uf-		uf-		"r   c                     | j                   j                  t        j                  d|             | j                   j                  t        j                  d|             y r  )rY   r   r   r   r  r  s      r   _prep_test_str_int_subz3TemplateSubstitutionTestCase._prep_test_str_int_sub  r  r   c                     | j                  t        | j                  d             | j                  d| j                  j                         y )Nr   {   r  r   s    r   _assert_int_subz,TemplateSubstitutionTestCase._assert_int_sub  s1    		512diimm,r   c                 l    | j                  dd       | j                  g        | j                          y )N123r  r  r
  rY   r  r   s    r   test_sub_default_from_defaultz:TemplateSubstitutionTestCase.test_sub_default_from_default  s,    ##6#J		"r   c                     | j                   j                  t        j                  dd             | j	                  dd       | j                  g        | j                          y )Nr   r  r  r  r  r  )rY   r   r   r   r
  r  r   s    r   %test_sub_default_from_default_recursezBTemplateSubstitutionTestCase.test_sub_default_from_default_recurse  sI    		""3::fe#DE##V#L		"r   c                 n    | j                  d       | j                  ddg       | j                          y )Nr  r  rM  r  r  r   s    r   test_sub_default_from_argz6TemplateSubstitutionTestCase.test_sub_default_from_arg  s0    ###7		7E"#r   c                     | j                  d       | j                  dg      }| j                  d|d   g       | j                          y )Nr  r  rB   z[DEFAULT]
foo = 123
r  r   r
  ru   rY   r  r	  s     r   !test_sub_default_from_config_filez>TemplateSubstitutionTestCase.test_sub_default_from_config_file  sP    ###7%% (7 '8 9 			?E!H-.r   c                 n    | j                  d       | j                  ddg       | j                          y )Nr  r  r  r  r  r   s    r   test_sub_arg_from_defaultz6TemplateSubstitutionTestCase.test_sub_arg_from_default  s0    ###6		7F#$r   c                 j    | j                          | j                  g d       | j                          y )N)rM  r  r  r  r  r   s    r   test_sub_arg_from_argz2TemplateSubstitutionTestCase.test_sub_arg_from_arg  s'    ##%		34r   c                     | j                          | j                  dg      }| j                  d|d   dg       | j                          y )Nr  r  r   r  r  r	  s     r   test_sub_arg_from_config_filez:TemplateSubstitutionTestCase.test_sub_arg_from_config_file  sM    ##%%% (7 '8 9 			?E!Hl;<r   c                     | j                  d       | j                  dg      }| j                  d|d   g       | j                          y )Nr  r  r  r  r   r  r	  s     r   !test_sub_config_file_from_defaultz>TemplateSubstitutionTestCase.test_sub_config_file_from_default  sP    ###6%% (8 '9 : 			?E!H-.r   c                     | j                          | j                  dg      }| j                  d|d   dg       | j                          y )Nr  r  r   z	--foo=123r  r	  s     r   test_sub_config_file_from_argz:TemplateSubstitutionTestCase.test_sub_config_file_from_arg  sM    ##%%% (8 '9 : 			?E!Hk:;r   c                     | j                          | j                  dg      }| j                  d|d   g       | j                          y )N)rB   z[DEFAULT]
bar = $foo
foo = 123
r  r   r  r	  s     r   %test_sub_config_file_from_config_filezBTemplateSubstitutionTestCase.test_sub_config_file_from_config_file  sK    ##%%% (7 '8 9
 			?E!H-.r   c                    | j                   j                  t        j                  dd             | j                   j	                  t        j
                  d             | j                   j                  t        j                  dd      d       | j                  g        | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                         | j                  d| j                   j                  j                         y )	Nr   r  r  r   rO  r  r  r  )rY   r   r   r   r  r   r  r  r  r   r   r   rO  r   s    r   test_sub_group_from_defaultz8TemplateSubstitutionTestCase.test_sub_group_from_default  s    		""3::eU#CD		  d!34		""3::c6#B$"O		"		401		c23		.diillnn-r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                   j	                  t        j                  dd	      d       | j                  g        | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  t        | j                   j                  d             | j                  d
| j                   j                  j                         y )Nr   r   r  rU  r   r  r  rO  r  r  r  rY   r  r   r   r   r   r  r  r  r   r   r   rO  r   s    r   &test_sub_group_from_default_deprecatedzCTemplateSubstitutionTestCase.test_sub_group_from_default_deprecated  s    		  d!34		""3::59$>EI 	# 	K		""3::c6#B$"O		"		401		e45		 0 01		c23diillnn-r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                   j	                  t        j                  dd	      d       | j                  d
g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  d| j                   j                  j                         y )Nr   r   r  rU  r)  r  rO  r  r  z--ba-foo=42424242  r*  r   s    r   #test_sub_group_from_args_deprecatedz@TemplateSubstitutionTestCase.test_sub_group_from_args_deprecated  s   		  d!34		""3::59$>EI 	# 	K		""3::c6#B$"O		?#$		401		e45		c23!1!12tyy||~~.r   c                 @   | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                   j	                  t        j                  dd	      d       | j                  d
g      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  d| j                   j                  j                         y )Nr   r   r  rU  r)  r  rO  r  r  )rB   z[DEFAULT]
foo=4242
r  r   r-  r.  )rY   r  r   r   r   r   r  ru   r  r  r   r   r   rO  r	  s     r   )test_sub_group_from_configfile_deprecatedzFTemplateSubstitutionTestCase.test_sub_group_from_configfile_deprecated#  s$   		  d!34		""3::59$>EI 	# 	K		""3::c6#B$"O%% (6 '7 8 			?E!H-.		401		e45		c23!1!12tyy||~~.r   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dddi             | j                  g        | j                  d| j                   j                  d          y )	Nr   floor  r   r   dtr  $barrY   r   r   r   r  r   r4  r   s    r   "test_dict_sub_default_from_defaultz?TemplateSubstitutionTestCase.test_dict_sub_default_from_default5  s    		""3::eV#DE		""3::eV#DE		""3;;tff=M#NO		"f!56r   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd	             | j                   j                  t        j                  d
dddddd             | j                  g        | j                  d| j                   j                  d          | j                  d| j                   j                  d          | j                  d	| j                   j                  d          | j                  d| j                   j                  d          | j                  d| j                   j                  d          y )Nr   r3  r  r   r   googlooharhlaar4  r5  z$harr   i90  )r  z$goor;  r  r  r  r  r6  r   s    r   (test_dict_sub_default_from_default_multizETemplateSubstitutionTestCase.test_dict_sub_default_from_default_multi>  sI   		""3::eV#DE		""3::eV#DE		""3::eV#DE		""3::eV#DE		""3;;tfFKEKFKFK	>M $N 	O 			"f!56		V 45e!45		V 45		V 45r   c                 \   | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd	             | j                   j                  t        j                  d
ddi             | j                  g        | j                  d	| j                   j                  d          y )Nr   z$foo2r  r  r3  r   z$bar2r  r   r4  r  r5  r6  r   s    r   *test_dict_sub_default_from_default_recursezGTemplateSubstitutionTestCase.test_dict_sub_default_from_default_recurseQ  s    		""3::eW#EF		""3::ff#EF		""3::eW#EF		""3::ff#EF		""3;;tff=M#NO		"f!56r   c                    | j                   j                  t        j                  dd              | j                   j                  t        j                  dd              | j                   j                  t        j                  dddi             | j                  g d       | j                  t        | j                   d             | j                  d| j                   j                  d	          y )
Nr   r  r   r4  r  r5  )rM  r3  r  r   r   r3  )	rY   r   r   r   r  r  r  r   r4  r   s    r   test_dict_sub_default_from_argz;TemplateSubstitutionTestCase.test_dict_sub_default_from_arg\  s    		""3::eT#BC		""3::eT#BC		""3;;tff=M#NO		45		401f!56r   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                   j                  t        j                  di              | j                  dg      }| j                  d|d	   g       | j                  t        | j                   d             | j                  d| j                   j                  d          y )
Nr   r3  r  r   r   r4  )rB   z[DEFAULT]
dt = $foo:$bar
r  r   )
rY   r   r   r   r  ru   r  r  r   r4  r	  s     r   &test_dict_sub_default_from_config_filezCTemplateSubstitutionTestCase.test_dict_sub_default_from_config_filef  s    		""3::eV#DE		""3::eV#DE		""3;;tR#@A%% (< '= > 			?E!H-.		401f!56r   rG  ))r9   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/  r1  r7  r=  r?  rA  rC  r<   r   r   r  r  
  s    K0				

;
;	1K-				

..//$76&	777r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)ConfigDirTestCasec           	      n   t        j                  d      }| j                  j                  |       | j                  j	                  t        j
                  d             | j                  j	                  t        j
                  d      |       t        j                         }| j                  j                  |       | j                  t        j                  j                  |d      dft        j                  j                  |d      dft        j                  j                  |d	      d
fg      }| j                  dddt        j                  j                  |d         g       | j                  t!        | j                  d             | j#                  d| j                  j$                         | j                  t!        | j                  d             | j                  t!        | j                  j&                  d             | j#                  d| j                  j&                  j(                         y )Nsnafur   bellr  00-testz1[DEFAULT]
foo = bar-00
[snafu]
bell = whistle-00
02-testz1[snafu]
bell = whistle-02
[DEFAULT]
foo = bar-02
01-test[DEFAULT]
foo = bar-01
rM  r   r.  r   bar-02z
whistle-02r   r   rY   r  r   r   ra   rb   rZ   rj   ru   r^   r_   rc   re   r  r  r   r   rG  rH  r   snafu_groupdirr
  s       r   test_config_dirz!ConfigDirTestCase.test_config_dirw  s   ll7+		  -		""3::e#45		""3::f#5["I S!%%S)(D)>(?
 )+S)(D)9(:
 )+S)(D)9(:'; < 			7E!277??58#<> 	? 			512499==1		734		89tyy';';<r   c           	         | j                   j                  t        j                  d             t	        j
                         }| j                  j                  |       | j                  t        j                  j                  |d      dft        j                  j                  |d      dft        j                  j                  |d      dfg      }| j                  dd	d
t        j                  j                  |d         g       | j                  t        | j                   d             | j                  g d| j                   j                          y )Nr   rI  [DEFAULT]
foo = bar-00
rJ  [DEFAULT]
foo = bar-02
rK  rL  rM  r   r.  r   )r   zbar-00zbar-01rM  )rY   r   r   r  ra   rb   rZ   rj   ru   r^   r_   rc   re   r  r  r   r   r   rQ  r
  s      r   test_config_dir_multistrz*ConfigDirTestCase.test_config_dir_multistr  s
    			""3??5#9: S!%%S)(D)9(: )+S)(D)9(: )+S)(D)9(:'; < 			7E!277??58#<> 	? 			512>		Nr   c                 D   t        j                  d      }| j                  j                  |       | j                  j	                  t        j
                  d             | j                  j	                  t        j
                  d      |       t        j                         }| j                  j                  |       | j                  t        j                  j                  |d      dfddt        j                  j                  |d	      d
fg      }| j                  ddd|d   dt        j                  j                  |d         d|d   g       | j                  t!        | j                  d             | j#                  d| j                  j$                         | j                  t!        | j                  d             | j                  t!        | j                  j&                  d             | j#                  d| j                  j&                  j(                         y )NrG  r   rH  r  rI  rT  rK  z1[snafu]
bell = whistle-01
[DEFAULT]
foo = bar-01
z03-testz1[snafu]
bell = whistle-03
[DEFAULT]
foo = bar-03
rJ  rU  rM  r   r  r  r.  r   rw  zbar-03z
whistle-03rN  rO  s       r   test_config_dir_file_precedencez1ConfigDirTestCase.test_config_dir_file_precedence  s   ll7+		  -		""3::e#45		""3::f#5["I S!%%S)(D)9(:(:
(:
 )+S)(D)9(:'; <" 			7E"E!H!277??58#<"E!H0 	1
 			512499==1		734		89tyy';';<r   c           	      D   t        j                  d      }| j                  j                  |       | j                  j	                  t        j
                  d             | j                  j	                  t        j
                  d      |       t        j                         }| j                  j                  |       | j                  t        j                  j                  |d      dfddt        j                  j                  |d	      d
fg      }| j                  dddt        j                  j                  |d         g|d   |d   g       | j                  t!        | j                  d             | j#                  d| j                  j$                         | j                  t!        | j                  d             | j                  t!        | j                  j&                  d             | j#                  d| j                  j&                  j(                         y )NrG  r   rH  r  rI  z1[DEFAULT]
foo = bar-00
[snafu]
bell = whistle-11
rY  rZ  rJ  rU  rM  r   r.  r   r  rw  )rL   rM  z
whistle-11rN  rO  s       r   'test_config_dir_default_file_precedencez9ConfigDirTestCase.test_config_dir_default_file_precedence  s   ll7+		  -		""3::e#45		""3::f#5["I S!%%S)(D)>(?
(:
(:
 )+S)(D)9(:'; <& 			7E>277??583LM(-a%('; 	 	= 			512499==1		734		89tyy';';<r   c                     t        j                         }t        j                  |       | j	                  t
        j                  | j                  d|g       y )Nr.  )ra   rb   r^   rmdirr  r   r4   rY   )r   rs   s     r   test_config_dir_doesnt_existz.ConfigDirTestCase.test_config_dir_doesnt_exist  sA    !!#
#44)))62	r   N)r9   r:   r;   rR  rW  r[  r]  r`  r<   r   r   rE  rE  u  s    =@O0#=J#=Jr   rE  c                       e Zd Zd Zy)ReparseTestCasec                 t   | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         | j                  d
dg       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  g        | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   rO  r  r  )rB   z[blaa]
foo = b
r  r   r   rf  r   )rY   r  r   r   r   r   ru   r  r  r   r   r   r	  s     r   test_reparsezReparseTestCase.test_reparse  s   		  f!56		""JJuc*& 	# 	: %% (5 '6 7 			?E!H-.		623		67diinn001		<%&		623		67diinn001		"		623		67diinn001r   N)r9   r:   r;   rd  r<   r   r   rb  rb    s    2r   rb  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)OverridesTestCasec                    | j                   j                  t        j                  dd             | j                  g        | j	                  d| j                   j
                         | j                   j                  dd        | j                  | j                   j
                         | j                   j                  d       | j	                  d| j                   j
                         y Nr   r  )	rY   r  r   r   r   r   r  r9  clear_defaultr   s    r   test_default_nonez#OverridesTestCase.test_default_none#  s    		szz%?@		"		.		eT*$))--(		&		.r   c                    | j                   j                  t        j                  d             | j                  g        | j	                  | j                   j
                         | j                   j                  dd       | j                  d| j                   j
                         | j                   j                  d       | j	                  | j                   j
                         y Nr   r   )	rY   r  r   r   r9  r   r  r   ri  r   s    r   test_no_default_overridez*OverridesTestCase.test_no_default_override,  s    		szz%01		"$))--(		eU+		.		&$))--(r   c                    | j                   j                  t        j                  dd             | j                  g        | j	                  d| j                   j
                         | j                   j                  dd       | j	                  d| j                   j
                         | j                   j                  d       | j	                  d| j                   j
                         y r  )rY   r  r   r   r   r   r  ri  r   s    r   test_default_overridez'OverridesTestCase.test_default_override5  s    		szz%?@		"		.		eU+		.		&		.r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  t        | j                   j                  ddd       y Nr   oor   r   r  r  r   )	rY   r  r   r   r   r   r  r+  r  r   s    r   test_set_default_not_in_choicesz1OverridesTestCase.test_set_default_not_in_choices>  sh    		  c!23		""3::dJ#G), 	# 	.*))//sC	Ar   c                 *   | j                   j                  t        j                  dd             | j                  g        | j	                  d| j                   j
                         | j                  t        | j                   j                  dd       y )Nr   r  r  not_really_a_int)	rY   r  r   r  r   r   r  r+  r  r   s    r    test_wrong_type_default_overridez2OverridesTestCase.test_wrong_type_default_overrideE  sd    		szz%;<		"DIIMM**dii&;&;!3	5r   c                    | j                   j                  t        j                  d             | j                   j	                  dd       | j                  g        | j                  d| j                   j                         | j                   j                  d       | j                  | j                   j                         y rl  	rY   r  r   r   r  r   r   clear_overrider9  r   s    r   test_overridezOverridesTestCase.test_overrideL  s|    		szz%01		ue,		"		.		  '$))--(r   c                    | j                   j                  t        j                  dd             | j                  g        | j	                  d| j                   j
                         | j                   j                  dd        | j                  | j                   j
                         | j                   j                  d       | j	                  d| j                   j
                         y rh  )	rY   r  r   r   r   r   r  r9  rz  r   s    r   test_override_nonez$OverridesTestCase.test_override_noneT  s    		szz%?@		"		.		ud+$))--(		  '		.r   c                 t   | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  g        | j                  | j                   j                  j                         | j                   j                  ddd       | j                  d| j                   j                  j                         | j                   j                  dd       | j                  | j                   j                  j                         y Nr   r   r  r   )rY   r  r   r   r  r   r9  r   r   r  r   ri  r   s    r   test_group_no_default_overridez0OverridesTestCase.test_group_no_default_override]  s    		  f!56		szz%0?		"$))..,,-		eU&9		 2 23		V4$))..,,-r   c                 |   | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  g        | j                  d| j                   j                  j                         | j                   j                  ddd       | j                  d| j                   j                  j                         | j                   j                  dd       | j                  d| j                   j                  j                         y )Nr   r   r  r  r   )rY   r  r   r   r  r   r   r   r   r  ri  r   s    r   test_group_default_overridez-OverridesTestCase.test_group_default_overrideg  s    		  f!56		szz%?vN		"		 2 23		eU&9		 2 23		V4		 2 23r   c                 t   | j                   j                  t        j                  d             | j                   j	                  t        j
                  d      d       | j                  | j                   j                  j                         | j                   j                  ddd       | j                  g        | j                  d| j                   j                  j                         | j                   j                  dd       | j                  | j                   j                  j                         y r  )rY   r  r   r   r  r   r9  r   r   r  r   rz  r   s    r   test_group_overridez%OverridesTestCase.test_group_overrideq  s    		  f!56		szz%0?$))..,,-		ue6:		"		 2 23		  f 5$))..,,-r   c                 P   | j                   j                  t        j                  d             | j                   j	                  dd       | j                  | j                   j                         | j                  g        | j                  | j                   j                         | j                   j	                  dd       | j                  | j                   j                         | j                   j                  d       | j                  | j                   j                         y Nr   TF)
rY   r   r   r  r  r  r   r  ri  r9  r   s    r   test_cli_bool_defaultz'OverridesTestCase.test_cli_bool_default{  s    		""3;;u#56		eT*		&		"		&		eU+'		&$))--(r   c                 P   | j                   j                  t        j                  d             | j                   j	                  dd       | j                  | j                   j                         | j                  g        | j                  | j                   j                         | j                   j	                  dd       | j                  | j                   j                         | j                   j                  d       | j                  | j                   j                         y r  )
rY   r   r   r  r  r  r   r  rz  r9  r   s    r   test_cli_bool_overridez(OverridesTestCase.test_cli_bool_override  s    		""3;;u#56		ud+		&		"		&		ue,'		  '$))--(r   c                    | j                   j                  t        j                  d             | j                   j	                  dd       | j                  g        | j                  d| j                   j                         | j                   j                  d       | j                  | j                   j                         y )Nr   TTruery  r   s    r   test__str_overridez$OverridesTestCase.test__str_override  s|    		szz%01		ud+		"/		  '$))--(r   c                     | j                   j                  t        j                  d             | j	                  t
        | j                   j                  dd       y )Nr   rv  )rY   r  r   r  r  r+  r  r   s    r   test__wrong_type_overridez+OverridesTestCase.test__wrong_type_override  s?    		szz%01*dii&<&<!3	5r   c                 ^   | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                   j                  ddd       | j                  d| j                   j                  j                         y )Nr   rr  rs  r  r  r   )
rY   r  r   r   r   r   r  r   r   rr  r   s    r   test_set_override_in_choicesz.OverridesTestCase.test_set_override_in_choices  sv    		  c!23		""3::dJ#G), 	# 	.		tS#.diikknn-r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  t        | j                   j                  ddd       y rq  )	rY   r  r   r   r   r   r  r+  r  r   s    r    test_set_override_not_in_choicesz2OverridesTestCase.test_set_override_not_in_choices  sh    		  c!23		""3::dJ#G), 	# 	.*))00$S	Br   c                    | j                   j                  t        j                  d             | j                   j	                  dd       | j                  g        | j                  | j                   j                         | j                   j                  d       | j                  | j                   j                         y )Nr   r  )	rY   r  r   r  r  r  r   rz  r9  r   s    r   test_bool_overridez$OverridesTestCase.test_bool_override  sx    		s{{512		uf-		"		&		  '$))--(r   c                    | j                   j                  t        j                  d             | j                   j	                  dd        | j                  g        | j                  | j                   j                         | j                   j                  d       | j                  | j                   j                         y rL  )rY   r  r   r  r  r9  r   rz  r   s    r   test_int_override_with_Nonez-OverridesTestCase.test_int_override_with_None  z    		szz%01		ud+		"$))--(		  '$))--(r   c                    | j                   j                  t        j                  d             | j                   j	                  dd        | j                  g        | j                  | j                   j                         | j                   j                  d       | j                  | j                   j                         y rL  )rY   r  r   r   r  r9  r   rz  r   s    r   test_str_override_with_Nonez-OverridesTestCase.test_str_override_with_None  r  r   c                    | j                   j                  t        j                  d             | j                   j	                  dddg       | j                  g        | j                  ddg| j                   j                         | j                   j                  d       | j                  | j                   j                         y )Nr   r   r   )	rY   r  r   r  r  r   r   rz  r9  r   s    r   test_List_overridez$OverridesTestCase.test_List_override  s    		s{{512		utTl3		"$tyy}}5		  '$))--(r   N)r9   r:   r;   rj  rm  ro  rt  rw  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r<   r   r   rf  rf  !  sh    /)/A5)/.4.	)	))5
.B))))r   rf  c                       e Zd Zd Zd Zy)ResetAndClearTestCasec                    | j                   j                  t        j                  d             | j                   j                  t        j                  d      d       | j	                  | j                   j
                         | j	                  | j                   j                  j                         | j                  g d       | j                  d| j                   j
                         | j                  d| j                   j                  j                         | j                   j                          | j	                  | j                   j
                         | j	                  | j                   j                  j                         y )Nr   r   r   r  )rM  r   
--blaa-barr   )
rY   r   r   r   r9  r   r   r   r   r]  r   s    r   ra  z ResetAndClearTestCase.test_clear  s    		""3::e#45		""3::e#4F"C$))--($))..,,-		78		.		 2 23		$))--($))..,,-r   c                    | j                   j                  t        j                  d             | j                   j                  t        j                  d      d       | j                   j	                  dd       | j                   j                  ddd       | j                  ddg       | j                  d| j                   j                         | j                  d| j                   j                  j                         | j                   j                          | j                  d| j                   j                         | j                  d| j                   j                  j                         | j                   j                          | j                  | j                   j                         | j                  | j                   j                  j                         y )Nr   r   r   r  rM  foofoo)rY   r   r   r   r  r  r   r   r   r   r]  rV  r9  r   s    r   0test_reset_and_clear_with_defaults_and_overrideszFResetAndClearTestCase.test_reset_and_clear_with_defaults_and_overrides  s5   		""3::e#45		""3::e#4F"C		eU+		ue6:		7H%&499==1		 2 23				.		 2 23		$))--($))..,,-r   N)r9   r:   r;   ra  r  r<   r   r   r  r    s    .".r   r  c                       e Zd Zd Zd Zy)UnregisterOptTestCasec                 8   t        j                  d      t        j                  d      g}| j                  j                  |       | j	                  t        | j                  d             | j	                  t        | j                  d             | j                  j                  |d          | j                  t        | j                  d             | j	                  t        | j                  d             | j                  g        | j                  t         j                  | j                  j                  |d          | j                  j                          | j	                  t        | j                  d             | j                  j                  |       y )Nr   r   r   r  )r   r   rY   r  r  r  rW  r  r  r   r]  unregister_optsr   optss     r   test_unregister_optz)UnregisterOptTestCase.test_unregister_opt  s   

5!3::e#45		%		512		512		  a)E23		512		"#44))22DG	= 					512		!!$'r   c                    t        j                  d      }| j                  j                  |d       | j	                  t        | j                  d             | j	                  t        | j                  j                  d             | j                  j                  |d       | j                  t        | j                  j                  d             y )Nr   r   r  )	r   r   rY   r  r  r  r   rW  r  r  s     r   test_unregister_opt_from_groupz4UnregisterOptTestCase.test_unregister_opt_from_group  s    jj		s&1		623		67		  F 378r   N)r9   r:   r;   r  r  r<   r   r   r  r    s    (0
9r   r  c                   *    e Zd Zd Zd Zd Zd Zd Zy)ImportOptTestCasec                     | j                  t        t        j                  d             t        j                  j	                  dd       | j                  t        t        j                  d             y )Nr   #oslo_config.tests.testmods.blaa_opt)r  r  r   CONF
import_optr  r   s    r   test_import_optz!ImportOptTestCase.test_import_opt   sG    623F$IJ&12r   c                 R   | j                  t        t        j                  d             t        j                  j	                  ddd       | j                  t        t        j                  d             | j                  t        t        j                  j                  d             y )Nr   r   z&oslo_config.tests.testmods.bar_foo_optr  )r  r  r   r  r  r  r   r   s    r   test_import_opt_in_groupz*ImportOptTestCase.test_import_opt_in_group%  sl    512E#K"' 	 	)%01e45r   c                 d    | j                  t        t        j                  j                  dd       y )Nr   z'oslo_config.tests.testmods.blaablaa_opt)r  ImportErrorr   r  r  r   s    r   test_import_opt_import_errrorz/ImportOptTestCase.test_import_opt_import_errror,  s%    +sxx':': "K	Mr   c                 x    | j                  t        j                  t        j                  j                  dd       y )Nblaablaar  )r  r   r   r  r  r   s    r   test_import_opt_no_such_optz-ImportOptTestCase.test_import_opt_no_such_opt0  s+    #,,chh.A.A$&K	Mr   c                 |    | j                  t        j                  t        j                  j                  ddd       y )Nr   r  r  )r  r   r    r  r  r   s    r   test_import_opt_no_such_groupz/ImportOptTestCase.test_import_opt_no_such_group4  s2    #..0C0C "G & 	 	(r   N)r9   r:   r;   r  r  r  r  r  r<   r   r   r  r    s    3
6MM(r   r  c                       e Zd Zd Zd Zd Zy)ImportGroupTestCasec                 N   | j                  t        t        j                  d             t        j                  j	                  dd       | j                  t        t        j                  d             | j                  t        t        j                  j                  d             y )Nqux&oslo_config.tests.testmods.baz_qux_optr  )r  r  r   r  import_groupr  r  r   s    r   test_import_groupz%ImportGroupTestCase.test_import_group<  sb    512e%MN%01e45r   c                 d    | j                  t        t        j                  j                  dd       y )Nr  z*oslo_config.tests.testmods.bazzz_quxxx_opt)r  r  r   r  r  r   s    r   test_import_group_import_errorz2ImportGroupTestCase.test_import_group_import_errorB  s%    +sxx'<'<!M	Or   c                 x    | j                  t        j                  t        j                  j                  dd       y )Nquxxxr  )r  r   r    r  r  r   s    r   test_import_group_no_such_groupz3ImportGroupTestCase.test_import_group_no_such_groupF  s+    #..0E0E!#K	Mr   N)r9   r:   r;   r  r  r  r<   r   r   r  r  :  s    6OMr   r  c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)RequiredOptsTestCasec                     t         j                  |        | j                  j                  t	        j
                  dd             y )NrA  Fr'  )r>   rU   rY   r  r   r   r   s    r   rU   zRequiredOptsTestCase.setUpM  s-    4 		szz%%@Ar   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   Tr'  )rB   z[DEFAULT]
foo = barr  r   r   r  r	  s     r   test_required_optz&RequiredOptsTestCase.test_required_optQ  s    		szz%$?@%% (5 '6 7 			?E!H-.		512		.r   c                     | j                   j                  t        j                  dd             | j                  ddg       | j	                  t        | j                   d             | j                  d| j                   j                         y )Nr   Tr'  rM  r   )rY   r   r   r   r  r  r   r   r   s    r   test_required_cli_optz*RequiredOptsTestCase.test_required_cli_opt\  s_    		""3::ed#CD		7E"#		512		.r   c                     | j                   j                  t        j                  dd             | j                  ddg       | j	                  t        | j                   d             | j                  d| j                   j                         y )Nr<  Tr'  z	--foo-barr  r>  )rY   r   r   r   r  r  r   r>  r   s    r   test_required_cli_opt_with_dashz4RequiredOptsTestCase.test_required_cli_opt_with_dashd  sa    		""3::i$#GH		;&'		956		 1 12r   c                     | j                   j                  t        j                  dd             | j	                  t        j
                  | j                   g        y Nr   Tr'  )rY   r  r   r   r  r&   r   s    r   test_missing_required_optz.RequiredOptsTestCase.test_missing_required_optl  s;    		szz%$?@#..		2>r   c                     | j                   j                  t        j                  dd             | j	                  t        j
                  | j                   g        y r  )rY   r   r   r   r  r&   r   s    r   rJ  z2RequiredOptsTestCase.test_missing_required_cli_optp  s;    		""3::ed#CD#..		2>r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d	| j                   j                  j                         y )
Nr   r   Tr'  r  )rB   z[blaa]
foo = barr  r   r   rz  r	  s     r   test_required_group_optz,RequiredOptsTestCase.test_required_group_optt  s    		  f!56		szz%$?vN%% (5 '6 7 			?E!H-.		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  ddg       | j                  t        | j                   d             | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         y )Nr   r   Tr'  r  rf  r   rs  r   s    r   test_required_cli_group_optz0RequiredOptsTestCase.test_required_cli_group_opt  s    		  f!56		""JJut,F 	# 	< 			<'(		623		67		 2 23r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  t        j                  | j                   g        y Nr   r   Tr'  r  )rY   r  r   r   r  r   r  r&   r   s    r   test_missing_required_group_optz4RequiredOptsTestCase.test_missing_required_group_opt  s[    		  f!56		szz%$?vN#..		2>r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                  t        j                  | j                   g        y r  )rY   r  r   r   r   r   r  r&   r   s    r   #test_missing_required_cli_group_optz8RequiredOptsTestCase.test_missing_required_cli_group_opt  s`    		  f!56		""JJut,F 	# 	<#..		2>r   c                 T   | j                   j                  t        j                  dd             | j                   j	                  dd       | j                  g        | j                  t        | j                   d             | j                  d| j                   j                         y Nr   Tr'  r   )	rY   r   r   r   r  r  r  r   r   r   s    r   test_required_opt_with_defaultz3RequiredOptsTestCase.test_required_opt_with_default  sm    		""3::ed#CD		eU+		"		512		.r   c                 T   | j                   j                  t        j                  dd             | j                   j	                  dd       | j                  g        | j                  t        | j                   d             | j                  d| j                   j                         y r  )	rY   r   r   r   r  r  r  r   r   r   s    r   test_required_opt_with_overridez4RequiredOptsTestCase.test_required_opt_with_override  sm    		""3::ed#CD		ue,		"		512		.r   N)r9   r:   r;   rU   r  r  r  r  rJ  r  r  r  r  r  r  r<   r   r   r  r  K  s?    B	//3??4	4?
?//r   r  c                       e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Z ej"                   ej&                         dk(  d      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z y)SadPathTestCasec                    | j                  g        | j                  t        | j                   d             | j                  t        t
        | j                   d       | j                  t        j                  | j                   j                  d       | j                  t        j                  | j                   j                  d       y rL  )
rY   r  r  r  AttributeErrorr  r   r   r  __getattr__r   s    r   test_unknown_attrz!SadPathTestCase.test_unknown_attr  s    		"E23.'499eD#,,diinneD#,,dii.C.CUKr   c                     | j                  g        | j                  t        | j                   d             | j                  t        t
        | j                   d       y rL  )rY   r  r  r  r  r  r   s    r   test_unknown_attr_is_attr_errorz/SadPathTestCase.test_unknown_attr_is_attr_error  s>    		"E23.'499eDr   c                    | j                   j                  t        j                  d             | j                  g        | j	                  t        | j                   d             | j                  t        | j                   j                  d             | j                  t        j                  t        | j                   j                  d       y )Nr   r   )rY   r  r   r   r  r  r  r   r  r   r  r   s    r   test_unknown_group_attrz'SadPathTestCase.test_unknown_group_attr  s~    		  f!56		"		62378#,,gtyy~~uMr   c                 z   t        j                  d      }| j                  j                  |       t        j                  d      }| j                  j                  |       | j                  g        | j	                  t        | j                  d             | j                  | j                  j                         y rL  )r   r   rY   r   r  r  r9  r   )r   rZ  opt2s      r   test_ok_duplicatez!SadPathTestCase.test_ok_duplicate  sz    jj		""3'zz% 		""4(		"		512$))--(r   c                     | j                   j                  t        j                  dd             | j	                  t        j
                  | j                   j                  t        j                  d             y )Nr   r   )r   rY   r   r   r   r  r#   r   s    r   test_error_duplicatez$SadPathTestCase.test_error_duplicate  sN    		""3::e%#@A#//))44cjj6G	Ir   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  d             | j	                  t        j
                  | j                   g        y )Nr   r   )r\  r  r   s    r   (test_error_duplicate_with_different_destz8SadPathTestCase.test_error_duplicate_with_different_dest  sV    		""3::e##>?		""3::e#45#//B?r   c                    | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j	                  t        j
                  | j                   g        y )Nr   r   )r   r   r  r   s    r   test_error_duplicate_shortz*SadPathTestCase.test_error_duplicate_short  sX    		""3::e3#?@		""3::e3#?@#//B?r   c                     | j                  g        | j                  t        j                  | j                   j                  t        j
                  d             y rL  )rY   r  r   r   r   r   r   s    r   test_already_parsedz#SadPathTestCase.test_already_parsed  s<    		"#44))44cjj6G	Ir   c                    | j                   j                  t        j                  d             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dt        j                  j                                y )Nr   
sys.stderrrM  error)rY   r  r   r  rV   rW   r   r   r   r  r  r   r  stderrr   r   s    r   test_bad_cli_argz SadPathTestCase.test_bad_cli_arg  s    		s{{512,,\2;;=IJ*dii';gszz2245gszz2245r   c                    | j                   j                   |d             | j                  t        j                  dt        j                                      | j                  t        | j                   ddg       | j                  dt        j                  j                                | j                  dt        j                  j                                y )Nr   r  rM  r   )rY   r   rV   rW   r   r   r   r  r  r   r  r  r   )r   rH  s     r   _do_test_bad_cli_valuez&SadPathTestCase._do_test_bad_cli_value  s    		""9U#34,,\2;;=IJ*dii'51ABeSZZ0023eSZZ0023r   c                 B    | j                  t        j                         y rS   )r   r   r  r   s    r   test_bad_int_argz SadPathTestCase.test_bad_int_arg  s    ##CJJ/r   c                 B    | j                  t        j                         y rS   )r   r   r  r   s    r   test_bad_float_argz"SadPathTestCase.test_bad_float_arg  s    ##CLL1r   c                     t        j                         \  }}t        j                  |       | j	                  t
        j                  | j                  d|g       y )Nr  )ra   mkstempr^   r(  r  r   r.   rY   r   rt   r_   s      r   test_conf_file_not_foundz(SadPathTestCase.test_conf_file_not_found  sC    %%'
T
		$#66))ot%<	>r   r   z&Not supported with the root privilegesc                     t        j                         \  }}t        j                  |d       | j	                  t
        j                  | j                  d|g       t        j                  |       y )Nr   r  )	ra   r  r^   chmodr  r   r1   rY   r(  r  s      r    test_conf_file_permission_deniedz0SadPathTestCase.test_conf_file_permission_denied  sS     %%'
T
u#>>))ot%<	>
		$r   c                     | j                  dg      }| j                  t        j                  | j                  d|d   g       y )N)rB   r   r  r   )ru   r  r   r7   rY   r	  s     r   test_conf_file_brokenz%SadPathTestCase.test_conf_file_broken  s>    %%&78#22))ouQx%@	Br   c                 L   | j                   j                   |d             | j                  dg      }| j                  d|d   g       | j                  t        t
        | j                   d       | j                  t        j                  | j                   j                  d       y )Nr   r  r  r   )	rY   r  ru   r  r+  r  r   r  r  )r   rH  r
  s      r   _do_test_conf_file_bad_valuez,SadPathTestCase._do_test_conf_file_bad_value  s    		y/0%% (7 '8 9 			?E!H-.*gtyy%@#22DIINNEJr   c                 B    | j                  t        j                         y rS   )r  r   r  r   s    r   test_conf_file_bad_boolz'SadPathTestCase.test_conf_file_bad_bool   s    ))#++6r   c                 B    | j                  t        j                         y rS   )r  r   r  r   s    r   test_conf_file_bad_intz&SadPathTestCase.test_conf_file_bad_int#  s    ))#**5r   c                 B    | j                  t        j                         y rS   )r  r   r  r   s    r   test_conf_file_bad_floatz(SadPathTestCase.test_conf_file_bad_float&  s    ))#,,7r   c                 $   | j                   j                  t        j                  d             | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j                  g        | j	                  t        | j                   d             | j                  d| j                   j                         | j                  d| j                   j                         y )	Nrr  r   z$oor  barbarzfoo $oo foor   zfoo  foo)	rY   r   r   r   r  r  r   r   r  r   s    r   test_str_sub_none_valuez'SadPathTestCase.test_str_sub_none_value)  s    		""3::d#34		""3::eU#CD		""3::h#NO		"		512TYY]]+TYY%5%56r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                   j	                  t        j
                  dd             | j                  g        | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   rr  r   r  r  r   z$f.oo
rY   r  r   r   r   r   r  r  r   r   r   s    r   test_str_sub_from_groupz'SadPathTestCase.test_str_sub_from_group4  s    		  c!23		""3::dF#C3"O		""3::eW#EF		"		512/r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                   j	                  t        j
                  dd             | j                  g        | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   rr  r   r  r  r   z${f.oo}r  r   s    r   "test_str_sub_from_group_with_bracez2SadPathTestCase.test_str_sub_from_group_with_brace>  s    		  c!23		""3::dF#C3"O		""3::eY#GH		"		512/r   c                     | j                  g        | j                  t        j                  | j                   j                  dd       y rl  )rY   r  r   r   r  r   s    r   test_set_default_unknown_attrz-SadPathTestCase.test_set_default_unknown_attrH  s5    		"		 5 5ue	Er   c                     | j                  g        | j                  t        j                  | j                   j                  ddd       y Nr   r   r   r  )rY   r  r   r    r  r   s    r   test_set_default_unknown_groupz.SadPathTestCase.test_set_default_unknown_groupM  s<    		"#..))//V 	 	Mr   c                     | j                  g        | j                  t        j                  | j                   j                  dd       y rl  )rY   r  r   r   r  r   s    r   test_set_override_unknown_attrz.SadPathTestCase.test_set_override_unknown_attrR  s5    		"		 6 6u	Fr   c                     | j                  g        | j                  t        j                  | j                   j                  ddd       y r!  )rY   r  r   r    r  r   s    r   test_set_override_unknown_groupz/SadPathTestCase.test_set_override_unknown_groupW  s<    		"#..))00%f 	 	Nr   N)!r9   r:   r;   r  r  r  r  r  r  r  r  r  r   r  r  r  unittestskipIfr^   getuidr  r  r  r  r  r  r  r  r  r  r"  r$  r&  r<   r   r   r  r    s    LE
N	)I
@
@
I6402> X__YRYY[A%=??B
K768	700E
M
F
Nr   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)FindFileTestCasec                 n    | j                  t        j                  | j                  j                  d       y )Nfoo.json)r  r   NotInitializedErrorrY   	find_filer   s    r   test_find_file_without_initz,FindFileTestCase.test_find_file_without_init_  s'    #11))--z	;r   c                 &   d| j                  t        j                  dfd             | j                  g        | j	                  | j                  j                  d             | j                  | j                  j                  d             y )Nz/etc/policy.jsonr   c                     | k(  S rS   r<   )r   policy_files    r   r   z8FindFileTestCase.test_find_policy_file.<locals>.<lambda>h  s    !{"2 r   r-  policy.json)rV   rW   r   rY   r9  r/  r   )r   r3  s    @r   test_find_policy_filez&FindFileTestCase.test_find_policy_filec  sp    (,,(24 	5 			"$))--j9:dii&9&9-&HIr   c                    t        j                         }| j                  j                  |       | j	                  t
        j                  j                  |d      dft
        j                  j                  |d      dfgd      }| j                  d|d   g       | j                  |d	   | j                  j                  d             y )
Nz	test.confr  r4  {}r   ro   r  r   r  ra   rb   rZ   rj   ru   r^   r_   rc   rY   r   r/  rV  s      r   &test_find_policy_file_with_config_filez7FindFileTestCase.test_find_policy_file_with_config_fileo  s     S!%%S+(F(3(5(*S-(H(,(.'/ +-	 & . 			?E!H-.q499#6#6}#EFr   c                    t        j                         }| j                  j                  |       t        j                         }| j                  j                  |       | j	                  d|d|g       | j                  dt        | j                  j                               | j                  || j                  j                  d          | j                  || j                  j                  d          y )Nr.  rw  r   r  )ra   rb   rZ   rj   rY   r   r  r   )r   dir1dir2s      r   /test_find_policy_file_with_multiple_config_dirsz@FindFileTestCase.test_find_policy_file_with_multiple_config_dirs}  s    !T"!T"		>4>?C		 5 567tyy44Q78tyy44Q78r   c                 P    | j                  g | j                  j                         y rS   )r   rY   r   r   s    r   /test_config_dirs_empty_list_when_nothing_parsedz@FindFileTestCase.test_config_dirs_empty_list_when_nothing_parsed  s    TYY223r   c                    t        j                         }| j                  j                  |       t        j                         }| j                  j                  |       | j	                  t
        j                  j                  |d      dfgd      d   }| j                  d|d|g       | j                  || j                  j                  d             y )Nr4  r7  r   r8  r   r.  r9  )r   rQ  r=  r_   s       r   %test_find_policy_file_with_config_dirz6FindFileTestCase.test_find_policy_file_with_config_dir  s     S!!T"$$rww||C'G'+'- &.)+ % --.0 			>3=>tyy22=ABr   N)	r9   r:   r;   r0  r5  r:  r>  r@  rB  r<   r   r   r+  r+  ]  s#    ;
JG
94Cr   r+  c                   J     e Zd Z G d d      Z fdZd Zd Zd Zd Z xZ	S )OptDumpingTestCasec                       e Zd Zd Zd Zy)OptDumpingTestCase.FakeLoggerc                 .    || _         || _        g | _        y rS   )	test_caseexpected_lvllogged)r   rH  rI  s      r   __init__z&OptDumpingTestCase.FakeLogger.__init__  s    &DN ,DDKr   c                     | j                   j                  || j                         | j                  j	                  ||z         y rS   )rH  r   rI  rJ  rj   )r   lvlfmtrF   s       r   logz!OptDumpingTestCase.FakeLogger.log  s2    NN&&sD,=,=>KKsTz*r   N)r9   r:   r;   rK  rO  r<   r   r   re  rF    s    	
	+r   re  c                 <    t         t        |           g d| _        y )N)rM  thisr  thatz
--blaa-keyadminz--passwdhush)rT   rD  rU   _argsr[   s    r   rU   zOptDumpingTestCase.setUp  s     $-/A
r   c                    | j                   j                  t        j                  d             | j                   j                  t        j                  dd             | j                   j	                  t        j
                  d             | j                   j                  t        j                  d      d       | j                   j                  t        j                  dd      d       | j                  |       | j                  | d      }| j                   j                  |d       | j                  g d	|j                         y )
Nr   passwdT)secretr   r   ro  r  )P********************************************************************************$Configuration options gathered from:zecommand line args: ['--foo', 'this', '--blaa-bar', 'that', '--blaa-key', 'admin', '--passwd', 'hush']config files: []P================================================================================z#config_dir                     = []z#config_file                    = []#config_source                  = []z%foo                            = thisz%passwd                         = ****z%blaa.bar                       = thatz%blaa.key                       = ****rY  )
rY   r   r   r   r  r   re  log_opt_valuesr   rJ  )r   rF   r[  s      r   _do_test_log_opt_valuesz*OptDumpingTestCase._do_test_log_opt_values  s    		""3::e#45		""3::ht#DE		  f!56		""3::e#4f=		""3::eD#A6J		$s+		  -  #MM	+r   c                 :    | j                  | j                         y rS   )r_  rU  r   s    r   test_log_opt_valuesz&OptDumpingTestCase.test_log_opt_values  s    $$TZZ0r   c                     | j                  t        j                  ddg| j                  z                | j	                  d        y )Nr   r   )rV   rW   r   rU  r_  r   s    r   !test_log_opt_values_from_sys_argvz4OptDumpingTestCase.test_log_opt_values_from_sys_argv  s4    ,,Z%4::9MNO$$T*r   c                     t        j                         }| j                  | d      }|j                  |d       | j	                  g d|j
                         y )Nr  )rY  rZ  zcommand line args: Noner[  r\  r]  rY  )r   rO   re  r^  r   rJ  )r   
empty_confr[  s      r    test_log_opt_values_empty_configz3OptDumpingTestCase.test_log_opt_values_empty_config  sJ    ^^%
s+!!&#.  #MM	+r   )
r9   r:   r;   re  rU   r_  ra  rc  rf  rw   rx   s   @r   rD  rD    s'    	+ 	+A
+<1++r   rD  c                   $    e Zd Zd Zd Zd Zd Zy)ConfigParserTestCasec                 *   | j                  dg      }i }t        j                  |d   |      }|j                          | j	                  d|       | j	                  d|       | j                  |d   d   dg       | j                  |d   d   dg       y )NrB   %[DEFAULT]
foo = bar
[BLAA]
bar = foo
r   rU  r  r   r   )ru   r   ConfigParserparser   r   )r   r
  sectionsparsers       r   test_parse_filez$ConfigParserTestCase.test_parse_file  s    %% (7 '8 9 !!%(H5i*fh'),U3eW=&)%05':r   c                    | j                  dg      }i }i }t        j                  |d   |      }|j                  |       |j	                          | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  |d   d   dg       | j                  |d   d   dg       | j                  |d   d   dg       | j                  |d   d   dg       y )Nrj  r   rU  r  r   r   r   )ru   r   rl  _add_normalizedrm  r   r   )r   r
  rn  
normalizedro  s        r   test_parse_file_with_normalizedz4ConfigParserTestCase.test_parse_file_with_normalized  s    %% (7 '8 9 
!!%(H5z*i*i,fh'fj)),U3eW=I.u5w?&)%05':F+E2UG<r   c                 ,   t        j                         5 }|j                  d       |j                          t	        j
                  |j                  i       }| j                  t        j                  |j                         d d d        y # 1 sw Y   y xY w)Ns	   foo = bar)
ra   NamedTemporaryFilerk   flushr   rl  rm  r  
ParseErrorrm  )r   tmpfilero  s      r   test_no_sectionz$ConfigParserTestCase.test_no_section  sh    ((* 	<gMM,'MMO%%gllB7Fcnnfll;	< 	< 	<s   A,B

Bc                 $   d}t        j                         }t        j                  d      5 }t        t        j
                  |d      |_        | j                  t        t        j                  j                  ||       d d d        y # 1 sw Y   y xY w)Nfakez"oslo_config.cfg.ConfigParser.parsezToo many open files)r   MockpatchIOErrorerrnoEMFILEside_effectr  r   rl  _parse_file)r   filename	namespacerm  s       r   test__parse_file_ioerrorz-ConfigParserTestCase.test__parse_file_ioerror  ss     IIK	ZZ<= 	) 'h(=!?Egs'7'7'C'CX')	) 	) 	)s   ABBN)r9   r:   r;   rp  rt  rz  r  r<   r   r   rh  rh    s    ; =,<	)r   rh  c                   R     e Zd Z fdZd Zd
dZddZd Zd Zd Z	d Z
d	 Z xZS )NamespaceTestCasec                 r    t         t        |           t        j                  | j
                        | _        y rS   )rT   r  rU   r   
_NamespacerY   nsr[   s    r   rU   zNamespaceTestCase.setUp!  s%    ,...+r   c                     d t        |      D        }| j                  |      D ],  }t        j                  j	                  || j
                         . y )Nc              3   <   K   | ]  \  }}t        |      |f  y wrS   )r   ).0r  ts      r   	<genexpr>z)NamespaceTestCase.read.<locals>.<genexpr>&  s     :A#a&!:s   )	enumerateru   r   rl  r  r  )r   textsr
  r_   s       r   readzNamespaceTestCase.read%  sE    :5)9:))%0 	8D((tww7	8r   c                 `    | j                  t        | j                  j                  |g|       y )N)rs  )r  KeyErrorr  
_get_value)r   ro  rs  s      r   assertAbsentzNamespaceTestCase.assertAbsent*  s*    (DGG$6$6%/ 	 	1r   c                 l    | j                   j                  |g||      \  }}| j                  ||       y )Nmultirs  )r  r  r   )r   ro  expectr  rs  r   r_  s          r   assertValuezNamespaceTestCase.assertValue.  s8    GG&&uE2< ' >	(r   c                 F   | j                   j                  t        j                  d             d}| j	                  |       | j                  d       | j                  |d       | j                  d       | j                  d| j                  j                  |g             y )Nr   rL  z[DEFAULT]
foo = file0
file0z[DEFAULT]
foo = file1
file1)
rY   r   r   r   r  r  r  r   r  _get_cli_value)r   ro  s     r   r  zNamespaceTestCase.test_cli3  s    		""3::e#45#		 " 	#g&		 " 	#$''"8"8#"?@r   c                 n   | j                  d       | j                  dd       | j                  ddgd       | j                  ddgd       | j                  ddgd       | j                  ddgdd       | j                  dd	       | j                  dd	gd       | j                  d
d	gdd       y )Nrk  rU  r   r   Tr  rL  r  r  r   r   )r   r   r  r  r   s    r   test_single_filez"NamespaceTestCase.test_single_file@  s    		   	!
 	+U3+eWDA+eWDAt<+eWD$( 	 	* 	%05'>5'$( 	 	*r   c                    | j                  dd       | j                  dd       | j                  dddgd       | j                  dd	       | j                  d
d       | j                  ddd	gd       | j                  dg ddd       y )Nz$[DEFAULT]
foo = bar
[BLAA]
bar = foozB[DEFAULT]
foo = barbar
[BLAA]
bar = foofoo
[bLAa]
bar = foofoofoo
r  r  r   Tr  r  r  )bLAar   	foofoofoor   )Blaar   )r   r  r  r  r  r   s    r   test_multiple_filesz%NamespaceTestCase.test_multiple_filesR  s    		 
&
	' 	+X6+eX->dK(3+65(*;4H*H# 	 	6r   c                     t        j                         }|j                  t        j                  dd               |dg       y )Nr   c                 $    | j                  d      S rL  
add_parsersubs    r   r   z8NamespaceTestCase.test_attrs_subparser.<locals>.<lambda>k      s~~e'< r   handler)r   rO   r   SubCommandOptr   r  s     r   test_attrs_subparserz&NamespaceTestCase.test_attrs_subparserh  s8    ~~c//<> 	?eWr   c                     t        j                         }|j                  t        j                  dd              | j	                  t
        |ddg       y )Nr   c                 $    | j                  d      S rL  r  r  s    r   r   z@NamespaceTestCase.test_attrs_subparser_failure.<locals>.<lambda>q  r  r   r  r   )r   rO   r   r  r  r  r  s     r   test_attrs_subparser_failurez.NamespaceTestCase.test_attrs_subparser_failuren  sE    ~~c//<> 	?*dUEN;r   )F)FF)r9   r:   r;   rU   r  r  r  r  r  r  r  r  rw   rx   s   @r   r  r     s1    ,8
1)
A*$6,<r   r  c                       e Zd Zd Zd Zy)TildeExpansionTestCasec                 2   t         j                  j                  d      }t        j                  |dd      t         j                  j                        }	 | j                  dt         j                  j                  d|      g       | j                  t        j                  dfd             | j                  | j                  j!                  |             y # t        j                  $ r%}| j                  |t        |             Y d }~d }~ww xY w)N~cfg-rv   rQ  prefixsuffixr  r   c                     | k(  S rS   r<   r   ry  s    r   r   z?TildeExpansionTestCase.test_config_file_tilde.<locals>.<lambda>  s    a7l r   )r^   r_   r   ra   mktemprq   rY   rc   r   r.   r   r   rV   rW   r   r   r/  )r   homedirtmpbasecfnfery  s       @r   test_config_file_tildez-TildeExpansionTestCase.test_config_file_tildew  s    ''$$S)//gfWM''""7+	/IIS'(BCD 	,,"$ 	% 	$))"5"5g">? ++ 	/MM'3u:..	/s   1C D1DDc                    t         j                  j                  d      }	 t        j                  |dd      }t         j                  j                  |d      | j                  t        j                  dfd             | j                  t        j                  | j                  dt         j                  j                  dt         j                  j                  |            g      }| j                  |t        |             	 t!        j"                  |       y # t$        $ r}|j&                  d	k7  r Y d }~y d }~ww xY w# 	 t!        j"                         w # t$        $ r}|j&                  d	k7  r Y d }~w d }~ww xY wxY w)
Nr  r  z.dr  r  z	glob.globc                 
    gS rS   r<   r  s    r   r   z>TildeExpansionTestCase.test_config_dir_tilde.<locals>.<lambda>  s	    wi r   r.  rw  )r^   r_   r   ra   rb   rc   rV   rW   r   r  r   r.   rY   rq   r   r   r  rmtreeOSErrorr  )r   r  rs   rj  excry  s        @r   test_config_dir_tildez,TildeExpansionTestCase.test_config_dir_tilde  s4   ''$$S)	%%'-3-13F ggll6:6GOOH00'/1 2 !!#">">"&))#1#%77<<020@0@0H$J#K$A MM&#a&)f% 99> "f% 99> "sN   C#E D 	D?%D::D?F EF 	E=#E83F 8E==F N)r9   r:   r;   r  r  r<   r   r   r  r  u  s    @ r   r  c                   H    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zy)SubCommandTestCasec                 V   d }| j                   j                  t        j                  d|             | j	                  t        | j                   d             | j                  ddg       | j	                  t        | j                   j                  d             | j	                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  d| j                   j                  j                         y )	Nc                 T    | j                  d      }|j                  dt               y )Nr   r   type)r  add_argumentint
subparsersr  s     r   add_parsersz8SubCommandTestCase.test_sub_command.<locals>.add_parsers  s%    '',CU-r   cmdr  r   10rm  r   rf  
rY   r   r   r  r  r  r  r   rm  r   r   r  s     r   test_sub_commandz#SubCommandTestCase.test_sub_command  s    	. 			""e[9	;		512		3+		v67		u56diimm001TYY]]../r   c                 V   d }| j                   j                  t        j                  d|             | j	                  t        | j                   d             | j                  ddg       | j	                  t        | j                   j                  d             | j	                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  d| j                   j                  j                         y )	Nc                     t        j                  d      }|j                  dt               | j	                  d|g       y )NF)add_helpr   r  r   )parents)argparseArgumentParserr  r  r  )r  parents     r   r  zDSubCommandTestCase.test_sub_command_with_parent.<locals>.add_parsers  s:    ,,e<FC0!!#x!8r   r  r  r   r  rm  r   rf  r  r  s     r   test_sub_command_with_parentz/SubCommandTestCase.test_sub_command_with_parent  s    	9
 			""e[9	;		512		3+		v67		u56diimm001TYY]]../r   c                 :   d }| j                   j                  t        j                  dd|             | j	                  t        | j                   d             | j                  dg       | j                  d| j                   j                  j                         y )Nc                 &    | j                  d       y Nr   r  r  s    r   r  zBSubCommandTestCase.test_sub_command_with_dest.<locals>.add_parsers      !!#&r   r  rM  )r\  r  r   )	rY   r   r   r  r  r  r   rM  rm  r  s     r   test_sub_command_with_destz-SubCommandTestCase.test_sub_command_with_dest  ss    	' 			""e)[I	K		956		3%dii//445r   c                    d }| j                   j                  t        j                  d|      d       | j	                  t        | j                   d             | j	                  t        | j                   j                  d             | j                  g d       | j	                  t        | j                   j                  j                  d             | j	                  t        | j                   j                  j                  d             | j                  d	| j                   j                  j                  j                         | j                  d
| j                   j                  j                  j                         y )Nc                 L    | j                  d      }|j                  dd       y )Nr   r  XYZr  r  r  r  s     r   r  zCSubCommandTestCase.test_sub_command_with_group.<locals>.add_parsers  s%    '',CWe4r   r  r  r   r  )r   r  Zrm  r   r   r  )rY   r   r   r  r  r  r   r  r   rm  r   r  s     r   test_sub_command_with_groupz.SubCommandTestCase.test_sub_command_with_group  s    	5 			""e[9 	# 	I		623		67		%&		 2 2F;<		 2 2E:;diinn00556diinn00445r   c                     | j                   j                  t        j                  d             | j                  g        y )Nr  )rY   r  r   r  r   s    r   test_sub_command_not_cliz+SubCommandTestCase.test_sub_command_not_cli  s*    		s0078		"r   c                    d }| j                   j                  t        j                  d|             t        j                  d      }| j                   j                  |       | j                  ddg       | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  t        | j                   d             | j                  d| j                   j                         | j                   j                          | j                   j                  |       | j                  dg       | j                  t        | j                   j                  d             | j                  d| j                   j                  j                         | j                  t        | j                   d             y )	Nc                 &    | j                  d       y r  r  r  s    r   r  zASubCommandTestCase.test_sub_command_resparse.<locals>.add_parsers  r  r   r  r  r   z	--foo=barr   rm  r   )rY   r   r   r  r   r  r  r  r   rm  r   r]  rW  r  )r   r  foo_opts      r   test_sub_command_resparsez,SubCommandTestCase.test_sub_command_resparse  sF   	' 			""e[9	; **U#		""7+		;$%		v67diimm001		512		.				  )		3%		v67diimm001E23r   c                 l   | j                   j                  t        j                  d             | j	                  t        j                  dt        j                                      | j                  t        | j                   g        | j                  dt        j                  j                                y )Nr  r  r  rY   r   r   r  rV   rW   r   r   r   r  r  r   r  r  r   r   s    r   test_sub_command_no_handlerz.SubCommandTestCase.test_sub_command_no_handler  so    		""3#4#4U#;<,,\2;;=IJ*dii4gszz2245r   c           	      6   d }| j                   j                  t        j                  dddd|             | j	                  t        j                  dt        j                                      | j                  t        | j                   dg       | j                  dt        j                  j                                | j                  dt        j                  j                                | j                  dt        j                  j                                y )	Nc                 &    | j                  d       y r  r  r  s    r   r  zBSubCommandTestCase.test_sub_command_with_help.<locals>.add_parsers  r  r   r  zfoo foozbar barz	blaa blaa)rn  rJ   r   r  r  r  )rY   r   r   r  rV   rW   r   r   r   r  r  r   r  r  r   r  s     r   test_sub_command_with_helpz-SubCommandTestCase.test_sub_command_with_help  s    	' 			""3#4#4U;DAJ:E=H	$J 	K
 	,,\2;;=IJ*dii(<i!4!4!67i!4!4!67k3::#6#6#89r   c                    d }| j                   j                  t        j                  d             | j                   j                  t        j                  d|             | j                  dg       | j                  t        j                  t        | j                   j                  d       | j                  t        j                  t        | j                   j                  d       y )Nc                 H    | j                  d      }|j                  d       y )Nr   r  r  r  s     r   r  z?SubCommandTestCase.test_sub_command_errors.<locals>.add_parsers  s     '',CW%r   r   r  r  r   r   )
rY   r   r   r  r  r  r#   r  r  r   r  s     r   test_sub_command_errorsz*SubCommandTestCase.test_sub_command_errors  s    	& 			""3;;u#56		""e[9	;		3%#//$))--O#,,gtyy}}eLr   c                    | j                   j                  t        j                  d             | j                   j                  t        j                  d             | j	                  t        j                  dt        j                                      | j                  t        | j                   g        | j                  dt        j                  j                                y )Ncmd1cmd2r  multipler  r   s    r   test_sub_command_multiplez,SubCommandTestCase.test_sub_command_multiple  s    		""3#4#4V#<=		""3#4#4V#<=,,\2;;=IJ*dii4j#**"5"5"78r   N)r9   r:   r;   r  r  r  r  r  r  r  r  r  r  r<   r   r   r  r    s5    0066426:
M9r   r  c                   6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	SetDefaultsTestCasec                    t        j                  dd      g}| j                  j                  |       t        j                  |d        | j                  g        | j                  | j                  j                         y )Nr   r  r   )r   r   rY   r  set_defaultsr9  r   r  s     r   test_default_to_nonez(SetDefaultsTestCase.test_default_to_none"  sX    

5%01		%4(		"$))--(r   c                    t        j                  d      g}| j                  j                  |       t        j                  |d       | j                  g        | j                  d| j                  j                         y )Nr   r   r  r   r   rY   r  r  r   r   r  s     r   test_default_from_nonez*SetDefaultsTestCase.test_default_from_none)  sX    

5!"		%5)		"		.r   c                    t        j                  dd      g}| j                  j                  |       t        j                  |d       | j                  g        | j                  d| j                  j                         y )Nr   r  r   r  r  r  s     r   test_change_defaultz'SetDefaultsTestCase.test_change_default0  sZ    

5%01		%5)		"		.r   c                    t        j                  dd      t        j                  dd      g}| j                  j                  |       t        j                  |dd       | j                  g        | j                  d| j                  j                         | j                  d| j                  j                         y )Nr   r  r  r   r  )r   r  )r   r   rY   r  r  r   r   r  r  s     r   test_change_default_manyz,SetDefaultsTestCase.test_change_default_many7  s    

5%0

6624		%5v6		"		.0r   c                    t        j                  dd      g}| j                  j                  |d       t        j                  |d        | j                  g        | j                  | j                  j                  j                         y )Nr   r  r   r  r  )r   r   rY   r  r  r9  r   r   r  s     r   test_group_default_to_nonez.SetDefaultsTestCase.test_group_default_to_none@  sc    

5%01		F34(		"$))..,,-r   c                    t        j                  d      g}| j                  j                  |d       t        j                  |d       | j                  g        | j                  d| j                  j                  j                         y )Nr   r   r  r   r  r   r   rY   r  r  r   r   r   r  s     r   test_group_default_from_nonez0SetDefaultsTestCase.test_group_default_from_noneG  sc    

5!"		F35)		"		 2 23r   c                    t        j                  dd      g}| j                  j                  |d       t        j                  |d       | j                  g        | j                  d| j                  j                  j                         y )Nr   r  r   r  r   r  r  r  s     r   test_group_change_defaultz-SetDefaultsTestCase.test_group_change_defaultN  se    

5%01		F35)		"		 2 23r   N)
r9   r:   r;   r  r  r  r  r  r  r  r<   r   r   r	  r	     s%    )//1.44r   r	  c                       e Zd Zd Zd Zy)DeprecatedOptionsTestCasec                     t        j                  dd      }t        j                  dd      }| j                  ||       y )NrP  oldgroupr  )r   r   r   r   d1d2s      r   test_deprecated_opts_equalz4DeprecatedOptionsTestCase.test_deprecated_opts_equalX  s6    xz:xz:R r   c                     t        j                  dd      }t        j                  dd      }| j                  ||       y )NrP  r  r  oldfoo2)r   r   assertNotEqualr   s      r   test_deprecated_opts_not_equalz8DeprecatedOptionsTestCase.test_deprecated_opts_not_equal]  s6    xz:y
;B#r   N)r9   r:   r;   r#  r'  r<   r   r   r  r  V  s    !
$r   r  c                       e Zd Zd Zd Zd Zy)!MultipleDeprecatedOptionsTestCasec                 v   | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         y Nr   r   rP  r  rj  r  rB   z[oldgroup]
oldfoo = bar
r  r   r   )
rY   r  r   r   r  r   ru   r   r   r   r	  s     r   5test_conf_file_override_use_deprecated_name_and_groupzWMultipleDeprecatedOptionsTestCase.test_conf_file_override_use_deprecated_name_and_groupe  s    		  f!56		szz%:B;E G &, 	 	-
 %% (: '; < 			?E!H-.		 2 23r   c                    | j                   j                  t        j                  d             t        j                  dd      g}| j                   j                  t        j                  d|      d       | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         y Nr   rP  r  r  r   r   r,  r  r   r   rY   r  r   r   r   r  r   ru   r   r   r   r  s      r   +test_conf_file_override_use_deprecated_optszMMultipleDeprecatedOptionsTestCase.test_conf_file_override_use_deprecated_optss  s    		  f!56$$XZ@A		szz%I%+ 	 	- %% (: '; < 			?E!H-.		 2 23r   c                    | j                   j                  t        j                  d             t        j                  dd      t        j                  dd      g}| j                   j                  t        j                  d|      d       | j                  d	g      }| j                  d
|d   g       | j                  d| j                   j                  j                         y Nr   rP  r  r  r%  	oldgroup2r   r   )rB   z[oldgroup2]
oldfoo2 = bar
r  r   r   r0  r  s      r   1test_conf_file_override_use_deprecated_multi_optszSMultipleDeprecatedOptionsTestCase.test_conf_file_override_use_deprecated_multi_opts  s    		  f!56$$XZ@$$YkBD		szz%I%+ 	 	- %% (; '< = 			?E!H-.		 2 23r   N)r9   r:   r;   r-  r1  r5  r<   r   r   r)  r)  c  s    444r   r)  c                   $    e Zd Zd Zd Zd Zd Zy)$MultipleDeprecatedCliOptionsTestCasec                 v   | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         y r+  )
rY   r  r   r   r   r   ru   r   r   r   r	  s     r   r-  zZMultipleDeprecatedCliOptionsTestCase.test_conf_file_override_use_deprecated_name_and_group  s    		  f!56		""3::e>F?I$K *0 	# 	1
 %% (: '; < 			?E!H-.		 2 23r   c                    | j                   j                  t        j                  d             t        j                  dd      g}| j                   j                  t        j                  d|      d       | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         y r/  rY   r  r   r   r   r   r   ru   r   r   r   r  s      r   r1  zPMultipleDeprecatedCliOptionsTestCase.test_conf_file_override_use_deprecated_opts  s    		  f!56$$XZ@A		""3::eW#M)/ 	# 	1 %% (: '; < 			?E!H-.		 2 23r   c                    | j                   j                  t        j                  d             t        j                  dd      t        j                  dd      g}| j                   j                  t        j                  d|      d       | j                  d	g      }| j                  d
|d   g       | j                  d| j                   j                  j                         y r3  r:  r  s      r   r5  zVMultipleDeprecatedCliOptionsTestCase.test_conf_file_override_use_deprecated_multi_opts  s    		  f!56$$XZ@$$YkBD		""3::eW#M)/ 	# 	1 %% (; '< = 			?E!H-.		 2 23r   c                    | j                   j                  t        j                  d             | j                   j                  t        j                  d             t        j                  dd      g}| j                   j                  t        j                  d|      d       | j                   j                  t        j                  d|      d       | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         | j                  d
| j                   j                  j                         | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         | j                  d| j                   j                  j                         | j                  dg      }| j                  d|d	   g       | j                  d
| j                   j                  j                         | j                  d| j                   j                  j                         y )Nr   r   rU  r  
common_optr   )rB   z[DEFAULT]
foo = bla
r  r   bla)rB   z.[DEFAULT]
foo = bla
[bar]
common_opt = blabla
blabla)rB   z1[foo]
common_opt = bla
[bar]
common_opt = blabla
)rY   r  r   r   r   r  r   ru   r   r   r=  r   r  s      r   &test_conf_file_common_deprecated_groupzKMultipleDeprecatedCliOptionsTestCase.test_conf_file_common_deprecated_group  s   		  e!45		  e!45$$U)<=		szz,:A C%* 	 	, 			szz,:A C%* 	 	, %% (7 '8 9 			?E!H-.		 8 89		 8 89%% (A 'B C 			?E!H-.		 8 89499==#;#;<%% (A 'B C 			?E!H-.		 8 89499==#;#;<r   N)r9   r:   r;   r-  r1  r5  r@  r<   r   r   r7  r7    s    444%=r   r7  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)ChoicesTestCasec                     | j                   j                  t        j                  ddg d             | j                  g        | j	                  d| j                   j
                         y )Nprotocolhttp)rE  httpsftpr   r   )rY   r   r   r   r   rD  r   s    r   test_choice_defaultz#ChoicesTestCase.test_choice_default  sP    		""3::j+1+C$E 	F 			"!3!34r   c                     | j                   j                  t        j                  dddg             | j                  ddg       | j	                  d| j                   j
                         y )Nr   r  r  r  rM  rY   r   r   r   r   r   r   s    r   test_choice_goodz ChoicesTestCase.test_choice_good  sR    		""3::e,2F+;$= 	>		7F#$/r   c                     | j                   j                  t        j                  dddg             | j	                  t
        | j                   ddg       y )Nr   r  r  r  rM  r  rI  r   s    r   test_choice_badzChoicesTestCase.test_choice_bad  sD    		""3::e,2F+;$= 	>*dii'61BCr   c                 N   | j                   j                  t        j                  dddg             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r  r  r  )rB   r  r  r   r  r	  s     r   test_conf_file_choice_valuez+ChoicesTestCase.test_conf_file_choice_value  s    		szz%(.'7 9 	: %%'L&MN		?E!H-.		512/r   c                 N   | j                   j                  t        j                  dg d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   )r   r  r  r  )rB   z[DEFAULT]
foo = 
r  r   r   r  r	  s     r   !test_conf_file_choice_empty_valuez1ChoicesTestCase.test_conf_file_choice_empty_value  s~    		szz%'; = 	> %%'H&IJ		?E!H-.		512TYY]]+r   c                 N   | j                   j                  t        j                  dd g d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  | j                   j                         y )Nr   )Nr  r  rH  )rB   z[DEFAULT]

r  r   )	rY   r  r   r   ru   r  r  r9  r   r	  s     r    test_conf_file_choice_none_valuez0ChoicesTestCase.test_conf_file_choice_none_value  s    		szz%'+'= ? 	@ %%'B&CD		?E!H-.		512$))--(r   c                 n   | j                   j                  t        j                  dddg             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       | j                  t        t        | j                   d       y )Nr   r  r  r  )rB   z[DEFAULT]
foo = bar3
r  r   )
rY   r  r   r   ru   r  r  r  r+  r  r	  s     r   test_conf_file_bad_choice_valuez/ChoicesTestCase.test_conf_file_bad_choice_value  s    		szz%(.'7 9 	: %%'L&MN		?E!H-.#22DIINNEJ*gtyy%@r   c           	      ^   | j                   j                  t        j                  dddg             | j	                  ddg      }| j                  ddd|d	   d|d
   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r  r  r  r  r  rM  r  r   r  r  r	  s     r   $test_conf_file_choice_value_overridez4ChoicesTestCase.test_conf_file_choice_value_override#  s    		""3::e,2G+<$> 	? %% (8(9': ; 			7F"E!H"E!H. 	/ 			512$))--0r   c                 l    | j                  t        j                  t        j                  dddgd       y )Nr   r  r  foobazr   r   )r  r   r  r   r   s    r   !test_conf_file_choice_bad_defaultz1ChoicesTestCase.test_conf_file_choice_bad_default5  s0    #//U#)7"3X 	 	Gr   N)r9   r:   r;   rI  rL  rN  rP  rR  rT  rV  rX  r\  r<   r   r   rB  rB    s2    50D
	0	,
)	A1$Gr   rB  c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)PortChoicesTestCasec                     | j                   j                  t        j                  ddddg             | j                  g        | j	                  d| j                   j
                         y )Nporti  r  rH  rY   r   r   r  r   r`  r   s    r   rI  z'PortChoicesTestCase.test_choice_default<  sP    		""3;;v+.,.9$6 	7 			"diinn-r   c                     | j                   j                  t        j                  dddg             | j                  ddg       | j	                  d| j                   j
                         y )Nr`  r    r  --port80ra  r   s    r   test_choice_good_with_listz.PortChoicesTestCase.test_choice_good_with_listC  sQ    		""3;;v,.:$7 	8		8T"#TYY^^,r   c                     | j                   j                  t        j                  dd             | j                  ddg       | j	                  d| j                   j
                         y )Nr`  )r  rc  r  rd  re  r  ra  r   s    r   test_choice_good_with_tuplez/PortChoicesTestCase.test_choice_good_with_tupleI  sM    		""3;;v+5$7 	8		8T"#TYY^^,r   c                     | j                   j                  t        j                  dddg             | j	                  t
        | j                   ddg       y )Nr`  r  rc  r  rd  8181)rY   r   r   r  r  r  r   s    r   rN  z#PortChoicesTestCase.test_choice_badO  sC    		""3;;v,.:$7 	8*dii(F1CDr   c                 X    | j                  t        dt        j                  dg d       y )Nzout of boundsr`  )r  i  r   r  )assertRaisesRegexr+  r   r  r   s    r   test_choice_out_rangez)PortChoicesTestCase.test_choice_out_rangeT  s%    z?"{{FN 	 	Lr   c                 N   | j                   j                  t        j                  dddg             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr`  r  rc  r  )rB   [DEFAULT]
port = 80
r  r   )	rY   r  r   r  ru   r  r  r   r`  r	  s     r   rP  z/PortChoicesTestCase.test_conf_file_choice_valueX  s    		s{{6(*Dz 3 	4 %%'K&LM		?E!H-.		623TYY^^,r   c                 n   | j                   j                  t        j                  dddg             | j	                  dg      }| j                  d|d   g       | j                  t        j                  | j                   j                  d       | j                  t        t        | j                   d       y )Nr`  r  rc  r  )rB   z[DEFAULT]
port = 8181
r  r   )
rY   r  r   r  ru   r  r  r  r+  r  r	  s     r   rV  z3PortChoicesTestCase.test_conf_file_bad_choice_valuec  s    		s{{6(*Dz 3 	4 %%'M&NO		?E!H-.#22DIINNFK*gtyy&Ar   c           	      ^   | j                   j                  t        j                  dddg             | j	                  ddg      }| j                  ddd	|d
   d	|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr`  r  rc  r  )r  ro  )r  z[DEFAULT]
port = 8080
rd  re  r  r   r  )	rY   r   r   r  ru   r  r  r   r`  r	  s     r   rX  z8PortChoicesTestCase.test_conf_file_choice_value_overriden  s    		""3;;v,.:$7 	8 %% (7(9': ; 			8T"E!H"E!H. 	/ 			623tyy~~.r   c                 l    | j                  t        j                  t        j                  dddgd       y )Nr`  r  rc  i  r[  )r  r   r  r  r   s    r   r\  z5PortChoicesTestCase.test_conf_file_choice_bad_default  s.    #//f#%t*d 	 	<r   N)r9   r:   r;   rI  rf  rh  rN  rm  rP  rV  rX  r\  r<   r   r   r^  r^  :  s2    .--E
L	-	B/$<r   r^  c                   *    e Zd Zd Zd Zd Zd Zd Zy)RegexTestCasec                    | j                   j                  t        j                  dd             | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         y )Nr   zfoo|barregexrM  r   r
   rK  r   s    r   test_regex_goodzRegexTestCase.test_regex_good  s    		""3::e4=$? 	@		7E"#		.		7E"#		.		7H%&499==1r   c                     | j                   j                  t        j                  dd             | j	                  t
        | j                   ddg       y )Nr   r   rv  rM  rI  r   s    r   test_regex_badzRegexTestCase.test_regex_bad  s?    		""3::e49$; 	<*dii'51ABr   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   r   rv  r  r  r   r  r	  s     r   test_conf_file_regex_valuez(RegexTestCase.test_conf_file_regex_value  s~    		szz%05 7 	8 %%'K&LM		?E!H-.		512		.r   c                 n   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  d| j                   j                  d       | j                  t        dt        | j                   d       y )Nr   r   rv  )rB   z[DEFAULT]
foo = other
r  r   zdoesn't match regex
rY   r  r   r   ru   rl  r  r  r+  r  r	  s     r   test_conf_file_regex_bad_valuez,RegexTestCase.test_conf_file_regex_bad_value  s    		szz%05 7 	8 %%'M&NO		?E!H-.s779N#yy~~u	6z+@&		5	:r   c                 V    | j                  t        t        j                  ddgd       y )Nr   r  r  )r   rw  )r  r+  r   r   r   s    r   test_regex_with_choicez$RegexTestCase.test_regex_with_choice  s'    *cjj& 	 	Ar   N)r9   r:   r;   rx  rz  r|  r  r  r<   r   r   rt  rt    s    2C
/
:Ar   rt  c                   $    e Zd Zd Zd Zd Zd Zy)QuotesTestCasec                 ,   | j                   j                  t        j                  dd             | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         | j                  dd	g       | j	                  d	| j                   j
                         | j                  dd
g       | j	                  d
| j                   j
                         y )Nr   TquotesrM  z	"foobar1"foobar1z	'foobar2'foobar2foobar3zfoobar4"rK  r   s    r   test_quotes_goodzQuotesTestCase.test_quotes_good  s    		""3::e59$; 	<		7K()DIIMM2		7K()DIIMM2		7I&'DIIMM2		7J'(TYY]]3r   c                 |   | j                   j                  t        j                  dd             | j	                  t
        | j                   ddg       | j	                  t
        | j                   ddg       | j	                  t
        | j                   ddg       | j	                  t
        | j                   ddg       y )	Nr   Tr  rM  z"foobar'z'foobar"z"foobarz'foobarrI  r   s    r   test_quotes_badzQuotesTestCase.test_quotes_bad  s    		""3::e59$; 	<*dii';1GH*dii';1GH*dii'91EF*dii'91EFr   c                 J   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )Nr   Tr  )rB   z[DEFAULT]
foo = "bar"
r  r   r   r  r	  s     r    test_conf_file_quotes_good_valuez/QuotesTestCase.test_conf_file_quotes_good_value  s~    		szz%15 7 	8 %%'M&NO		?E!H-.		512		.r   c                 n   | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  t        j                  d| j                   j                  d       | j                  t        dt        | j                   d       y )Nr   Tr  )rB   z[DEFAULT]
foo = "bar
r  r   zNon-closed quote:r~  r	  s     r   test_conf_file_quotes_bad_valuez.QuotesTestCase.test_conf_file_quotes_bad_value  s    		szz%15 7 	8 %%'L&MN		?E!H-.s779L#yy~~u	6z+>&		5	:r   N)r9   r:   r;   r  r  r  r  r<   r   r   r  r    s    
4G/
:r   r  c                   $    e Zd Zd Zd Zd Zd Zy)IgnoreCaseTestCasec                    | j                   j                  t        j                  ddg d             | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         y )	Nr   Tr  r  BAR3ignore_caser   rM  bAr1BaR2baR3rK  r   s    r   test_ignore_case_with_choicesz0IgnoreCaseTestCase.test_ignore_case_with_choices  s    		""3::e:>7?$@ 	A
 			7F#$/		7F#$/		7F#$/r   c                    | j                   j                  t        j                  ddd             | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         y )Nr   TzfOO|barr  rw  rM  BarFOObarrK  r   s    r   test_ignore_case_with_regexz.IgnoreCaseTestCase.test_ignore_case_with_regex  s    		""3::e:>4=$? 	@ 			7E"#		.		7E"#		.		7H%&499==1r   c                 P   | j                   j                  t        j                  ddg d             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )	Nr   Tr  r  )rB   z[DEFAULT]
foo = bAr2
r  r   bAr2r  r	  s     r   'test_conf_file_ignore_case_with_choicesz:IgnoreCaseTestCase.test_conf_file_ignore_case_with_choices  s    		szz%6:2J L 	M %%'L&MN		?E!H-.		512/r   c                 L   | j                   j                  t        j                  ddd             | j	                  dg      }| j                  d|d   g       | j                  t        | j                   d             | j                  d| j                   j                         y )	Nr   TbArr  )rB   z[DEFAULT]
foo = BaR
r  r   BaRr  r	  s     r   %test_conf_file_ignore_case_with_regexz8IgnoreCaseTestCase.test_conf_file_ignore_case_with_regex  s    		szz%6:05 7 	8 %%'K&LM		?E!H-.		512		.r   N)r9   r:   r;   r  r  r  r  r<   r   r   r  r    s    0	2	0	/r   r  c                       e Zd Zd Zd Zy)StrOptMaxLengthTestCasec                     | j                   j                  t        j                  dd             | j                  ddg       | j	                  d| j                   j
                         y )Nr   r  
max_lengthrM  12345rK  r   s    r   test_stropt_max_length_goodz3StrOptMaxLengthTestCase.test_stropt_max_length_good  sH    		""3::e#BC		7G$%$))--0r   c                     | j                   j                  t        j                  dd             | j	                  t
        | j                   ddg       y )Nr   r  r  rM  123456rI  r   s    r   test_stropt_max_length_badz2StrOptMaxLengthTestCase.test_stropt_max_length_bad  s:    		""3::e#BC*dii'81DEr   N)r9   r:   r;   r  r  r<   r   r   r  r    s    1
Fr   r  c                       e Zd Zd Zd Zy)URIOptMaxLengthTestCasec                     | j                   j                  t        j                  dd             | j                  ddg       | j	                  d| j                   j
                         y )Nr      r  rM  http://www.example.comrY   r   r   r  r   r   r   s    r   test_uriopt_max_length_goodz3URIOptMaxLengthTestCase.test_uriopt_max_length_good  sJ    		""3::e#CD		74561499==Ar   c                     | j                   j                  t        j                  dd             | j	                  t
        | j                   ddg       y )Nr   r  r  rM  zhttp://www.example.com/versionsrY   r   r   r  r  r  r   s    r   test_uriopt_max_length_badz2URIOptMaxLengthTestCase.test_uriopt_max_length_bad"  s?    		""3::e#CD*dii"$EF	Hr   N)r9   r:   r;   r  r  r<   r   r   r  r    s    B
Hr   r  c                       e Zd Zd Zd Zy)URIOptSchemesTestCasec                 L   | j                   j                  t        j                  dddg             | j                  ddg       | j	                  d| j                   j
                         | j                  ddg       | j	                  d| j                   j
                         y )Nr   rE  rG  schemesrM  r  zftp://example.com/archivesr  r   s    r   test_uriopt_schemes_goodz.URIOptSchemesTestCase.test_uriopt_schemes_good*  sy    		""3::efe_#MN		74561499==A		789:5tyy}}Er   c                     | j                   j                  t        j                  dddg             | j	                  t
        | j                   ddg       | j	                  t
        | j                   ddg       y )Nr   rE  rG  r  rM  zhttps://www.example.comzfile://www.example.comr  r   s    r   test_uriopt_schemes_badz-URIOptSchemesTestCase.test_uriopt_schemes_bad1  sb    		""3::efe_#MN*dii"$=>	@*dii"$<=	?r   N)r9   r:   r;   r  r  r<   r   r   r  r  (  s    F?r   r  c                       e Zd Zd Zd Zy)PrintHelpTestCasec                     t        j                         }|j                  g        | j                  t         j                  |j
                         y rS   )r   rO   r  r  r.  r   r   rY   s     r   test_print_help_without_initz.PrintHelpTestCase.test_print_help_without_init;  s9    ~~2#11//	+r   c                     t        j                         }|j                  g         |g        |j                          | j	                  t         j
                  |j                         y rS   )r   rO   r  r]  r  r.  r   r  s     r   test_print_help_with_clearz,PrintHelpTestCase.test_print_help_with_clearA  sI    ~~2R

#11//	+r   N)r9   r:   r;   r  r  r<   r   r   r  r  9  s    ++r   r  c                       e Zd Zd Zd Zd Zy)OptTestCasec                 |    t        j                  d      }t        j                  d      }| j                  ||       y )NrP  )r   r  r   r   s      r   test_opt_eqzOptTestCase.test_opt_eqL  s.    [["[["R r   c                 |    t        j                  d      }t        j                  d      }| j                  ||       y )NrP  oldbar)r   r  r&  r   s      r   test_opt_not_eqzOptTestCase.test_opt_not_eqQ  s.    [["[["B#r   c                 N    | j                  t        t        j                  d       y )N_foor*  r   s    r   test_illegal_namezOptTestCase.test_illegal_nameV  s    *ckk6:r   N)r9   r:   r;   r  r  r  r<   r   r   r  r  J  s    !
$
;r   r  c                       e Zd Zd Zd Zy)SectionsTestCasec                     | j                  ddg      }| j                  g |       | j                  ddg| j                  j                                y )Nztest.inirk  )	test2.inirk  r  r  rU  )ru   rY   r   list_all_sectionsr	  s     r   test_list_all_sectionsz'SectionsTestCase.test_list_all_sections[  sX    %% (7
(7	'8 	9 			r	6&),446	8r   c                 r   | j                  ddg      }| j                  g |d d        | j                  ddg| j                  j                                t	        j
                  |d   |d          | j                  j                          | j                  g d| j                  j                                y )	Nr  )r  z$[WOMBAT]
woo = war
[BLAA]
bar = foo
r  r  r  rU  r   )r  rU  WOMBAT)ru   rY   r   r  r  r  r5  r	  s     r   "test_list_all_sections_post_mutatez3SectionsTestCase.test_list_all_sections_post_mutatej  s    %% (7
(7	'8 	9 			rbq		:&),446	8 	E!HeAh'		%%'6446	8r   N)r9   r:   r;   r  r  r<   r   r   r  r  Z  s    88r   r  c                        e Zd Z fdZ xZS )DeprecationWarningTestBasec                     t         t        |           | j                  t	        j
                               | _        t        j                  | _	        y rS   )
rT   r  rU   rV   rW   re  rF  r   rl  _parser_classr[   s    r   rU   z DeprecationWarningTestBase.setUp  s9    ($57??8+>+>+@A --r   )r9   r:   r;   rU   rw   rx   s   @r   r  r    s    . .r   r  c                   n    e Zd Zd edd      fd edd      fd edd      fd	 edd      fgZd
 Zy)DeprecationWarningTestScenarioszdefault-deprecatedTrU  )
deprecatedr  zdefault-not-deprecatedFzother-deprecatedotherzother-not-deprecatedc                     | j                   j                  t        j                  dd             | j                   j	                  t        j
                  d             | j                   j                  t        j                  dd      d       | j                  rd}nd}| j                  dd	| j                  z   d
z   |z   dz   fg      }| j                  d|d   g       | j                  dk(  rM| j                  d| j                   j                         | j                  d| j                   j                         n`| j                  d| j                   j                  j                         | j                  d| j                   j                  j                         | j                  r=dt        j                  j                  d| j                  d| j                  dz  z   dz   }nd}| j                  || j                  j                         y )Nr   r   r   r  r  bar=bazzfoo=bazrB   rk  rl  rm  r  r   rU  r  Deprecated: 
dep_option	dep_groupoptionr  r   )rY   r  r   r   r  r   r  ru   r  r   r   r  r  _deprecated_opt_messagerF  r  r   contentr
  r   s       r   test_deprecated_loggingz7DeprecationWarningTestScenarios.test_deprecated_logging  s   		szz%GH		  g!67		szz%G%, 	 	.??GG%%(+djj(85(@(/)026)7(8 '9 : 			?E!H-.::"UDIIMM2UDIIMM2UDIIOO$7$78UDIIOO$7$78??&>>',&*jj#("&**...
 155H H4#3#3#:#:;r   N)r9   r:   r;   r  r  r  r<   r   r   r  r    sb     '3<)> ?*DE7@-B C$dd18': ;($%5<+> ?I<r   r  c                   4    e Zd ZdZd Zd Zd Zd Zd Zd Z	y)	DeprecationWarningTestsr  c                    t        j                  d      g}t        j                  dd      g}| j                  j                  t        j                  d             | j                  j                  t        j                  d|             | j                  j                  t        j                  d|      d       | j                  dg      }| j                  d|d	   g       | j                  d| j                  j                         | j                  d| j                  j                  j                         | j                  d
| j                  j                         | j                  d| j                  j                         y )Nr   r  r  r  r   r   )rB   z"[DEFAULT]
bar=baz
[other]
baz=baz
r  r   z!Option "bar" from group "DEFAULT"zOption "baz" from group "other")r   r   rY   r  r   r  r   ru   r   r   r  r   rF  r  )r   default_deprecatedother_deprecatedr
  s       r   test_DeprecatedOptz*DeprecationWarningTests.test_DeprecatedOpt  s;   !//67--e7CD		  g!67		szz%:L N 	O		szz%:J L%, 	 	. %% (5 '6 7
 			?E!H-.		.		 3 349&&--	/7&&--	/r   c                     t        j                  d       }dg}|j                  dd|       | j                  dddd       y )N)rU  r   rL  r   rU  r   )r   r  _check_deprecatedassert_message_logged)r   r  deprecated_lists      r   test_check_deprecatedz-DeprecationWarningTests.test_check_deprecated  sB    NN4(	-.##$6$3	5""5)UIFr   c                     t         j                  j                  ||||dz  }| j                  |dz   | j                  j
                         y )Nr  rm  )r   r  r  r   rF  r  )r   r   r  current_namecurrent_groupr   s         r   r  z-DeprecationWarningTests.assert_message_logged  sG    NN::#2"2++-- 	hot'7'7'>'>?r   c                 F   | j                   j                  t        j                  dd             | j                   j                  t        j                  dd             | j	                  dg      }| j                  d|d   g       | j                  d| j                   j                         | j                  d| j                   j                         | j                  | j                   j                         d}| j                  || j                  j                         y )	Nr   Tr  r   )rB   z[DEFAULT]
foo=bar
r  r   zoOption "foo" from group "DEFAULT" is deprecated for removal.  Its value may be silently ignored in the future.
)rY   r  r   r   ru   r   r   r9  r   r   rF  r  r   r
  r   s      r   test_deprecated_for_removalz3DeprecationWarningTests.test_deprecated_for_removal  s    		szz%AE G 	H		szz%AE G 	H%% (5 '6 7 			?E!H-.		.		.$))--(/ 	h 0 0 7 78r   c                    | j                   j                  t        j                  d             | j                   j	                  t        j
                  dd      d       | j                   j	                  t        j
                  dd      d       | j                  dg      }| j                  d|d	   g       | j                  d| j                   j                  j                         | j                  d| j                   j                  j                         | j                  | j                   j                  j                         d
}| j                  || j                  j                         y )Nr  r   Tr  r  r   )rB   z[other]
foo=bar
r  r   zmOption "foo" from group "other" is deprecated for removal.  Its value may be silently ignored in the future.
)rY   r  r   r   r  r   ru   r   r  r   r9  r   r   rF  r  r  s      r   &test_deprecated_for_removal_with_groupz>DeprecationWarningTests.test_deprecated_for_removal_with_group  s#   		  g!67		szz%AE G%, 	 	. 			szz%AE G%, 	 	. %% (5 '6 7 			?E!H-.		 3 34		 3 34$))//--./ 	h 0 0 7 78r   c                     | j                   j                  t        j                  d             | j                   j	                  t        j
                  ddd      d       d}| j                  dd	|z   d
z   fg      }| j                  d|d   g       | j                  d| j                   j                  j                         t        j                  j                  dddddz  d
z   }| j                  || j                  j                         y )Nr  r<  r   r   )r   r\  r  r  rB   z[other]
rm  r  r   r  r  )rY   r  r   r   r  r   ru   r   r  r   r  r  r   rF  r  r  s       r   test_deprecated_with_destz1DeprecationWarningTests.test_deprecated_with_dest	  s    		  g!67		szz)U/4 6%, 	 	. %%(3(/)026)7(8 '9 : 			?E!H-.		 3 34NN::#(")(%'' *.	.
 	h 0 0 7 78r   N)
r9   r:   r;   
log_prefixr  r  r  r  r  r  r<   r   r   r  r    s)      J/,G@9&9,9r   r  c                   "     e Zd ZdZ fdZ xZS ) DeprecationWarningTestsNoOsloLogr   c                 ~    t         t        |           | j                  t	        j
                  t        dd              y )Noslo_log)rT   r	  rU   rV   rW   MockPatchObjectr   r[   s    r   rU   z&DeprecationWarningTestsNoOsloLog.setUp   s.    .;= 	00j$GHr   )r9   r:   r;   r  rU   rw   rx   s   @r   r	  r	    s    JI Ir   r	  )Lr  r  r  r   rf  r^   r  r  ra   r'  r   rW   oslotestr   testscenariososlo_configr   r   load_tests_apply_scenarios
load_testsr>   r   rz   r   r   r   r  r'  rA  r  r  r^  r~  r`  r  r/  rc  r  r  r  r  r  rE  rb  rf  r  r  r  r  r  r  r+  rD  rh  r  r  r  r	  r  r)  r7  rB  r^  rt  r  r  r  r  r  r  r  r  r  r  r  r	  r<   r   r   <module>r     s      	  	  
        55
5=** 5=p+4$$ +\$4L $4NZM< ZMzE'l E'P&&\ &&RH0 H0VO0 O0dR4l R4j7\ 78J1 J1^,
 =$&^7\ ^7&^7B!_3| _3DA$| A$HQ4 Q4h<| <:E*| E*PDL D Gl Gv7< v7rK K\2l 2<i) i)X'.L '.T$9L $9N( (8M, M"\/< \/~pNl pNf<C| <C~E+ E+P9)< 9)xR< R<j*\ *Z{9 {9|34, 34l
$ 
$)4 )4XP=< P=fUGl UGpH<, H<V)AL )AX*:\ *:Z./ ./b	Fl 	F
Hl 
H?L ?"+)) +";$## ; "8| "8J. . =$&)<&@ )<&)<X =$&d98 d9&d9NI'> Ir   