
    <e                         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mZ d dl	m
Z
 d dlZd dlmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ  G d d	e          Z G d
 de          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!dddddZ"d 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, G d. d/e          Z- G d0 d1e          Z. G d2 d3e          Z/ G d4 d5e          Z0 G d6 d7e          Z1 G d8 d9e          Z2 G d: d;e          Z3 G d< d=e          Z4 G d> d?e          Z5 G d@ dAe          Z6 G dB dCe          Z7 G dD dEe          Z8 G dF dGe          Z9 G dH dIe9          Z: G dJ dKe9          Z; G dL dMe          Z<dNZ=dOZ>dPZ?dQZ@dRZA G dS dTe          ZB G dU dVe          ZC G dW dXe          ZD G dY dZej                  ZEeFd[k    r ejG                     dS dS )\    N)StringIO)support)	os_helper)make_optionOptionTitledHelpFormatterOptionParserOptionGroupSUPPRESS_USAGEOptionErrorOptionConflictErrorBadOptionErrorOptionValueErrorValues)_match_abbrev)
_parse_numc                   "    e Zd Z	 	 	 ddZd ZdS )InterceptedErrorNc                 0    || _         || _        || _        d S N)error_messageexit_statusexit_message)selfr   r   r   s       )/usr/lib/python3.11/test/test_optparse.py__init__zInterceptedError.__init__   s"     +&(    c                 "    | j         p| j        pdS )Nzintercepted error)r   r   r   s    r   __str__zInterceptedError.__str__%   s    !MT%6M:MMr   )NNN)__name__
__module____qualname__r   r     r   r   r   r      sE        #!") ) ) )N N N N Nr   r   c                       e Zd ZddZd ZdS )InterceptingOptionParserr   Nc                 $    t          ||          )N)r   r   r   )r   statusmsgs      r   exitzInterceptingOptionParser.exit)   s    6DDDDr   c                 "    t          |          )N)r   r(   )r   r*   s     r   errorzInterceptingOptionParser.error,   s    S1111r   r   N)r!   r"   r#   r+   r-   r$   r   r   r&   r&   (   s;        E E E E2 2 2 2 2r   r&   c                   8    e Zd Zd Zd Zd Z	 	 d	dZd Zd ZdS )
BaseTestc                     	 | j                             |          \  }}t          |          }|                     ||dt	                      z             |                     ||dt	                      z             ||fS )NzJ
Options are %(optdict)s.
Should be %(expected_opts)s.
Args were %(args)s.zj
Positional arguments are %(positional_args)s.
Should be %(expected_positional_args)s.
Args were %(args)s.)parser
parse_argsvarsassertEquallocals)r   argsexpected_optsexpected_positional_argsoptionspositional_argsoptdicts          r   assertParseOKzBaseTest.assertParseOK1   s    
	 &*[%;%;D%A%A"/w---  "	# 	# 	# 	*B  #	$ 	$ 	$ ))r   c           
         	 |d}|i }	  ||i | |                      dt                      z             d S # |$ r}t          |          }t          |t          j                  r6|                     |                    |          d|j        d|d           n| 	                    ||d|d|d           |cY d }~S d }~ww xY w)Nr$   znexpected exception %(expected_exception)s not raised
called %(func)r
with args %(args)r
and kwargs %(kwargs)r
z%expected exception message pattern:
/z/
actual exception message:
'''z'''
zexpected exception message:
'''z!'''
actual exception message:
''')
failr6   str
isinstancerePattern
assertTruesearchpatternr5   )r   funcr7   kwargsexpected_exceptionexpected_messageerractual_messages           r   assertRaiseszBaseTest.assertRaisesO   s>   	 <D>F	D$!&!!!. II  ii	     - " 	 	 	 XXN*BJ77 * 0 7 7 G G G 12 2 2 2   !1!1 ")* * * JJJJJJ)	s   9 CA>C<CCc                     	 	 | j                             |           |                     d           d S # t          $ r&}|                     |j        |           Y d }~d S d }~ww xY w)Nzexpected parse failure)r2   r3   assertFalser   r5   r   )r   cmdline_argsexpected_outputrK   s       r   assertParseFailzBaseTest.assertParseFail   s    		7K""<000 566666   	A 	A 	AS.@@@@@@@@@	As   4 
A$AA$r   Nc                    	 t           j        }	 	 t                      t           _        | j                            |           t           j                                        }|t           _        n/# t           j                                        }|t           _        w xY w	 |                     d           d S # t          $ r}|                     t          |t                    dt          |          z             ||k    r!|                     d|z   dz   |z   dz              |                     |j        |           |                     |j        |           Y d }~d S d }~ww xY w)Nzexpected parser.exit()z0expected output to be an ordinary string, not %rzexpected: 
'''
z'''
but got 
'''
z''')sysstdoutr   r2   r3   getvaluerO   r   rD   rA   r@   typer?   r5   r   r   )r   rP   rQ   expected_statusexpected_errorsave_stdoutoutputrK   s           r   assertOutputzBaseTest.assertOutput   s}   
 	Fj	7)%ZZ
&&|444,,..(

 ,,..(
((((
 566666   
	? 
	? 
	?OO63''Bv,,     
 ((		-?0139:<AB C C CS_o>>>S-~>>>>>>>>>
	?s*   2A- +B4 -,BB4 4
E>BEEc                 D    	 |                      ||d t          |           d S r   )rM   	TypeError)r   rG   rJ   r7   s       r   assertTypeErrorzBaseTest.assertTypeError   s(    B$dI7GHHHHHr   c                 |    |                                 }||k    r!|                     d|z   dz   |z   dz             d S )Nzhelp text failure; expected:
"z	"; got:
"z"
)format_helpfailureException)r   r2   expected_helpactual_helps       r   
assertHelpzBaseTest.assertHelp   sa    ((**-''''1 ,-#$% % % ('r   r.   )	r!   r"   r#   r=   rM   rR   r\   r_   re   r$   r   r   r0   r0   0   s        * * *<6 6 6v
7 
7 
7 &'$(	7 7 7 7:I I I% % % % %r   r0   c                       e Zd Zd Zg i f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S )TestOptionChecksc                 :    t          t                    | _        d S Nusager	   r   r2   r   s    r   setUpzTestOptionChecks.setUp       "888r   c                 L    |                      t          ||t          |           d S r   )rM   r   r   )r   rJ   r7   rH   s       r   assertOptionErrorz"TestOptionChecks.assertOptionError   s0    +tV%'7	9 	9 	9 	9 	9r   c                 <    |                      t          d           d S )Nz+at least one option string must be supplied)r_   r   r   s    r   test_opt_string_emptyz&TestOptionChecks.test_opt_string_empty   s.    [J	L 	L 	L 	L 	Lr   c                 4    |                      ddg           d S )Nz?invalid option string 'b': must be at least two characters longbrp   r   s    r   test_opt_string_too_shortz*TestOptionChecks.test_opt_string_too_short   s,    ME	 	 	 	 	r   c                 4    |                      ddg           d S )NzOinvalid short option string '--': must be of the form -x, (x any non-dash char)--ru   r   s    r   test_opt_string_short_invalidz.TestOptionChecks.test_opt_string_short_invalid   s.    4F	 	 	 	 	r   c                 4    |                      ddg           d S )NzJinvalid long option string '---': must start with --, followed by non-dashz---ru   r   s    r   test_opt_string_long_invalidz-TestOptionChecks.test_opt_string_long_invalid   s.    7G	 	 	 	 	r   c                 <    |                      ddgd d d           d S )Nz.option -b: invalid keyword arguments: bar, foo-bfoobarru   r   s    r   test_attr_invalidz"TestOptionChecks.test_attr_invalid   s6    <FD..	0 	0 	0 	0 	0r   c                 :    |                      ddgddi           d S )Nz option -b: invalid action: 'foo'r}   actionr   ru   r   s    r   test_action_invalidz$TestOptionChecks.test_action_invalid   s3    .FXu%	' 	' 	' 	' 	'r   c                 x    |                      ddgddi           |                      ddgdt          i           d S )Nz%option -b: invalid option type: 'foo'r}   rW   r   z'option -b: invalid option type: 'tuple')rp   tupler   s    r   test_type_invalidz"TestOptionChecks.test_type_invalid   sZ    3FVUO	% 	% 	% 	5FVUO	% 	% 	% 	% 	%r   c                 <    |                      ddgddd           d S )Nz4option -b: must not supply a type for action 'count'r}   countint)r   rW   ru   r   s    r   test_no_type_for_actionz(TestOptionChecks.test_no_type_for_action   s6    BFw66	8 	8 	8 	8 	8r   c                 <    |                      dddgddi           d S )Nz@option -b/--bad: must supply a list of choices for type 'choice'r}   --badrW   choiceru   r   s    r   test_no_choices_listz%TestOptionChecks.test_no_choices_list   s7    (7Ofh/	1 	1 	1 	1 	1r   c                 l    t          d          j        }|                     d|z  ddgddd           d S )N zBoption -b/--bad: choices must be a list of strings ('%s' supplied)r}   r   r   zbad choicesrW   choices)rW   r!   rp   )r   typenames     r   test_bad_choices_listz&TestOptionChecks.test_bad_choices_list   sQ    88$&(017O77		9 	9 	9 	9 	9r   c                 <    |                      ddgddd           d S )Nz1option -b: must not supply choices for type 'int'r}   r   badr   ru   r   s    r   test_no_choices_for_typez)TestOptionChecks.test_no_choices_for_type  s6    ?FUe44	6 	6 	6 	6 	6r   c                 <    |                      ddgddd           d S )Nz:option -b: 'const' must not be supplied for action 'store'r}   store   )r   constru   r   s    r   test_no_const_for_actionz)TestOptionChecks.test_no_const_for_action  6    HFw33	5 	5 	5 	5 	5r   c                 <    |                      ddgddd           d S )Nz:option -b: 'nargs' must not be supplied for action 'count'r}   r      )r   nargsru   r   s    r   test_no_nargs_for_actionz)TestOptionChecks.test_no_nargs_for_action  r   r   c                 <    |                      ddgddd           d S )Nz'option -b: callback not callable: 'foo'r}   callbackr   r   r   ru   r   s    r   test_callback_not_callablez+TestOptionChecks.test_callback_not_callable  s;    5Fz!&( (	) 	) 	) 	) 	)r   c                     d S r   r$   r   s    r   dummyzTestOptionChecks.dummy      r   c                 H    |                      ddgd| j        dd           d S )NzAoption -b: callback_args, if supplied, must be a tuple: not 'foo'r}   r   r   )r   r   callback_argsrp   r   r   s    r   test_callback_args_no_tuplez,TestOptionChecks.test_callback_args_no_tuple  sB    )Fz!%&+- -	. 	. 	. 	. 	.r   c                 H    |                      ddgd| j        dd           d S )NzBoption -b: callback_kwargs, if supplied, must be a dict: not 'foo'r}   r   r   )r   r   callback_kwargsr   r   s    r   test_callback_kwargs_no_dictz-TestOptionChecks.test_callback_kwargs_no_dict'  sB    (Fz!%(-/ /	0 	0 	0 	0 	0r   c                 <    |                      ddgddd           d S )Nz<option -b: callback supplied ('foo') for non-callback optionr}   r   r   r   ru   r   s    r   test_no_callback_for_actionz,TestOptionChecks.test_no_callback_for_action/  s;    JFw!&( (	) 	) 	) 	) 	)r   c                 <    |                      ddgddd           d S )Nz9option -b: callback_args supplied for non-callback optionr}   r   r   )r   r   ru   r   s    r    test_no_callback_args_for_actionz1TestOptionChecks.test_no_callback_args_for_action5  s;    GFw&+- -	. 	. 	. 	. 	.r   c                 <    |                      ddgddd           d S )Nz;option -b: callback_kwargs supplied for non-callback optionr}   r   r   )r   r   ru   r   s    r   "test_no_callback_kwargs_for_actionz3TestOptionChecks.test_no_callback_kwargs_for_action;  s;    IFw(-/ /	0 	0 	0 	0 	0r   c                     |                      ddg           |                      dddg           |                      dddg           d S )NzMinvalid long option string '-debug': must start with --, followed by non-dashz-debugzXoption -d: invalid long option string '-debug': must start with --, followed by non-dash-dz--debugru   r   s    r   test_no_single_dashz$TestOptionChecks.test_no_single_dashA  s|    7J	 	 	
 	(8	 	 	
 	7y!	# 	# 	# 	# 	#r   N)r!   r"   r#   rm   rp   rr   rv   ry   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r$   r   r   rg   rg      s|       9 9 9 8:" 9 9 9 9L L L  
    0 0 0
' ' '
% % %8 8 8
1 1 19 9 96 6 6
5 5 5
5 5 5
) ) )  . . .0 0 0) ) ). . .0 0 0# # # # #r   rg   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 ej        dd          d             ZdS )TestOptionParserc                     t                      | _        | j                            dddddd           | j                            dd	d
dd           d S )N-v	--verbose-n--noisy
store_trueverboser   dest-q--quiet--silentstore_false)r	   r2   
add_optionr   s    r   rm   zTestOptionParser.setUpR  sr    "nnt[$	!-I 	 	? 	? 	?tY
!.Y 	 	@ 	@ 	@ 	@ 	@r   c                 H    |                      | j        j        dd            d S )Nznot an Option instance: Noner_   r2   r   r   s    r   test_add_option_no_Optionz*TestOptionParser.test_add_option_no_OptionY  s5    T[3;T	C 	C 	C 	C 	Cr   c                 J    |                      | j        j        dd d            d S Nzinvalid argumentsr   r   s    r   !test_add_option_invalid_argumentsz2TestOptionParser.test_add_option_invalid_arguments]  s2    T[30$	> 	> 	> 	> 	>r   c                 P   | j                             d          }|                     |t                     |                     |j        ddg           |                     |j        ddg           |                     |j        d           |                     |j        d           d S )Nr   r   r   r   r   r   )	r2   
get_optionassertIsInstancer   r5   _short_opts
_long_optsr   r   )r   opt1s     r   test_get_optionz TestOptionParser.test_get_optiona  s    {%%d++dF+++)D$<888;	*BCCCl333I.....r   c                    | j                             d          }| j                             d          }| j                             d          }| j                             d          }|                     ||cxu o|cxu o|u nc            d S )Nr   r   r   r   )r2   r   rD   )r   r   opt2opt3opt4s        r   test_get_option_equalsz'TestOptionParser.test_get_option_equalsi  s    {%%d++{%%k22{%%d++{%%i0044444444444455555r   c                     |                      | j                            d                     |                      | j                            d                     d S )Nr   r   )rD   r2   
has_optionr   s    r   test_has_optionz TestOptionParser.test_has_optionp  sL    ..t44555..{;;<<<<<r   c                    |                      | j                            d          d u            |                      | j                            d          d u            |                      | j                            d          d u            |                      | j                            d          d u            |                     | j                            d                     |                     | j                            d                     |                     | j                            d                     |                     | j                            d                     |                      | j                            d                     |                      | j                            d                     d S )Nr   r   r   r   r   r   )rD   r2   r   rO   r   r   s    r   assertTrueremovedz"TestOptionParser.assertTrueremovedt  sx   ..t44<===..{;;tCDDD..t44<===..y99TABBB//55666//<<===//55666//	::;;;..t44555..z::;;;;;r   c                 b    | j                             d           |                                  d S )Nr   r2   remove_optionr   r   s    r   test_remove_short_optz&TestOptionParser.test_remove_short_opt  s0    !!$'''     r   c                 b    | j                             d           |                                  d S )Nr   r   r   s    r   test_remove_long_optz%TestOptionParser.test_remove_long_opt  s0    !!+...     r   c                 V    |                      | j        j        dd t          d           d S )Nr   zno such option 'foo')rM   r2   r   
ValueErrorr   s    r   test_remove_nonexistentz(TestOptionParser.test_remove_nonexistent  s5    $+3Xt$&<	> 	> 	> 	> 	>r   zRelies on sys.getrefcountT)cpythonc                    dg}t          j        |          }t                      }|                    dd           ||_        |                                 ~|                     |t          j        |                     d S )N*   -az	--aaarggh)rT   getrefcountr	   r   	big_thingdestroyr5   )r   r   refcountr2   s       r   test_refleakzTestOptionParser.test_refleak  sz     D	?9--$,,,$3?9#=#=>>>>>r   N)r!   r"   r#   rm   r   r   r   r   r   r   r   r   r   r   impl_detailr   r$   r   r   r   r   Q  s        @ @ @C C C> > >/ / /6 6 6= = =< < <! ! !! ! !> > > W4dCCC? ? DC? ? ?r   r   c                       e Zd Zd Zd ZdS )TestOptionValuesc                     d S r   r$   r   s    r   rm   zTestOptionValues.setUp  r   r   c                 @   t                      }|                     t          |          i            |                     |i            |                     |ddi           |                     |d           ddd}t          |          }|                     t          |          |           |                     ||           |                     |ddi           |                     |i            |                     |d           |                     |g            d S )Nr   r   r   r   )r   baz)defaults)r   r5   r4   assertNotEqual)r   valuesdicts      r   test_basicszTestOptionValues.test_basics  s   fr***$$$FUEN333FB'''R((&&&ft,,,&&&FUEN333FB'''FB'''FB'''''r   N)r!   r"   r#   rm   r   r$   r   r   r   r     s2          ( ( ( ( (r   r   c                        e Zd Zd Zd Zd ZdS )TestTypeAliasesc                 ,    t                      | _        d S r   )r	   r2   r   s    r   rm   zTestTypeAliases.setUp  s    "nnr   c                     | j                             dd           |                     | j                             d          j        d           d S )N-sr@   rW   string)r2   r   r5   r   rW   r   s    r   test_str_aliases_stringz'TestTypeAliases.test_str_aliases_string  sL    t%000//55:HEEEEEr   c                 V   | j                             dt                     |                     | j                             d          j        d           | j                             dt                     |                     | j                             d          j        d           d S )Nr  r  r  -xr   )r2   r   r@   r5   r   rW   r   r   s    r   test_type_objectz TestTypeAliases.test_type_object  s    t#...//55:HEEEt#...//55:EBBBBBr   N)r!   r"   r#   rm   r  r	  r$   r   r   r   r     sI        % % %F F FC C C C Cr   r   r   <   i  iQ )smhdc                     	 |d                                          rt          |          S t          |d d                   t          |d                  z  S # t          t          f$ r t          d|d|          w xY w)Nzoption z: invalid duration: )isdigitr   _time_unitsr   
IndexErrorr   optionoptvalues      r   _check_durationr    s    >9 	<u::uSbSz??[r%;;;
# > > >14ee<> > 	>>s   (A *A 'A=c                   V    e Zd Zej        dz   Z ej        ej                  Zeed<   dS )DurationOption)durationr  N)r!   r"   r#   r   TYPEScopyTYPE_CHECKERr  r$   r   r   r  r    s:        L=(E49V011L.Lr   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestDefaultValuesc                    t                      | _        | j                            ddd           | j                            ddd           | j                            d	d
d           | j                            dd
           | j                            dd           | j                            d           | j                            dd            ddd dd d d| _        d S )Nr   r   Tdefaultr   r   r   )r   r   r   %   rW   r#  z-mr  r  r   -tz-u)r   nr  r  tu)r	   r2   r   expectedr   s    r   rm   zTestDefaultValues.setUp  s    "nnt[$???tYY???t%<<<t%000tU333t$$$tT222%)!#$##& &r   c                 j    |                      | j                                        | j                   d S r   )r5   r2   get_default_valuesr*  r   s    r   test_basic_defaultsz%TestDefaultValues.test_basic_defaults  s.    77994=IIIIIr   c                     | j                             dd           | j                            ddd           |                     | j                                         | j                   d S )Nr   i)r'  r  )r2   set_defaultsr*  updater5   r,  r   s    r   test_mixed_defaults_postz*TestDefaultValues.test_mixed_defaults_post  sg      2 ...2D1122277994=IIIIIr   c                 P   | j                             dd           | j                             dd           | j                             d           | j                            ddd           |                     | j                                         | j                   | j                             d           | j                             dd            | j                            dd i           |                     | j                                         | j                   d S )	Nbarfblah)xyr  frobr"  z-yr6  )r2   r/  r   r*  r0  r5   r,  r   r   s    r   test_mixed_defaults_prez)TestDefaultValues.test_mixed_defaults_pre  s	     6V 444tV444t$$$67788877994=III!!$'''tT222c4[)))77994=IIIIIr   c                 F   t           | j        _        | j                            ddd           | j                            ddd           | j                            d           | j                            dd	d
d           |                     | j                                        | j                   | j        	                    d           | j                            dddd           |                     | j                                        | j                   d S )Nr   r  i,  r%  z-e6m42)r'  ih  r   )r  er'  F)
r  r2   option_classr   r/  r*  r0  r5   r,  set_process_default_valuesr   s    r   test_process_defaultz&TestDefaultValues.test_process_default  s   #1 t*cBBBt*dCCC  4 (((3Sr::;;;77994=III..u5553T==>>>77994=IIIIIr   N)r!   r"   r#   rm   r-  r1  r8  r?  r$   r   r   r   r     sm        & & & J J JJ J J
J J J
J 
J 
J 
J 
Jr   r   c                   (    e Zd Z	 d Zd Zd Zd ZdS )TestProgNamec                 V    |                      |                                |           d S r   )r5   	get_usager   r2   expected_usages      r   assertUsagezTestProgName.assertUsage  s*    ))++^<<<<<r   c                 V    |                      |                                |           d S r   )r5   get_version)r   r2   expected_versions      r   assertVersionzTestProgName.assertVersion  s+    ++--/?@@@@@r   c                    t           j        d d          }	 t          j                            ddd          t           j        d<   t          dd          }d}|                     ||           |                     |d	           |                     ||d
z   dz              |t           j        d d <   d S # |t           j        d d <   w xY w)Nr   r   zbaz.pyr   z	%prog ...z	%prog 1.2)versionzUsage: baz.py ...
z
baz.py 1.2
zlOptions:
  --version   show program's version number and exit
  -h, --help  show this help message and exit
)	rT   argvospathjoinr	   rF  rJ  re   )r   	save_argvr2   rE  s       r   test_default_prognamez"TestProgName.test_default_progname  s    HQQQK		$',,ueX>>CHQK!+{CCCF2NV^444v|444OOF*T1NNO O O $CHQQQKKK)CHQQQK####s   B	B2 2Cc                    t          ddd          }|                    d           |                    d           d}|                     ||           |                     |d           |                     ||d	z              d S )
Nthingy	%prog 0.1z%prog arg arg)progrL  rk   -h	--versionzUsage: thingy arg arg
z
thingy 0.1rM  )r	   r   rF  rJ  re   rD  s      r   test_custom_prognamez!TestProgName.test_custom_progname'  s    8&1$35 5 5 	T"""[)))20006<000 566666r   N)r!   r"   r#   rF  rJ  rS  rZ  r$   r   r   rA  rA  	  sX        
= = =A A A$ $ $"	7 	7 	7 	7 	7r   rA  c                   J    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S )TestExpandDefaultsc                     t          d          | _        d| _        d| _        | j        dz   | _        | j        dz   | _        d S )Ntest)rW  zXUsage: test [options]

Options:
  -h, --help            show this help message and exit
z"read from FILE [default: %default]z:  -f FILE, --file=FILE  read from FILE [default: foo.txt]
z7  -f FILE, --file=FILE  read from FILE [default: none]
)r	   r2   help_prefix	file_helpexpected_help_fileexpected_help_noner   s    r   rm   zTestExpandDefaults.setUp4  sU    "/// >"&"2I#J"&"2F#Gr   c                     | j                             ddd| j                   |                     | j         | j                   d S )N-f--filefoo.txtr#  help)r2   r   r`  re   ra  r   s    r   test_option_defaultz&TestExpandDefaults.test_option_defaultB  sN    tX'0$(N 	 	4 	4 	4 	T%<=====r   c                     | j                             dd| j                   | j                             dd           |                     | j         | j                   d S )Nrd  re  rh  filerf  )r2   r   r`  set_defaultre   ra  r   s    r   test_parser_default_1z(TestExpandDefaults.test_parser_default_1H  sa    tX$(N 	 	4 	4 	4	222T%<=====r   c                     | j                             dd| j                   | j                             d           |                     | j         | j                   d S )Nrd  re  rk  rf  rl  )r2   r   r`  r/  re   ra  r   s    r   test_parser_default_2z(TestExpandDefaults.test_parser_default_2N  sb    tX$(N 	 	4 	4 	4  i 000T%<=====r   c                     | j                             dd| j                   |                     | j         | j                   d S )Nrd  re  rk  r2   r   r`  re   rb  r   s    r   test_no_defaultz"TestExpandDefaults.test_no_defaultT  sI    tX$(N 	 	4 	4 	4T%<=====r   c                     | j                             ddd | j                   |                     | j         | j                   d S )Nrd  re  rg  rs  r   s    r   test_default_none_1z&TestExpandDefaults.test_default_none_1Y  sN    tX'+$(N 	 	4 	4 	4 	T%<=====r   c                     | j                             dd| j                   | j                             d            |                     | j         | j                   d S )Nrd  re  rk  rp  )r2   r   r`  r/  re   rb  r   s    r   test_default_none_2z&TestExpandDefaults.test_default_none_2_  sb    tX$(N 	 	4 	4 	4  d +++T%<=====r   c                     | j                             ddd           | j                             d           | j        dz   }|                     | j         |           d S )N-pz--probz1blow up with probability PROB [default: %default]rk  gQ?)probzF  -p PROB, --prob=PROB  blow up with probability PROB [default: 0.43]
)r2   r   r/  r_  re   r   rc   s     r   test_float_defaultz%TestExpandDefaults.test_float_defaulte  st    (D 	 	F 	F 	F 	  d +++(UV]33333r   c                     | j                             dddd           d| j         j        _        |                     | j         | j                   d S )Nrd  re  rf  z#read from FILE [default: *DEFAULT*]rg  z	*DEFAULT*)r2   r   	formatterdefault_tagre   ra  r   s    r   test_alt_expandz"TestExpandDefaults.test_alt_expandn  s\    tX'0$I 	 	K 	K 	K -8)T%<=====r   c                     | j                             dddd           d | j         j        _        | j        dz   }|                     | j         |           d S )Nrd  re  rf  zread from %default filerg  z0  -f FILE, --file=FILE  read from %default file
)r2   r   r  r  r_  re   r|  s     r   test_no_expandz!TestExpandDefaults.test_no_expandu  sg    tX'0$= 	 	? 	? 	? -1)(?@]33333r   N)r!   r"   r#   rm   ri  rn  rq  rt  rv  rx  r}  r  r  r$   r   r   r\  r\  3  s        G G G> > >> > >> > >> > >
> > >> > >4 4 4> > >4 4 4 4 4r   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S )TestStandardc                     t          dd          t          dddd          t          d	d
          g}t          t          |          | _        d S )Nr   r  r  r}   --boor   boorW   r   --fooappendr   rk   option_listr   r&   r   r2   r   r:   s     r   rm   zTestStandard.setUp  sa    t(333tW5uEEEwx888: /^;BD D Dr   c                 4    |                      dgd           d S )Nr   z-a option requires 1 argumentrR   r   s    r   test_required_valuez TestStandard.test_required_value  s!    dV%DEEEEEr   c                 6    |                      ddgd           d S )Nr}   5xz&option -b: invalid integer value: '5x'r  r   s    r   test_invalid_integerz!TestStandard.test_invalid_integer  s2    dD\E	G 	G 	G 	G 	Gr   c                 4    |                      dgd           d S )Nz--boo13zno such option: --boo13r  r   s    r   test_no_such_optionz TestStandard.test_no_such_option  s!    i[*CDDDDDr   c                 4    |                      dgd           d S )Nz--boo=x5z)option --boo: invalid integer value: 'x5'r  r   s    r   test_long_invalid_integerz&TestStandard.test_long_invalid_integer  s0    j\H	J 	J 	J 	J 	Jr   c                 <    |                      g d d d dg            d S )Nar  r   r=   r   s    r   
test_emptyzTestStandard.test_empty  s*    2T$tDDbIIIIIr   c                 D    |                      g ddd ddgdg            d S )N)r   r   z
--foo=blahz--foo=r   r4  r  r  r   s    r   "test_shortopt_empty_longopt_appendz/TestStandard.test_shortopt_empty_longopt_append  sA    ===!#D&"FF	 	 	 	 	r   c                 D    |                      g dd d g ddg            d S )N)r  r   r  r   z--foo=x)r   r   r5  r  r  r   s    r   test_long_option_appendz$TestStandard.test_long_option_append  sK    CCC!%#'#3#3#35 5 		 	 	 	 	r   c                 >    |                      dgdd d dg            d S )Nz-abcbcr  r  r   s    r   test_option_argument_joinedz(TestStandard.test_option_argument_joined  s8    F8!%d4@@	 	 	 	 	r   c                 @    |                      ddgdd d dg            d S )Nr   34r  r  r   s    r   test_option_argument_splitz'TestStandard.test_option_argument_split  s:    D$<!%d4@@	 	 	 	 	r   c                 >    |                      dgd dd dg            d S )Nz-b34"   r  r  r   s    r   #test_option_argument_joined_integerz0TestStandard.test_option_argument_joined_integer  s8    F8!%b>>	 	 	 	 	r   c                 @    |                      ddgd dd dg            d S )Nr}   -5r  r  r   s    r   +test_option_argument_split_negative_integerz8TestStandard.test_option_argument_split_negative_integer  s:    D$<!%b>>	 	 	 	 	r   c                 >    |                      dgd dd dg            d S )Nz--boo=13   r  r  r   s    r    test_long_option_argument_joinedz-TestStandard.test_long_option_argument_joined  s8    J<!%b>>	 	 	 	 	r   c                 @    |                      ddgd dd dg            d S )Nr  111o   r  r  r   s    r   test_long_option_argument_splitz,TestStandard.test_long_option_argument_split  s;    GU+!%c$??	 	 	 	 	r   c                 B    |                      ddgdd dgdg            d S )N	--foo=bar-axyzxyzr   r  r  r   s    r   test_long_option_short_optionz*TestStandard.test_long_option_short_option  s=    K1!&tUGDD	 	 	 	 	r   c                 B    |                      ddgdd dgdg            d S )N--f=barr  r  r   r  r  r   s    r   test_abbrev_long_optionz$TestStandard.test_abbrev_long_option  s=    Iw/!&tUGDD	 	 	 	 	r   c                     | j                             g           \  }}| j                                         }|                     t	          |          t	          |                     d S r   )r2   r3   r,  r5   r4   )r   r:   r7   r   s       r   test_defaultszTestStandard.test_defaults  sV    +0044$;1133hg77777r   c                 p    | j                             dddd           |                     dgd           d S )N--fozr   r  r   r   rW   r   r  z%ambiguous option: --f (--foo, --foz?)r2   r   rR   r   s    r   test_ambiguous_optionz"TestStandard.test_ambiguous_option  sX    ww$,5 	 	: 	: 	:i[D	F 	F 	F 	F 	Fr   c                 B    |                      g ddd dgdg            d S )N)r   r  r  r   r  r   r  r  r   s    r    test_short_and_long_option_splitz-TestStandard.test_short_and_long_option_split  s?    888!&tUGDD	 	 	 	 	r   c                 D    |                      g dd dddgdg            d S )N)r  r}   123r  r   {   r   r   r  r  r   s    r   *test_short_option_split_long_option_appendz7TestStandard.test_short_option_split_long_option_append  sA    EEE!%c5%.II	 	 	 	 	r   c                 B    |                      g ddd d ddg           d S )N)r   r   r   r   r  r   r  r   s    r   *test_short_option_split_one_positional_argz7TestStandard.test_short_option_split_one_positional_arg  s?    ///!&tDAA!7	$ 	$ 	$ 	$ 	$r   c                     |                      g ddd d dddg           |                      g ddd dgdg            d S )N)r   rx   r   r   rx   r  r   r   )r   rx   r  r   r  r   s    r   $test_short_option_consumes_separatorz1TestStandard.test_short_option_consumes_separator  sv    555!%d4@@!5>	+ 	+ 	+ 	777!%dE7CC	 	 	 	 	r   c                 F    |                      g ddd d dddg          f d S )N)-abrx   r  r   rt   r  r  r   r  r   s    r   &test_short_option_joined_and_separatorz3TestStandard.test_short_option_joined_and_separator  sG    888!$T$??#U+	- 	- 	. 	. 	. 	.r   c                 D    |                      g ddd dgddg           d S )N)r  -r  r   rt   r   r  r  r  r   s    r   "test_hyphen_becomes_positional_argz/TestStandard.test_hyphen_becomes_positional_arg  sA    777!$T5'BB5	" 	" 	" 	" 	"r   c                 D    |                      g dd dddgdg            d S )N)-b3r}   5r  r  r      r   r   r  r  r   s    r   test_no_append_versus_appendz)TestStandard.test_no_append_versus_append  sA    JJJ!%aGG	 	 	 	 	r   c                 @    |                      ddgdd d dg            d S )Nr   r  r  r  r   s    r   &test_option_consumes_optionlike_stringz3TestStandard.test_option_consumes_optionlike_string  s:    D%=!&tDAA	 	 	 	 	r   c                 l    | j                             dd           |                     dgd           d S )Nr&  r   r  z-testzno such option: -er  r   s    r   #test_combined_single_invalid_optionz0TestStandard.test_combined_single_invalid_option  sF    tL999gY1	3 	3 	3 	3 	3r   N)r!   r"   r#   rm   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$   r   r   r  r    s       D D DF F FG G GE E EJ J JJ J J  
    
  
  
  
  
  
  
  
8 8 8
F F F  
  
$ $ $
  . . .
" " "
  
  
3 3 3 3 3r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestBoolc                 ~    t          ddddd          t          ddd	d
          g}t          |          | _        d S )Nr   r   r   r   r   r   r   r#  r   r   r   r   r  )r   r	   r2   r  s     r   rm   zTestBool.setUp  s`    t*&2$-')	+ + +
 t(&3$-/ / /0 #999r   c                 8    |                      g ddig            d S )Nr   r   r  r   s    r   test_bool_defaultzTestBool.test_bool_default  s0    2%r?	 	 	 	 	r   c                 x    |                      dgddig           \  }}|                     |j        du            d S )Nr   r   r   Fr=   rD   r   r   r:   r7   s      r   test_bool_falsezTestBool.test_bool_false  sJ    ,,dV.7^-/1 1$ 	5011111r   c                 x    |                      dgddig           \  }}|                     |j        du            d S )Nr   r   r   Tr  r  s      r   test_bool_truezTestBool.test_bool_true#  sJ    ,,dV.7^-/1 1$ 	4/00000r   c                 <    |                      g dddig            d S )N)z-qvqr   r   r   r   r  r   s    r   test_bool_flicker_on_and_offz%TestBool.test_bool_flicker_on_and_off)  s7    ///%q>	 	 	 	 	r   N)r!   r"   r#   rm   r  r  r  r  r$   r   r   r  r    s_        
: 
: 
:  
2 2 21 1 1    r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )
TestChoicec                 |    t          t                    | _        | j                            ddddg d           d S )Nrj   -cr   r   )onetwothree)r   rW   r   r   r&   r   r2   r   r   s    r   rm   zTestChoice.setUp/  sT    .^DDDtG($,6M6M6M 	 	O 	O 	O 	O 	Or   c                 >    |                      g dddidg           d S )N)r  r  r  r   r  r  r  r   s    r   test_valid_choicezTestChoice.test_valid_choice4  s:    ///$e,!7	$ 	$ 	$ 	$ 	$r   c                 6    |                      g dd           d S )N)r  fourabczEoption -c: invalid choice: 'four' (choose from 'one', 'two', 'three')r  r   s    r   test_invalid_choicezTestChoice.test_invalid_choice9  s8    222C	D 	D 	D 	D 	Dr   c                     | j                             ddg d           | j                             d          }|                     |j        d           |                     |j        d           d S )Nr   z	--default)r  fivesix)r   r   r   )r2   r   r   r5   rW   r   r   r  s     r   test_add_choice_optionz!TestChoice.test_add_choice_option>  s|    t['>'>'> 	 	@ 	@ 	@k$$T**8,,,W-----r   N)r!   r"   r#   rm   r  r  r  r$   r   r   r  r  .  sV        O O O
$ $ $
D D D
. . . . .r   r  c                   b    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S )	TestCountc                    t          t                    | _        t          ddd          | _        | j                            | j                   | j                            ddd           | j                            d	d
ddd           d S )Nrj   r   r   r   r   r   r   r  r   r   store_constr   r   r   r   )r&   r   r2   r   v_optr   r   s    r   rm   zTestCount.setUpF  s    .^DDD gIFFF
tz***{YGGGtY&3)1 	 	N 	N 	N 	N 	Nr   c                 8    |                      g dd ig            d S )Nr   r  r   s    r   r  zTestCount.test_emptyN  s%    2	40"55555r   c                 :    |                      dgddig            d S )Nr   r   r   r  r   s    r   test_count_onezTestCount.test_count_oneQ  s&    D6Iq>266666r   c                 :    |                      dgddig            d S )N-vvvr      r  r   s    r   test_count_threezTestCount.test_count_threeT  s&    F8i^R88888r   c                 <    |                      g dddig            d S )N)r   r   r   r   r  r  r   s    r   test_count_three_apartz TestCount.test_count_three_apartW  s+    ---	1~rBBBBBr   c                 <    |                      ddgddig            d S )Nr  --verbose=2r   r   r  r   s    r   test_count_override_amountz$TestCount.test_count_override_amountZ  s)    FM2YNBGGGGGr   c                 <    |                      g dddig            d S )N)r  r  r   r   r   r  r   s    r   test_count_override_quietz#TestCount.test_count_override_quiet]  s+    8889a."MMMMMr   c                 <    |                      g dddig            d S )Nr  r  r   r   r   r   r  r   s    r   test_count_overridingzTestCount.test_count_overriding`  s6    >>>%q>2	/ 	/ 	/ 	/ 	/r   c                 >    |                      g dddidg           d S )Nr   3r   r   r   r  r  r   s    r   test_count_interspersed_argsz&TestCount.test_count_interspersed_argsd  s9    111%q>5	" 	" 	" 	" 	"r   c                 r    | j                                          |                     g dddiddg           d S )Nr  r   r   r  r   )r2   disable_interspersed_argsr=   r   s    r   test_count_no_interspersed_argsz)TestCount.test_count_no_interspersed_argsi  sO    --///111%q>;	( 	( 	( 	( 	(r   c                 6    |                      ddgd           d S )Nz-q3r   zno such option: -3r  r   s    r   test_count_no_such_optionz#TestCount.test_count_no_such_optiono  s#    eT],@AAAAAr   c                 6    |                      ddgd           d S )Nz	--quiet=3r   z$--quiet option does not take a valuer  r   s    r   test_count_option_no_valuez$TestCount.test_count_option_no_valuer  s3    k40C	E 	E 	E 	E 	Er   c                 n    | j                             dd           |                     g ddig            d S )Nr   r   r2   rm  r=   r   s    r   test_count_with_defaultz!TestCount.test_count_with_defaultv  s<    	1---2	!}b11111r   c                 r    | j                             dd           |                     g dddig            d S )Nr   r   r  r   r%  r   s    r   test_count_overriding_defaultz'TestCount.test_count_overriding_defaultz  sN    	1--->>>%q>2	/ 	/ 	/ 	/ 	/r   N)r!   r"   r#   rm   r  r
  r  r  r  r  r  r  r  r!  r#  r&  r(  r$   r   r   r  r  E  s        N N N6 6 67 7 79 9 9C C CH H HN N N/ / /" " "
( ( (B B BE E E2 2 2/ / / / /r   r  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestMultipleArgsc                 z    t          t                    | _        | j                            dddddd           d S )	Nrj   rz  --pointr   r  floatpointr   r   rW   r   r  r   s    r   rm   zTestMultipleArgs.setUp  sO    .^DDDtY&-QW7 	 	T 	T 	T 	T 	Tr   c                 @    |                      g dddiddg           d S )N)r   rz  12.5z-4.3r  r.  )g      ?      @g333333r   r  r  r   s    r   test_nargs_with_positional_argsz0TestMultipleArgs.test_nargs_with_positional_args  s=    CCC#%56!5>	+ 	+ 	+ 	+ 	+r   c                 >    |                      g dddidg           d S )N)r,  -1r2  z-0r  r.  )g      r3  g       r  r  r   s    r   test_nargs_long_optz$TestMultipleArgs.test_nargs_long_opt  s;    @@@#%67!7	$ 	$ 	$ 	$ 	$r   c                 6    |                      g dd           d S )N)rz  1.02x3.5z-option -p: invalid floating-point value: '2x'r  r   s    r   test_nargs_invalid_float_valuez/TestMultipleArgs.test_nargs_invalid_float_value  s8    777B	C 	C 	C 	C 	Cr   c                 6    |                      g dd           d S )N)r,  r9  r;  z#--point option requires 3 argumentsr  r   s    r   test_nargs_required_valuesz+TestMultipleArgs.test_nargs_required_values  s5    666B	D 	D 	D 	D 	Dr   N)r!   r"   r#   rm   r4  r7  r<  r>  r$   r   r   r*  r*    sj        T T T
+ + +
$ $ $
C C C
D D D D Dr   r*  c                   ,    e Zd Zd Zd Zd Zd Zd ZdS )TestMultipleArgsAppendc                     t          t                    | _        | j                            dddddd           | j                            d	d
dddd           | j                            ddddd           d S )Nrj   rz  r,  r   r  r-  r.  r/  rd  r  r  r   r   r   -z--zeroappend_constr   r   r  r  r   s    r   rm   zTestMultipleArgsAppend.setUp  s    .^DDDtYwa$+' 	 	; 	; 	;tWXQ$) 	 	7 	7 	7tXn$) 	 	9 	9 	9 	9 	9r   c                 D    |                      g dd ddgddg           d S )N)rd  4-3r4  r  r1  666)   )r   i  r.  r   r4  r  r   s    r   test_nargs_appendz(TestMultipleArgsAppend.test_nargs_append  sB    III%)7H2EFF"8	% 	% 	% 	% 	%r   c                 4    |                      dgd           d S )Nz-f4,3z-f option requires 2 argumentsr  r   s    r   !test_nargs_append_required_valuesz8TestMultipleArgsAppend.test_nargs_append_required_values  s+    gY=	? 	? 	? 	? 	?r   c                 @    |                      ddgd dgdg            d S )Nz--foo=3rG  r  rJ  rL  r  r   s    r   test_nargs_append_simplez/TestMultipleArgsAppend.test_nargs_append_simple  s;    Is+%)&::	 	 	 	 	r   c                 B    |                      g dd g ddg            d S )N)rC  r  r  rG  rB  )rE  rQ  rE  rL  r  r   s    r   test_nargs_append_constz.TestMultipleArgsAppend.test_nargs_append_const  sB    >>>%)1I1I1IJJ	 	 	 	 	r   N)r!   r"   r#   rm   rM  rO  rR  rT  r$   r   r   r@  r@    s_        9 9 9% % %
? ? ?  
    r   r@  c                       e Zd Zd Zd ZdS )TestVersionc                 R   t          t          d          | _        t          j        d d          }	 t
          j                            t
          j        dd          t          j        d<   | 	                    dgd           |t          j        d d <   d S # |t          j        d d <   w xY w)NrV  )rk   rL  r   r   r   rY  zbar 0.1
)
r&   r   r2   rT   rN  rO  rP  rQ  curdirr\   )r   rR  s     r   test_versionzTestVersion.test_version  s    .^7BD D DHQQQK		$',,ry%??CHQK{m[999#CHQQQKKK)CHQQQK####s   AB B&c                 h    t          t                    | _        |                     dgd           d S )Nrj   rY  zno such option: --version)r&   r   r2   rR   r   s    r   test_no_versionzTestVersion.test_no_version  s=    .^DDDk]8	: 	: 	: 	: 	:r   N)r!   r"   r#   rY  r[  r$   r   r   rV  rV    s2        $ $ $: : : : :r   rV  c                   "    e Zd Z	 d Zd Zd ZdS )TestConflictingDefaultsc                 T    t          t          dddd          g          | _        d S )Nr   r   r   r   r  r  )r	   r   r2   r   s    r   rm   zTestConflictingDefaults.setUp  s9    "\	1MMM0O P P Pr   c                 t    | j                             dddd           |                     g ddig            d S )Nr   r   r   r   r  r2   r   r=   r   s    r   test_conflict_defaultz-TestConflictingDefaults.test_conflict_default  sL    tM	'( 	 	* 	* 	*2	1~r22222r   c                 t    | j                             dddd            |                     g dd ig            d S )Nr   r   r   r  r`  r   s    r   test_conflict_default_nonez2TestConflictingDefaults.test_conflict_default_none  sM    tM	'+ 	 	- 	- 	-2	40"55555r   N)r!   r"   r#   rm   ra  rc  r$   r   r   r]  r]    sG        >P P P3 3 3
6 6 6 6 6r   r]  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestOptionGroupc                 :    t          t                    | _        d S ri   rl   r   s    r   rm   zTestOptionGroup.setUp  rn   r   c                     t          | j        d          }| j                            |           |                    ddd           |                     dgddig            d S )NSpamz--spamr   zspam spam spam spamr   rh  spamr   )r
   r2   add_option_groupr   r=   r   groups     r   !test_option_group_create_instancez1TestOptionGroup.test_option_group_create_instance  sq    DK00$$U+++,3 	 	5 	5 	5H:{B77777r   c                 H    |                      | j        j        dd            d S )Nz!not an OptionGroup instance: Noner_   r2   rk  r   s    r   test_add_group_no_groupz'TestOptionGroup.test_add_group_no_group  s5    T[9@$	H 	H 	H 	H 	Hr   c                 J    |                      | j        j        dd d            d S r   rp  r   s    r    test_add_group_invalid_argumentsz0TestOptionGroup.test_add_group_invalid_arguments  s2    T[90$	> 	> 	> 	> 	>r   c                     t          | j        d          }t                      |_        |                     | j        j        |fd t
          d           d S )Nrh  z"invalid OptionGroup (wrong parser))r
   r2   r	   rM   rk  r   rl  s     r   test_add_group_wrong_parserz+TestOptionGroup.test_add_group_wrong_parser  sX    DK00#~~$+6$$&J	L 	L 	L 	L 	Lr   c                     | j                             dd          }|                    d           |                    dd           |                     | j                             d          |           d S )NzGroup 2zSome more options)descriptionBaconz--baconr   r  )r2   rk  	set_titler   rD   get_option_grouprl  s     r   test_group_manipulatez%TestOptionGroup.test_group_manipulate  sz    ,,Y9L - N N   ///44Y??GGGGGr   N)	r!   r"   r#   rm   rn  rq  rs  ru  r{  r$   r   r   re  re    sy        9 9 98 8 8H H H> > >L L LH H H H Hr   re  c                   H    e Zd Zd Zd Z G d de          Zd Zd Zd Z	dS )	TestExtendAddTypesc                     t          t          | j                  | _        | j                            dd dd           | j                            dddd           d S )	N)rk   r=  r   r  r  r  rd  re  rl  )r&   r   MyOptionr2   r   r   s    r   rm   zTestExtendAddTypes.setUp  sf    .^<@MK K KtTsCCCtXFHHHHHr   c                 *   t           j                            t          j                  r t          j        t          j                   d S t           j                            t          j                  r t          j        t          j                   d S d S r   )rO  rP  isdirr   TESTFNrmdirisfileunlinkr   s    r   tearDownzTestExtendAddTypes.tearDown   sp    7==)** 	(HY%&&&&&W^^I,-- 	(Ii&'''''	( 	(r   c                   \    e Zd Zd Zej        dz   Z ej        ej                  Zeed<   dS )TestExtendAddTypes.MyOptionc                     t           j                            |          st          d|z            t           j                            |          st          d|z            |S )N%s: file does not exist%s: not a regular file)rO  rP  existsr   r  r  s      r   
check_filez&TestExtendAddTypes.MyOption.check_file  s]    7>>%(( I&'@5'HIIIW^^E** I&'?%'GHHHLr   rp  rl  N)r!   r"   r#   r  r   r  r  r  r$   r   r   r  r    sK        	 	 	 y( ty!455)Vr   r  c                     t          j        t           j                   |                     dt           j        dgt           j        ddg            d S )Nre  -afoor   )rl  r  )r   create_empty_filer  r=   r   s    r   test_filetype_okz#TestExtendAddTypes.test_filetype_ok  sU    #I$4555Hi&6@$-$45AA	 	 	 	 	r   c                 f    |                      dt          j        dgdt          j        z             d S )Nre  r  r  )rR   r   r  r   s    r   test_filetype_noexistz(TestExtendAddTypes.test_filetype_noexist  s>    h	(8'B6&-.	/ 	/ 	/ 	/ 	/r   c                     t          j        t          j                   |                     dt          j        dgdt          j        z             d S )Nre  r  r  )rO  mkdirr   r  rR   r   s    r   test_filetype_notfilez(TestExtendAddTypes.test_filetype_notfile  sQ    
!"""h	(8'B5&-.	/ 	/ 	/ 	/ 	/r   N)
r!   r"   r#   rm   r  r   r  r  r  r  r$   r   r   r}  r}    s        I I I( ( (
* 
* 
* 
* 
*F 
* 
* 
*  / / /
/ / / / /r   r}  c                   <    e Zd Zd Z G d de          Zd Zd ZdS )TestExtendAddActionsc                 f    |                      ddddd          g}t          |          | _        d S )Nr   --appleextendr  appler  r  )r  r	   r2   r  s     r   rm   zTestExtendAddActions.setUp%  s@    ==y&.W ! > > ?"w777r   c                   P    e Zd Zej        dz   Zej        dz   Zej        dz   Zd ZdS )TestExtendAddActions.MyOption)r  c           	          |dk    r@|                     d          }|                    |g                               |           d S t          j        | ||||||           d S )Nr  ,)splitensure_valuer  r   take_action)r   r   r   r  r  r   r2   lvalues           r   r  z)TestExtendAddActions.MyOption.take_action/  sv    !!S))##D"--44V<<<<<"4sFE#)+ + + + +r   N)r!   r"   r#   r   ACTIONSSTORE_ACTIONSTYPED_ACTIONSr  r$   r   r   r  r  *  sI        .;.,{:,{:	+ 	+ 	+ 	+ 	+r   r  c                 @    |                      ddgdg dig            d S )Nz	-afoo,barz--apple=blahr  )r   r   r4  r  r   s    r   test_extend_add_actionz+TestExtendAddActions.test_extend_add_action7  s=    K8#%;%;%;<	 	 	 	 	r   c                 @    |                      g ddg dig            d S )N)r   r   z-abarz--apple=x,yr  )r   r   r5  r6  r  r   s    r   test_extend_add_action_normalz2TestExtendAddActions.test_extend_add_action_normal<  s?    @@@#%=%=%=>	 	 	 	 	r   N)r!   r"   r#   rm   r   r  r  r  r$   r   r   r  r  $  sk        8 8 8
+ + + + +F + + +  
    r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestCallbackc           	          t          dd d| j                  t          ddd| j        dd          g}t          |	          | _        d S )
Nr  r   r   rd  re  r  filename)r   r   rW   r   r  )r   process_optr	   r2   r  s     r   rm   zTestCallback.setUpD  si    t#&0(,(8: : : t'&0(,(8$,$.0 0 0		1 #w777r   c                    |dk    r|                      |j        dg           |                      |j        g            |                     || j        u            |                     |d u            |                      t          |j                  dd i           d|j        _        d S |dk    r|                      |j        dg           |                      |j        dg           |                     || j        u            |                      |d           |                      t          |j                  d dd           t          |j        |j	        |           d S | 
                    d|z             d S )	Nr  r  r   re  rd  r   r  r5  z!Unknown option %r in process_opt.)r5   r   r   rD   r2   r4   r   r5  setattrr   r?   r   r  r  r  parser_s        r   r  zTestCallback.process_optQ  ss   $;;V/$888V.333OOGt{2333OOETM***T'.11J3EFFF!GNH__V/$888V.
;;;OOGt{2333UE***T'.1123N3NOOOGNFK77777II9C?@@@@@r   c                 >    |                      ddgdddg            d S )Nr  z
--file=foor   r   r  r  r   s    r   test_callbackzTestCallback.test_callbacke  s9    D,/(-B77	 	 	 	 	r   c                     t          t                    }|                    d           |                    dddd dd	           d
}|                     ||           d S )Nrj   rX  r&  z--testr   c                      d S r   r$   r$   r   r   <lambda>z1TestCallback.test_callback_help.<locals>.<lambda>q  s    4 r   r  r   )r   r   rW   rh  z%Options:
  -t TEST, --test=TEST  foo
)r	   r   r   r   re   )r   r2   rc   s      r   test_callback_helpzTestCallback.test_callback_helpj  sv     N333T"""$#/<h$ 	 	& 	& 	&9.....r   N)r!   r"   r#   rm   r  r  r  r$   r   r   r  r  C  sS        8 8 8A A A(  
/ / / / /r   r  c                        e Zd Zd Zd Zd ZdS )TestCallbackExtraArgsc           
      x    t          ddd| j        dt          fddg           g}t          |          | _        d S )	Nrz  r,  r   r  r  points)r   r   r   rW   r   r#  r  )r   process_tupler   r	   r2   r  s     r   rm   zTestCallbackExtraArgs.setUpz  sM    tYz(,(:./XH$,b: : : ; #w777r   c                    |                      |d           |                     |t          u            |dk    r|                      |d           n|dk    r|                      |d           t          t	          ||                    d                              }t          |j        |j                  	                    |           d S )Nr  rz  z1,2,3r,  4,5,6r  )
r5   rD   r   r   mapr  getattrr   r   r  )r   r  r  r  r  lenrW   s          r   r  z#TestCallbackExtraArgs.process_tuple  s    a   $$$$;;UG,,,,IUG,,,c$C 0 01122,,33E:::::r   c                 @    |                      g ddddgig            d S )N)z-p1,2,3r,  r  r  r   r   r  )rJ  r     r  r   s    r   test_callback_extra_argsz.TestCallbackExtraArgs.test_callback_extra_args  s=    :::$w&89	 	 	 	 	r   N)r!   r"   r#   rm   r  r  r$   r   r   r  r  y  sA        8 8 8
; 
; 
;    r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestCallbackMeddleArgsc                 l      fdt          ddd          D             }t          |           _        d S )Nc                 Z    g | ]'}t          t          |          d j        d          (S )r   thingsr   r   r   )r   r@   	process_n).0r5  r   s     r   
<listcomp>z0TestCallbackMeddleArgs.setUp.<locals>.<listcomp>  sL     / / / s1vvj(,XG G G / / /r   r  ir  )ranger	   r2   r  s   ` r   rm   zTestCallbackMeddleArgs.setUp  sO    / / / /!"b"--/ / / #w777r   c                 n   t          |dd                    }|j        }t          |          |k     r|                     d||fz             |j                            |j        g           }|                    t          |d|                              |j	                            |           |d|= d S )Nr   z$Expected %d arguments for %s option.r   )
r   rargsr  r?   r   r  r   r  r   largs)r   r  r  r  r  r   r  r   s           r   r  z TestCallbackMeddleArgs.process_n  s    CGu::II<s|KLLL~**6;;;E%%.))***U###!E'NNNr   c                 D    |                      g ddddgiddg           d S )N)r6  r   rH  r   r   quxr  r   )r   r   r  r   r  r  r   s    r   test_callback_meddle_argsz0TestCallbackMeddleArgs.test_callback_meddle_args  sB    CCC$x1F&GHq6	# 	# 	# 	# 	#r   c                 @    |                      g dddgidg           d S )N)z-2r   rx   r  )r   rx   r   r  r   s    r   #test_callback_meddle_args_separatorz:TestCallbackMeddleArgs.test_callback_meddle_args_separator  s<    ...$}o63	  	  	  	  	 r   N)r!   r"   r#   rm   r  r  r  r$   r   r   r  r    sP        8 8 8	 	 	# # #
         r   r  c                        e Zd Zd Zd Zd ZdS )TestCallbackManyArgsc           	          t          dddd| j        d          t          dddd	| j        d
          g}t          |          | _        d S )Nr   r  r   r   r  )r   r   r   rW   r}   --bobr  r   r  )r   process_manyr	   r2   r  s     r   rm   zTestCallbackManyArgs.setUp  sl    tYz(,(9J J JtWZq(,(9G G GH #w777r   c                     |dk    r|                      |d           d S |dk    r|                      |d           d S |dk    r|                      |d           d S |dk    r|                      |d           d S d S )	Nr   r~   r  )dingdongr}   r  r  )ifr   r   r5   r  s        r   r  z!TestCallbackManyArgs.process_many  s    $;;UN33333IU$455555D[[UI.....G^^UM22222 ^r   c                 >    |                      g dd d dg            d S )N)r   r   r   r  r  r  r}   r1  2r  r  z-666r;  0)r  bobr  r   s    r   test_many_argsz#TestCallbackManyArgs.test_many_args  sC     ! ! ! &*$77		 	 	 	 	r   N)r!   r"   r#   rm   r  r  r$   r   r   r  r    sA        8 8 83 3 3    r   r  c                        e Zd Zd Zd Zd ZdS )TestCallbackCheckAbbrevc                 p    t                      | _        | j                            dd| j                   d S )N	--foo-barr   r   )r	   r2   r   check_abbrevr   s    r   rm   zTestCallbackCheckAbbrev.setUp  s@    "nn{:(,(9 	 	; 	; 	; 	; 	;r   c                 2    |                      |d           d S )Nr  r  r   r  r  r  r2   s        r   r  z$TestCallbackCheckAbbrev.check_abbrev  s    k*****r   c                 6    |                      dgi g            d S )Nr  r  r   s    r   test_abbrev_callback_expansionz6TestCallbackCheckAbbrev.test_abbrev_callback_expansion  s"    G9b"-----r   N)r!   r"   r#   rm   r  r  r$   r   r   r  r    sA        ; ; ;
+ + +. . . . .r   r  c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestCallbackVarArgsc           	          t          dddd          t          ddd	          t          d
dd| j        d          g}t          t          |          | _        d S )Nr   r   r   r  )rW   r   r   r}   r   rt   r   r  
--callbackr   cr  r  )r   variable_argsr&   r   r2   r  s     r   rm   zTestCallbackVarArgs.setUp  sw    t%qsCCCtLsCCCt\*(,(:F F FG /^;BD D Dr   c                 b   |                      |d u            g }|j        }|rq|d         }|d d         dk    rt          |          dk    s-|d d         dk    r t          |          dk    r|d         dk    rn|                    |           |d= |qt	          |j        |j        |           d S )Nr   r   rx   r   r  )rD   r  r  r  r  r   r   )r   r  r  r  r2   r  args          r   r  z!TestCallbackVarArgs.variable_args  s    &&& 	(CRaRDSXX\\RaRCCHHqLLSVs]]S!!!!H  	 	v{E22222r   c                 D    |                      g ddd ddgdg            d S )N)z-a3r  r  r   r   )r  r  r   r   r  rt   r  r  r   s    r   test_variable_argsz&TestCallbackVarArgs.test_variable_args  sA    DDD!(t5%.II	 	 	 	 	r   c                 F    |                      g dd dg dddg           d S )N)r  37rx   xxxr}   helloT)r  rx   r   r  r  r  r   s    r   %test_consume_separator_stop_at_optionz9TestCallbackVarArgs.test_consume_separator_stop_at_option  sM    CCC!%!%!4!4!46 6 $9		& 	& 	& 	& 	&r   c                 F    |                      g dd d g dddg           d S )N)r  r  r   r  r   )r   r  r   r  r  r  r   s    r   %test_positional_arg_and_variable_argsz9TestCallbackVarArgs.test_positional_arg_and_variable_args  sM    ===!%!% 3 3 35 5 $9		& 	& 	& 	& 	&r   c                 B    |                      g dd ddgdg            d S )N)r  r   r}   Tr   r  r  r   s    r   test_stop_at_optionz'TestCallbackVarArgs.test_stop_at_option  s?    ...!%Dw??	 	 	 	 	r   c                 6    |                      g dd           d S )N)r  r  r  r   zno such option: -5r  r   s    r   test_stop_at_invalid_optionz/TestCallbackVarArgs.test_stop_at_invalid_option  s&    4446JKKKKKr   N)
r!   r"   r#   rm   r  r  r  r  r  r  r$   r   r   r  r    s        D D D3 3 3  
& & && & &  
L L L L Lr   r  c                       e Zd Zd Zd ZdS )ConflictBasec                 f    t          ddddd          g}t          t          |          | _        d S )Nr   r   r   r   zincrement verbosityr   r   rh  r  r  r  s     r   rm   zConflictBase.setUp
  sM    t[$-4IK K K L.^;BD D Dr   c                     d|j         _        d S )Nr   )r   show_versionr  s        r   r  zConflictBase.show_version  s    %&"""r   N)r!   r"   r#   rm   r  r$   r   r   r
  r
  	  s5        D D D' ' ' ' 'r   r
  c                   (    e Zd Z	 d Zd Zd Zd ZdS )TestConflictc                     |                      |dd| j        ddt          d          }|                     |j        d           |                     |j        d           d S )N)r   rY  r   show versionr   r   rh  z5option -v/--version: conflicting option string(s): -vz conflicting option string(s): -vz-v/--version)rM   r  r   r5   r*   	option_id)r   rG   rK   s      r   assertTrueconflict_errorz%TestConflict.assertTrueconflict_error  sw    %:595F1?(A (A  CE E 	"DEEE77777r   c                 D    |                      | j        j                   d S r   )r  r2   r   r   s    r   test_conflict_errorz TestConflict.test_conflict_error   s!    %%dk&<=====r   c                 d    t          | j        d          }|                     |j                   d S )NzGroup 1)r
   r2   r  r   rl  s     r   test_conflict_error_groupz&TestConflict.test_conflict_error_group#  s0    DK33%%e&677777r   c                 V    |                      | j        j        dd t          d           d S )Nr   z'invalid conflict_resolution value 'foo')rM   r2   set_conflict_handlerr   r   s    r   test_no_such_conflict_handlerz*TestConflict.test_no_such_conflict_handler'  s;    K,hA	C 	C 	C 	C 	Cr   N)r!   r"   r#   r  r  r  r  r$   r   r   r  r    sX        C	8 	8 	8> > >8 8 8C C C C Cr   r  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestConflictResolvec                     t                               |            | j                            d           | j                            ddd| j        d           d S )Nresolver   rY  r   r  r  )r
  rm   r2   r  r   r  r   s    r   rm   zTestConflictResolve.setUp.  sh    4   ((333t[(,(9 	 	P 	P 	P 	P 	Pr   c                    | j                             d          }| j                             d          }| j                             d          }|                     ||u            |                     ||u           |                     |j        dg           |                     |j        dg           |                     |j        dg           |                     |j        g            |                     |j        dg           d S )Nr   r   rY  )r2   r   rD   r5   r   r   )r   r  verbose_optversion_opts       r   test_conflict_resolvez)TestConflictResolve.test_conflict_resolve4  s    &&t,,k,,[99k,,[99,---[0111)K=99904&999/+???0"555/+?????r   c                 4    |                      dgd           d S )NrX  z}Options:
  --verbose      increment verbosity
  -h, --help     show this help message and exit
  -v, --version  show version
r\   r   s    r   test_conflict_resolve_helpz.TestConflictResolve.test_conflict_resolve_helpA  s-    4& # 	 	 	 	 	r   c                 <    |                      dgd ddg            d S )Nr   r   r   r  r  r   s    r   test_conflict_resolve_short_optz3TestConflictResolve.test_conflict_resolve_short_optI  s6    D6'+Q??	 	 	 	 	r   c                 :    |                      dgddig            d S )Nr   r   r   r  r   s    r   test_conflict_resolve_long_optz2TestConflictResolve.test_conflict_resolve_long_optN  s2    K=%q>	 	 	 	 	r   c                 >    |                      ddgdddg            d S )Nr   rY  r   r)  r  r   s    r   test_conflict_resolve_long_optsz3TestConflictResolve.test_conflict_resolve_long_optsS  s9    K5'(!<<	 	 	 	 	r   N)	r!   r"   r#   rm   r$  r'  r*  r,  r.  r$   r   r   r  r  -  st        P P P@ @ @    
  
    r   r  c                   &    e Zd Zd Zd Zd Zd ZdS )TestConflictOverridec                     t          t                    | _        | j                            d           | j                            ddddd           | j                            ddd	d
dd           d S )Nrj   r   r   	--dry-runr   dry_runzdon't do anythingr  r  r   zdry run mode)r   r   r   rh  )r&   r   r2   r  r   r   s    r   rm   zTestConflictOverride.setUpY  s    .^DDD((333t[&2$7 	 	9 	9 	9 	{D&32I$2 	 	4 	4 	4 	4 	4r   c                     | j                             d          }|                     |j        dg           |                     |j        dg           d S )Nr2  r   )r2   r   r5   r   r   r   s     r   test_conflict_override_optsz0TestConflictOverride.test_conflict_override_optsc  sQ    k$$[114&111+77777r   c                 4    |                      dgd           d S )NrX  zXOptions:
  -h, --help     show this help message and exit
  -n, --dry-run  dry run mode
r&  r   s    r   test_conflict_override_helpz0TestConflictOverride.test_conflict_override_helph  s-    4& # 	 	 	 	 	r   c                 :    |                      dgddig            d S )Nr   r3  r   r  r   s    r   test_conflict_override_argsz0TestConflictOverride.test_conflict_override_argso  s2    D6%r?	 	 	 	 	r   N)r!   r"   r#   rm   r5  r7  r9  r$   r   r   r0  r0  X  sP        4 4 48 8 8
      r   r0  aS  Usage: bar.py [options]

Options:
  -a APPLE           throw APPLEs at basket
  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to frighten away all the
                     evil spirits that cause trouble and mayhem)
  --foo=FOO          store FOO in the foo list for later fooing
  -h, --help         show this help message and exit
aS  Usage: bar.py [options]

Options:
  -a APPLE           throw APPLEs at basket
  --boo=NUM, -b NUM  shout "boo!" NUM times (in order to frighten away all the
                     evil spirits that cause trouble and mayhem)
  --foo=FOO          store FOO in the foo list for later fooing
  --help, -h         show this help message and exit
aW  Usage
=====
  bar.py [options]

Options
=======
-a APPLE           throw APPLEs at basket
--boo=NUM, -b NUM  shout "boo!" NUM times (in order to frighten away all the
                   evil spirits that cause trouble and mayhem)
--foo=FOO          store FOO in the foo list for later fooing
--help, -h         show this help message and exit
a}  Usage: bar.py [options]

Options:
  -a APPLE           throw APPLEs at basket
  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to
                     frighten away all the evil spirits
                     that cause trouble and mayhem)
  --foo=FOO          store FOO in the foo list for later
                     fooing
  -h, --help         show this help message and exit
a~  Usage: bar.py [options]

Options:
  -a APPLE
    throw
    APPLEs at
    basket
  -b NUM, --boo=NUM
    shout
    "boo!" NUM
    times (in
    order to
    frighten
    away all
    the evil
    spirits
    that cause
    trouble and
    mayhem)
  --foo=FOO
    store FOO
    in the foo
    list for
    later
    fooing
  -h, --help
    show this
    help
    message and
    exit
c                   P    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S )TestHelpc                 :    |                      d          | _        d S )NP   )make_parserr2   r   s    r   rm   zTestHelp.setUp  s    &&r**r   c           	         t          ddddd          t          ddd	d
dd          t          ddddd          g}t          j                    5 }t          |          |d<   t	          |          cd d d            S # 1 swxY w Y   d S )Nr   r  r  APPLEzthrow APPLEs at basket)rW   r   metavarrh  r}   r  r   r  NUMzeshout "boo!" NUM times (in order to frighten away all the evil spirits that cause trouble and mayhem)r  r  r   z*store FOO in the foo list for later fooing)r   rW   r   rh  COLUMNSr  )r   r   EnvironmentVarGuardr@   r&   )r   columnsr:   envs       r   r>  zTestHelp.make_parser  s   8# '.FH H HgE %NO O O
 xeIK K K
  *,, 	A \\C	N+@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	As   "A??BBc                    t           j        d d          }	 t          j                            dd          t           j        d<   |                     dg|           |t           j        d d <   d S # |t           j        d d <   w xY w)Nr   zbar.pyr   rX  )rT   rN  rO  rP  rQ  r\   )r   rQ   rR  s      r   assertHelpEqualszTestHelp.assertHelpEquals  sw    HQQQK		$',,uh77CHQKtfo666#CHQQQKKK)CHQQQK####s   AA- -B c                 :    |                      t                     d S r   )rH  _expected_help_basicr   s    r   	test_helpzTestHelp.test_help  s    233333r   c                 n    | j                             d           |                     t                     d S )NzUsage: %prog [options])r2   	set_usagerH  rJ  r   s    r   test_help_old_usagezTestHelp.test_help_old_usage  s4    6777233333r   c                 \    d| j         j        _        |                     t                     d S )Nr   )r2   r  short_firstrH  _expected_help_long_opts_firstr   s    r   test_help_long_opts_firstz"TestHelp.test_help_long_opts_first  s*    ,-)<=====r   c                     t          j                    5 }d|d<   t                      | j        _        |                     t                     d d d            d S # 1 swxY w Y   d S )N80rC  )r   rD  r   r2   r  rH  _expected_help_title_formatter)r   rF  s     r   test_help_title_formatterz"TestHelp.test_help_title_formatter  s    *,, 	B!C	N$7$9$9DK!!!"@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   8AA Ac                     |                      d          | _        |                     t                     |                      d          | _        |                     t                     d S )Nr
  r   )r>  r2   rH  _expected_help_short_lines_expected_very_help_short_linesr   s    r   test_wrap_columnszTestHelp.test_wrap_columns  s^     &&r**8999&&q))=>>>>>r   c                     t          t                    | _        | j                            ddd           d}|                     |           d S )Nrj   r   r      olé!ri  uK   Options:
  -h, --help  show this help message and exit
  -a          olé!
)r&   r   r2   r   rH  r   expects     r   test_help_unicodezTestHelp.test_help_unicode  sT    .^DDDtL{KKK
 	f%%%%%r   c                 j    t          t          d          | _        d}|                     |           d S )Nr\  )rk   rw  u>   olé!

Options:
  -h, --help  show this help message and exit
)r&   r   r2   rH  r]  s     r   test_help_unicode_descriptionz&TestHelp.test_help_unicode_description  sC    .^;FH H H 	f%%%%%r   c                 @   | j                             d           t          | j         dd          }|                    ddd           | j                             |           d}|                     |           d	| j         _        |                     |d
z              d S )Nz`This is the program description for %prog.  %prog has an option group as well as single options.zDangerous OptionszZCaution: use of these options is at your own risk.  It is believed that some of them bite.z-gr   zGroup option.ri  aT  Usage: bar.py [options]

This is the program description for bar.py.  bar.py has an option group as
well as single options.

Options:
  -a APPLE           throw APPLEs at basket
  -b NUM, --boo=NUM  shout "boo!" NUM times (in order to frighten away all the
                     evil spirits that cause trouble and mayhem)
  --foo=FOO          store FOO in the foo list for later fooing
  -h, --help         show this help message and exit

  Dangerous Options:
    Caution: use of these options is at your own risk.  It is believed
    that some of them bite.

    -g               Group option.
z Please report bugs to /dev/null.z"
Please report bugs to /dev/null.
)r2   set_descriptionr
   r   rk  rH  epilog)r   rm  r^  s      r   test_help_description_groupsz%TestHelp.test_help_description_groups  s    ##9	: 	: 	: K,56 6 	lIII$$U+++( 	f%%%?f'MMNNNNNr   N)r!   r"   r#   rm   r>  rH  rK  rN  rR  rV  rZ  r_  ra  re  r$   r   r   r;  r;    s        + + +A A A*$ $ $4 4 44 4 4> > >B B B? ? ?& & &	& 	& 	&#O #O #O #O #Or   r;  c                       e Zd Zd Zd ZdS )TestMatchAbbrevc           
      X    |                      t          dd d d d d          d           d S )N--f)r  r  --fieri  )r5   r   r   s    r   test_match_abbrevz!TestMatchAbbrev.test_match_abbrev@  sM    u151515/3(5 (56 6
 	  	  	  	  	 r   c                 `    d}d d d d}|                      t          ||fd t          d           d S )Nri  )r  r  rj  z,ambiguous option: --f (--fie, --foo, --foz?))rM   r   r   )r   r  wordmaps      r   test_match_abbrev_errorz'TestMatchAbbrev.test_match_abbrev_errorH  sN     4$??Aw<J	L 	L 	L 	L 	Lr   N)r!   r"   r#   rk  rn  r$   r   r   rg  rg  ?  s7             L L L L Lr   rg  c                   &    e Zd Zd Zd Zd Zd ZdS )TestParseNumberc                     t                      | _        | j                            dt                     | j                            dt                     d S )Nr   r  -l)r&   r2   r   r   r   s    r   rm   zTestParseNumber.setUpQ  sK    .00t#...t#.....r   c           	          |                      t          dt          fi t          t	          j        d                     |                      t          dt          fi t          t	          j        d                     d S )Nr   z!invalid literal for int().*: '?'?0xOoopsz*invalid literal for int().*: s?'?0xOoops'?)rM   r   r   r   rB   compiler   s    r   test_parse_num_failz#TestParseNumber.test_parse_num_failV  s|    S	2J;<<	> 	> 	> 	C("JDEE	G 	G 	G 	G 	Gr   c                    |                      t          dt                    d           |                      t          dt                    d           |                      t          dt                    d           |                      t          dt                    d           |                      t          d	t                    d
           |                      t          dt                    d           d S )Nr  r   0x10   0XA
   010   0b11r  0b)r5   r   r   r   s    r   test_parse_num_okz!TestParseNumber.test_parse_num_ok`  s    C--q111FC00"555E3//444E3//333FC00!444D#..22222r   c                    |                      g ddddg            |                      g ddddg            |                     dgd	           |                     d
gd           |                     ddgd           d S )N)r   r;  rr  0x20r       )r'  l)r   0b0101z-l010r  r}  z-n008z'option -n: invalid integer value: '008'z-l0b0123z*option -l: invalid integer value: '0b0123'rr  0x12xz)option -l: invalid integer value: '0x12x')r=   rR   r   s    r   test_numeric_optionsz$TestParseNumber.test_numeric_optionsh  s    555"$4112	7 	7 	7444"#!--r	3 	3 	3gYF	H 	H 	Hj\I	K 	K 	KdG_H	J 	J 	J 	J 	Jr   N)r!   r"   r#   rm   rv  r  r  r$   r   r   rp  rp  P  sX        / / /
G G G3 3 3
J 
J 
J 
J 
Jr   rp  c                       e Zd Zd ZdS )MiscTestCasec                 F    h d}t          j        | t          |           d S )N>   
NO_DEFAULTcheck_builtinAmbiguousOptionError)not_exported)r   check__all__optparse)r   r  s     r   test__all__zMiscTestCase.test__all__v  s+    NNNT8,GGGGGGr   N)r!   r"   r#   r  r$   r   r   r  r  u  s(        H H H H Hr   r  __main__)HrT   rO  rB   r  unittestior   r^  r   test.supportr   r  r   r   r   r	   r
   r   r   r   r   r   r   r   r   	Exceptionr   r&   TestCaser0   rg   r   r   r   r  r  r  r   rA  r\  r  r  r  r  r*  r@  rV  r]  re  r}  r  r  r  r  r  r  r  r
  r  r  r0  rJ  rQ  rU  rX  rY  r;  rg  rp  r  r!   mainr$   r   r   <module>r     s   


 				 				               " " " " " " . . . . . . . . . . . . . . . . . . . . . . . . . . # " " " " "      
N 
N 
N 
N 
Ny 
N 
N 
N2 2 2 2 2| 2 2 2M% M% M% M% M%x  M% M% M%jJ# J# J# J# J#x J# J# J#XL? L? L? L? L?x L? L? L?^( ( ( ( (x ( ( (*C C C C Ch C C C  rh@@> > >/ / / / /V / / /
0J 0J 0J 0J 0J 0J 0J 0Jf'7 '7 '7 '7 '78 '7 '7 '7TI4 I4 I4 I4 I4 I4 I4 I4\H3 H3 H3 H3 H38 H3 H3 H3T! ! ! ! !x ! ! !F. . . . . . . ..8/ 8/ 8/ 8/ 8/ 8/ 8/ 8/tD D D D Dx D D D2    X   :: : : : :( : : :$6 6 6 6 6h 6 6 6 H H H H Hh H H HD(/ (/ (/ (/ (/ (/ (/ (/V    8   >3/ 3/ 3/ 3/ 3/8 3/ 3/ 3/l    H   2         X      :    8   2
. 
. 
. 
. 
.h 
. 
. 
.0L 0L 0L 0L 0L( 0L 0L 0Lj' ' ' ' '8 ' ' 'C C C C C< C C C4) ) ) ) ), ) ) )V    8   <	 	" "  # BtO tO tO tO tOx tO tO tOnL L L L Lh L L L""J "J "J "J "Jh "J "J "JJH H H H H8$ H H H zHMOOOOO r   