Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/test/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/test/__pycache__/test_optparse.cpython-34.pyc

�
g f3��@sTddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddl	mZddl	mZeejd��ZGdd	�d	e�ZGd
d�de
�ZGdd
�d
ej�ZGdd�de�ZGdd�de�Z Gdd�de�Z!Gdd�de�Z"idd6dd6d_d6dad6Z#dd�Z$Gdd �d e�Z%Gd!d"�d"e�Z&Gd#d$�d$e�Z'Gd%d&�d&e�Z(Gd'd(�d(e�Z)Gd)d*�d*e�Z*Gd+d,�d,e�Z+Gd-d.�d.e�Z,Gd/d0�d0e�Z-Gd1d2�d2e�Z.Gd3d4�d4e�Z/Gd5d6�d6e�Z0Gd7d8�d8e�Z1Gd9d:�d:e�Z2Gd;d<�d<e�Z3Gd=d>�d>e�Z4Gd?d@�d@e�Z5GdAdB�dBe�Z6GdCdD�dDe�Z7GdEdF�dFe�Z8GdGdH�dHe�Z9GdIdJ�dJe�Z:GdKdL�dLe:�Z;GdMdN�dNe:�Z<GdOdP�dPe�Z=dQZ>dRZ?dSZ@dTZAdUZBGdVdW�dWe�ZCGdXdY�dYe�ZDGdZd[�d[e�ZEd\d]�ZFeGd^krPeF�ndS)b�N)�StringIO)�support)�make_option�Option�TitledHelpFormatter�OptionParser�OptionGroup�SUPPRESS_USAGE�OptionError�OptionConflictError�BadOptionError�OptionValueError�Values)�
_match_abbrev)�
_parse_num�c@s1eZdZddddd�Zdd�ZdS)�InterceptedErrorNcCs||_||_||_dS)N)�
error_message�exit_status�exit_message)�selfrrr�r�7/opt/alt/python34/lib64/python3.4/test/test_optparse.py�__init__s		zInterceptedError.__init__cCs|jp|jpdS)Nzintercepted error)rr)rrrr�__str__%szInterceptedError.__str__)�__name__�
__module__�__qualname__rrrrrrrsrc@s.eZdZdddd�Zdd�ZdS)�InterceptingOptionParserrNcCstd|d|��dS)Nrr)r)rZstatus�msgrrr�exit)szInterceptingOptionParser.exitcCstd|��dS)Nr)r)rrrrr�error,szInterceptingOptionParser.error)rrrr r!rrrrr(src@s^eZdZdd�Zdd�Zdd�Zddd	d
�Zdd�Zd
d�ZdS)�BaseTestcCsb|jj|�\}}t|�}|j||dt��|j||dt��||fS)a�Assert the options are what we expected when parsing arguments.

        Otherwise, fail with a nicely formatted message.

        Keyword arguments:
        args -- A list of arguments to parse with OptionParser.
        expected_opts -- The options expected.
        expected_positional_args -- The positional arguments expected.

        Returns the options and positional args for further testing.
        zJ
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�argsZ
expected_optsZexpected_positional_args�optionsZpositional_argsZoptdictrrr�
assertParseOK1s
zBaseTest.assertParseOKcCs�|dkrf}n|dkr*i}ny|||�Wn�|k
r�}zjt|�}t|t�r�|j|j|�d|j|f�n|j||d||f�|SWYdd}~XnX|jdt��dS)a-
        Assert that the expected exception is raised when calling a
        function, and that the right error message is included with
        that exception.

        Arguments:
          func -- the function to call
          args -- positional arguments to `func`
          kwargs -- keyword arguments to `func`
          expected_exception -- exception that should be raised
          expected_message -- expected exception message (or pattern
            if a compiled regex object)

        Returns the exception raised for further testing.
        NzLexpected exception message pattern:
/%s/
actual exception message:
'''%s'''
zHexpected exception message:
'''%s'''
actual exception message:
'''%s'''
znexpected exception %(expected_exception)s not raised
called %(func)r
with args %(args)r
and kwargs %(kwargs)r
)	�str�
isinstance�retype�
assertTrue�search�patternr&�failr')r�funcr(�kwargsZexpected_exception�expected_message�errZactual_messagerrr�assertRaisesOs"			zBaseTest.assertRaisescCs`y|jj|�Wn8tk
rN}z|j|j|�WYdd}~XnX|jd�dS)z�
        Assert the parser fails with the expected message.  Caller
        must ensure that self.parser is an InterceptingOptionParser.
        Nzexpected parse failure)r#r$rr&r�assertFalse)r�cmdline_args�expected_outputr5rrr�assertParseFail�s
&zBaseTest.assertParseFailrNcCs�tj}y@z t�t_|jj|�Wdtjj�}|t_XWn�tk
r�}zz|jt|t	�dt
|��||kr�|jd|d|d�n|j|j
|�|j|j|�WYdd}~XnX|jd�dS)z7Assert the parser prints the expected output on stdout.Nz0expected output to be an ordinary string, not %rzexpected: 
'''
z'''
but got 
'''
z'''zexpected parser.exit())�sys�stdoutrr#r$�getvaluerr.r,r+�typer1r&rrr7)rr8r9Zexpected_statusZexpected_errorZsave_stdout�outputr5rrr�assertOutput�s$	&zBaseTest.assertOutputcGs|j||dt|�dS)z4Assert that TypeError is raised when executing func.N)r6�	TypeError)rr2r4r(rrr�assertTypeError�szBaseTest.assertTypeErrorcCs>|j�}||kr:|jd|d|d��ndS)Nzhelp text failure; expected:
"z	"; got:
"z"
)Zformat_helpZfailureException)rr#�
expected_helpZactual_helprrr�
assertHelp�szBaseTest.assertHelp)	rrrr*r6r:r@rBrDrrrrr"0s;r"c@s*eZdZdd�Zgidd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/S)0�TestOptionCheckscCstdt�|_dS)N�usage)rr	r#)rrrr�setUp�szTestOptionChecks.setUpcCs|jt||t|�dS)N)r6rr
)rr4r(r3rrr�assertOptionError�sz"TestOptionChecks.assertOptionErrorcCs|jtd�dS)Nz+at least one option string must be supplied)rBr)rrrr�test_opt_string_empty�s	z&TestOptionChecks.test_opt_string_emptycCs|jddg�dS)Nz?invalid option string 'b': must be at least two characters long�b)rH)rrrr�test_opt_string_too_short�sz*TestOptionChecks.test_opt_string_too_shortcCs|jddg�dS)NzOinvalid short option string '--': must be of the form -x, (x any non-dash char)z--)rH)rrrr�test_opt_string_short_invalid�sz.TestOptionChecks.test_opt_string_short_invalidcCs|jddg�dS)NzJinvalid long option string '---': must start with --, followed by non-dashz---)rH)rrrr�test_opt_string_long_invalid�sz-TestOptionChecks.test_opt_string_long_invalidcCs(|jddgidd6dd6�dS)Nz.option -b: invalid keyword arguments: bar, fooz-b�foo�bar)rH)rrrr�test_attr_invalid�sz"TestOptionChecks.test_attr_invalidcCs!|jddgidd6�dS)Nz option -b: invalid action: 'foo'z-brN�action)rH)rrrr�test_action_invalid�sz$TestOptionChecks.test_action_invalidcCs>|jddgidd6�|jddgitd6�dS)Nz%option -b: invalid option type: 'foo'z-brNr>z'option -b: invalid option type: 'tuple')rH�tuple)rrrr�test_type_invalid�sz"TestOptionChecks.test_type_invalidcCs(|jddgidd6dd6�dS)Nz4option -b: must not supply a type for action 'count'z-b�countrQ�intr>)rH)rrrr�test_no_type_for_action�sz(TestOptionChecks.test_no_type_for_actioncCs$|jdddgidd6�dS)Nz@option -b/--bad: must supply a list of choices for type 'choice'z-bz--bad�choicer>)rH)rrrr�test_no_choices_list�sz%TestOptionChecks.test_no_choices_listcCs>td�j}|jd|ddgidd6dd6�dS)	NrzBoption -b/--bad: choices must be a list of strings ('%s' supplied)z-bz--badrXr>zbad choices�choices)r>rrH)r�typenamerrr�test_bad_choices_list�s	z&TestOptionChecks.test_bad_choices_listcCs(|jddgidd6dd6�dS)Nz1option -b: must not supply choices for type 'int'z-brVr>ZbadrZ)rH)rrrr�test_no_choices_for_typesz)TestOptionChecks.test_no_choices_for_typecCs(|jddgidd6dd6�dS)Nz:option -b: 'const' must not be supplied for action 'store'z-b�storerQ��const)rH)rrrr�test_no_const_for_actionsz)TestOptionChecks.test_no_const_for_actioncCs(|jddgidd6dd6�dS)Nz:option -b: 'nargs' must not be supplied for action 'count'z-brUrQ��nargs)rH)rrrr�test_no_nargs_for_actionsz)TestOptionChecks.test_no_nargs_for_actioncCs(|jddgidd6dd6�dS)Nz'option -b: callback not callable: 'foo'z-b�callbackrQrN)rH)rrrr�test_callback_not_callablesz+TestOptionChecks.test_callback_not_callablecCsdS)Nr)rrrr�dummyszTestOptionChecks.dummycCs2|jddgidd6|jd6dd6�dS)NzAoption -b: callback_args, if supplied, must be a tuple: not 'foo'z-brerQrN�
callback_args)rHrg)rrrr�test_callback_args_no_tuples

z,TestOptionChecks.test_callback_args_no_tuplecCs2|jddgidd6|jd6dd6�dS)NzBoption -b: callback_kwargs, if supplied, must be a dict: not 'foo'z-brerQrN�callback_kwargs)rHrg)rrrr�test_callback_kwargs_no_dict's

z-TestOptionChecks.test_callback_kwargs_no_dictcCs(|jddgidd6dd6�dS)Nz<option -b: callback supplied ('foo') for non-callback optionz-br^rQrNre)rH)rrrr�test_no_callback_for_action/sz,TestOptionChecks.test_no_callback_for_actioncCs(|jddgidd6dd6�dS)Nz9option -b: callback_args supplied for non-callback optionz-br^rQrNrh)rH)rrrr� test_no_callback_args_for_action5sz1TestOptionChecks.test_no_callback_args_for_actioncCs(|jddgidd6dd6�dS)Nz;option -b: callback_kwargs supplied for non-callback optionz-br^rQrNrj)rH)rrrr�"test_no_callback_kwargs_for_action;sz3TestOptionChecks.test_no_callback_kwargs_for_actioncCsC|jddg�|jdddg�|jdddg�dS)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-dashz-dz--debug)rH)rrrr�test_no_single_dashAs

z$TestOptionChecks.test_no_single_dashN)rrrrGrHrIrKrLrMrPrRrTrWrYr\r]rardrfrgrirkrlrmrnrorrrrrE�s.rEc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
jddd�dd��ZdS)�TestOptionParserc	CsWt�|_|jjdddddddd�|jjd	d
ddddd�dS)
Nz-vz	--verbosez-nz--noisyrQ�
store_true�dest�verbosez-qz--quietz--silent�store_false)rr#�
add_option)rrrrrGRs

zTestOptionParser.setUpcCs|j|jjdd�dS)Nznot an Option instance: None)rBr#ru)rrrr�test_add_option_no_OptionYsz*TestOptionParser.test_add_option_no_OptioncCs |j|jjddd�dS)Nzinvalid arguments)rBr#ru)rrrr�!test_add_option_invalid_arguments]sz2TestOptionParser.test_add_option_invalid_argumentscCs~|jjd�}|j|t�|j|jddg�|j|jddg�|j|jd�|j|jd�dS)Nz-vz-nz	--verbosez--noisyrqrs)	r#�
get_optionZassertIsInstancerr&�_short_opts�
_long_optsrQrr)r�opt1rrr�test_get_optionasz TestOptionParser.test_get_optioncCsz|jjd�}|jjd�}|jjd�}|jjd�}|j||kop|kop|kn�dS)Nz-vz	--verbosez-nz--noisy)r#rxr.)rr{Zopt2Zopt3Zopt4rrr�test_get_option_equalsis
z'TestOptionParser.test_get_option_equalscCs6|j|jjd��|j|jjd��dS)Nz-vz	--verbose)r.r#�
has_option)rrrr�test_has_optionpsz TestOptionParser.test_has_optioncCs|j|jjd�dk�|j|jjd�dk�|j|jjd�dk�|j|jjd�dk�|j|jjd��|j|jjd��|j|jjd��|j|jjd��|j|jjd��|j|jjd��dS)Nz-vz	--verbosez-nz--noisyz-qz--silent)r.r#rxr7r~)rrrr�assertTrueremovedtsz"TestOptionParser.assertTrueremovedcCs|jjd�|j�dS)Nz-n)r#�
remove_optionr�)rrrr�test_remove_short_opt�sz&TestOptionParser.test_remove_short_optcCs|jjd�|j�dS)Nz	--verbose)r#r�r�)rrrr�test_remove_long_opt�sz%TestOptionParser.test_remove_long_optcCs#|j|jjddtd�dS)NrNzno such option 'foo')zfoo)r6r#r��
ValueError)rrrr�test_remove_nonexistent�sz(TestOptionParser.test_remove_nonexistentzRelies on sys.getrefcountZcpythonTcCsddg}tj|�}t�}|jdd�||_|j�~|j|tj|��dS)N�*z-az	--aaarggh)r;�getrefcountrru�	big_thingZdestroyr&)rr�Zrefcountr#rrr�test_refleak�s			
zTestOptionParser.test_refleakN)rrrrGrvrwr|r}rr�r�r�r�rZimpl_detailr�rrrrrpQsrpc@s(eZdZdd�Zdd�ZdS)�TestOptionValuescCsdS)Nr)rrrrrG�szTestOptionValues.setUpcCs�t�}|jt|�i�|j|i�|j|idd6�|j|d�idd6dd6}td|�}|jt|�|�|j||�|j|idd6�|j|i�|j|d�|j|g�dS)NrOrNrr��baz�defaults)rr&r%ZassertNotEqual)r�values�dictrrr�test_basics�s	zTestOptionValues.test_basicsN)rrrrGr�rrrrr��sr�c@s4eZdZdd�Zdd�Zdd�ZdS)�TestTypeAliasescCst�|_dS)N)rr#)rrrrrG�szTestTypeAliases.setUpcCs9|jjddd�|j|jjd�jd�dS)Nz-sr>r+�string)r#rur&rxr>)rrrr�test_str_aliases_string�sz'TestTypeAliases.test_str_aliases_stringcCsn|jjddt�|j|jjd�jd�|jjddt�|j|jjd�jd�dS)Nz-sr>r�z-xrV)r#rur+r&rxr>rV)rrrr�test_type_object�sz TestTypeAliases.test_type_objectN)rrrrGr�r�rrrrr��sr�r_�s�<�m�h��dcCssy>|dj�rt|�St|dd��t|dSWn.ttfk
rntd||f��YnXdS)Nr_zoption %s: invalid duration: %r���r�r�)�isdigitrV�_time_unitsr��
IndexErrorr
)�option�opt�valuerrr�_check_duration�s
$r�c@s9eZdZejdZejej�Zeed<dS)�DurationOption�durationN)r�)rrrr�TYPES�copy�TYPE_CHECKERr�rrrrr��s
r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestDefaultValuescCs�t�|_|jjdddd�|jjdddd�|jjd	d
ddd�|jjd
d
d�|jjddd�|jjd�|jjddd�idd6dd6dd6dd6dd6dd6|_dS)Nz-vz	--verbose�defaultTz-qz--quietrrrsz-nr>rV�%z-mz-srNz-tz-u�nr�r��t�u)rr#ru�expected)rrrrrG�s
zTestDefaultValues.setUpcCs |j|jj�|j�dS)N)r&r#�get_default_valuesr�)rrrr�test_basic_defaults�sz%TestDefaultValues.test_basic_defaultscCsW|jjdddd�|jjidd6dd6�|j|jj�|j�dS)Nr�r�r��di����i����)r#�set_defaultsr��updater&r�)rrrr�test_mixed_defaults_post�sz*TestDefaultValues.test_mixed_defaults_postcCs�|jjdddd�|jjddd�|jjd�|jjidd6dd6�|j|jj�|j�|jjd�|jjddd�|jjidd6�|j|jj�|j�dS)	N�xZbarf�y�blahz-xr�Zfrobz-y)r#r�rur�r�r&r�r�)rrrr�test_mixed_defaults_pre�sz)TestDefaultValues.test_mixed_defaults_precCs�t|j_|jjddddd�|jjddddd�|jjdd	�|jjidd
6dd6d
d6�|j|jj�|j�|jj	d�|jjidd
6dd6d	d6�|j|jj�|j�dS)Nz-dr>r�r�i,z-eZ6mr��42r�ih�er�F)
r�r#�option_classrur�r�r�r&r�Zset_process_default_values)rrrr�test_process_default�s%%z&TestDefaultValues.test_process_defaultN)rrrrGr�r�r�r�rrrrr��s

r�c@sFeZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestProgNamez]
    Test that %prog expands to the right thing in usage, version,
    and help strings.
    cCs|j|j�|�dS)N)r&Z	get_usage)rr#�expected_usagerrr�assertUsageszTestProgName.assertUsagecCs|j|j�|�dS)N)r&Zget_version)rr#Zexpected_versionrrr�
assertVersionszTestProgName.assertVersionc
Cs�tjdd�}zstjjddd�tjd<tddd�}d}|j||�|j|d	�|j||d
d�Wd|tjdd�<XdS)NrNrOzbaz.pyrz	%prog ...�versionz	%prog 1.2zUsage: baz.py ...
z
baz.py 1.2�
zlOptions:
  --version   show program's version number and exit
  -h, --help  show this help message and exit
)	r;�argv�os�path�joinrr�r�rD)r�	save_argvr#r�rrr�test_default_prognames	z"TestProgName.test_default_prognamecCsstdddddd�}|jd�|jd�d	}|j||�|j|d
�|j||d�dS)N�progZthingyr�z	%prog 0.1rFz
%prog arg argz-hz	--versionzUsage: thingy arg arg
z
thingy 0.1r�)rr�r�r�rD)rr#r�rrr�test_custom_progname's	

z!TestProgName.test_custom_prognameN)rrr�__doc__r�r�r�r�rrrrr�	s
r�c@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)�TestExpandDefaultscCsHtdd�|_d|_d|_|jd|_|jd|_dS)Nr��testzXUsage: 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]
)rr#�help_prefix�	file_help�expected_help_file�expected_help_none)rrrrrG4s		
zTestExpandDefaults.setUpcCs<|jjddddd|j�|j|j|j�dS)Nz-fz--filer�zfoo.txt�help)r#rur�rDr�)rrrr�test_option_defaultBs
z&TestExpandDefaults.test_option_defaultcCsI|jjddd|j�|jjdd�|j|j|j�dS)Nz-fz--filer��filezfoo.txt)r#rur��set_defaultrDr�)rrrr�test_parser_default_1Hs
z(TestExpandDefaults.test_parser_default_1cCsI|jjddd|j�|jjdd�|j|j|j�dS)Nz-fz--filer�r�zfoo.txt)r#rur�r�rDr�)rrrr�test_parser_default_2Ns
z(TestExpandDefaults.test_parser_default_2cCs6|jjddd|j�|j|j|j�dS)Nz-fz--filer�)r#rur�rDr�)rrrr�test_no_defaultTs
z"TestExpandDefaults.test_no_defaultcCs<|jjddddd|j�|j|j|j�dS)Nz-fz--filer�r�)r#rur�rDr�)rrrr�test_default_none_1Ys
z&TestExpandDefaults.test_default_none_1cCsI|jjddd|j�|jjdd�|j|j|j�dS)Nz-fz--filer�r�)r#rur�r�rDr�)rrrr�test_default_none_2_s
z&TestExpandDefaults.test_default_none_2cCsP|jjdddd�|jjdd�|jd}|j|j|�dS)Nz-pz--probr�z1blow up with probability PROB [default: %default]Zprobg��Q���?zF  -p PROB, --prob=PROB  blow up with probability PROB [default: 0.43]
)r#rur�r�rD)rrCrrr�test_float_defaultes		z%TestExpandDefaults.test_float_defaultcCsH|jjdddddd�d|jj_|j|j|j�dS)Nz-fz--filer�zfoo.txtr�z#read from FILE [default: *DEFAULT*]z	*DEFAULT*)r#ru�	formatter�default_tagrDr�)rrrr�test_alt_expandns
z"TestExpandDefaults.test_alt_expandcCsR|jjdddddd�d|jj_|jd}|j|j|�dS)Nz-fz--filer�zfoo.txtr�zread from %default filez0  -f FILE, --file=FILE  read from %default file
)r#rur�r�r�rD)rrCrrr�test_no_expandusz!TestExpandDefaults.test_no_expandN)
rrrrGr�r�r�r�r�r�r�r�r�rrrrr�3s	r�c@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5d6�Zd7S)8�TestStandardcCsXtddd�tdddddd�td	d
d�g}tdtd
|�|_dS)Nz-ar>r�z-bz--boorVrr�booz--foorQ�appendrF�option_list)rrr	r#)rr)rrrrG�s
zTestStandard.setUpcCs|jdgd�dS)Nz-az-a option requires 1 argument)r:)rrrr�test_required_value�sz TestStandard.test_required_valuecCs|jddgd�dS)Nz-bZ5xz&option -b: invalid integer value: '5x')r:)rrrr�test_invalid_integer�sz!TestStandard.test_invalid_integercCs|jdgd�dS)Nz--boo13zno such option: --boo13)r:)rrrr�test_no_such_option�sz TestStandard.test_no_such_optioncCs|jdgd�dS)Nz--boo=x5z)option --boo: invalid integer value: 'x5')r:)rrrr�test_long_invalid_integer�sz&TestStandard.test_long_invalid_integercCs,|jgidd6dd6dd6g�dS)N�ar�rN)r*)rrrr�
test_empty�szTestStandard.test_emptycCs>|jddddgidd6dd6ddgd6g�dS)	Nz-arz
--foo=blahz--foo=r�r�r�rN)r*)rrrr�"test_shortopt_empty_longopt_append�sz/TestStandard.test_shortopt_empty_longopt_appendcCsD|jdddddgidd6dd6dddgd6g�dS)	Nz--foorOrz--foo=xr�r�r�rN)r*)rrrr�test_long_option_append�s

z$TestStandard.test_long_option_appendcCs/|jdgidd6dd6dd6g�dS)Nz-abcZbcr�r�rN)r*)rrrr�test_option_argument_joined�sz(TestStandard.test_option_argument_joinedcCs2|jddgidd6dd6dd6g�dS)Nz-aZ34r�r�rN)r*)rrrr�test_option_argument_split�sz'TestStandard.test_option_argument_splitcCs/|jdgidd6dd6dd6g�dS)Nz-b34r��"r�rN)r*)rrrr�#test_option_argument_joined_integer�sz0TestStandard.test_option_argument_joined_integercCs2|jddgidd6dd6dd6g�dS)Nz-bz-5r��r�rN���)r*)rrrr�+test_option_argument_split_negative_integer�sz8TestStandard.test_option_argument_split_negative_integercCs/|jdgidd6dd6dd6g�dS)Nz--boo=13r��
r�rN)r*)rrrr� test_long_option_argument_joined�sz-TestStandard.test_long_option_argument_joinedcCs2|jddgidd6dd6dd6g�dS)Nz--booZ111r��or�rN)r*)rrrr�test_long_option_argument_split�sz,TestStandard.test_long_option_argument_splitcCs5|jddgidd6dd6dgd6g�dS)Nz	--foo=barz-axyz�xyzr�r�rOrN)r*)rrrr�test_long_option_short_option�sz*TestStandard.test_long_option_short_optioncCs5|jddgidd6dd6dgd6g�dS)Nz--f=barz-axyzr�r�r�rOrN)r*)rrrr�test_abbrev_long_option�sz$TestStandard.test_abbrev_long_optioncCsG|jjg�\}}|jj�}|jt|�t|��dS)N)r#r$r�r&r%)rr)r(r�rrr�
test_defaults�szTestStandard.test_defaultscCs9|jjddddddd�|jdgd	�dS)
Nz--fozrQr^r>r�rrrNz--f=barz%ambiguous option: --f (--foo, --foz?))r#rur:)rrrr�test_ambiguous_option�s
z"TestStandard.test_ambiguous_optioncCs;|jddddgidd6dd6dgd6g�dS)Nz-ar�z--foorOr�r�rN)r*)rrrr� test_short_and_long_option_split�sz-TestStandard.test_short_and_long_option_splitcCsA|jdddddgidd6dd6d	dgd
6g�dS)Nz	--foo=barz-bZ123z--foor�r��{r�rOrN)r*)rrrr�*test_short_option_split_long_option_append�sz7TestStandard.test_short_option_split_long_option_appendcCs8|jdddgidd6dd6dd6dg�dS)Nz-arNrOr�r�)r*)rrrr�*test_short_option_split_one_positional_arg�sz7TestStandard.test_short_option_split_one_positional_argcCsu|jddddgidd6dd6dd6ddg�|jddddgidd6dd6dgd6g�dS)Nz-az--rNrOr�r�z--foo)r*)rrrr�$test_short_option_consumes_separator�s
z1TestStandard.test_short_option_consumes_separatorcCsA|jddddgidd6dd6dd6ddg�fdS)	Nz-abz--z--foorOrJr�r�rN)r*)rrrr�&test_short_option_joined_and_separator�sz3TestStandard.test_short_option_joined_and_separatorcCs>|jddddgidd6dd6dgd6dg�dS)	Nz-ab�-z--foorOrJr�r�rN)r*)rrrr�"test_hyphen_becomes_positional_arg�sz/TestStandard.test_hyphen_becomes_positional_argcCsD|jddddddgidd6dd	6d
dgd6g�dS)Nz-b3z-b�5z	--foo=barz--foor�r�r�r�rOrN)r*)rrrr�test_no_append_versus_append�sz)TestStandard.test_no_append_versus_appendcCs2|jddgidd6dd6dd6g�dS)Nz-az-b3r�r�rN)r*)rrrr�&test_option_consumes_optionlike_stringsz3TestStandard.test_option_consumes_optionlike_stringcCs-|jjddd�|jdgd�dS)Nz-trQrqz-testzno such option: -e)r#rur:)rrrr�#test_combined_single_invalid_optionsz0TestStandard.test_combined_single_invalid_optionN)rrrrGr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrr��s6r�c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoolc	CsRtdddddddd�td	d
dddd�g}td|�|_dS)
Nz-vz	--verboserQrqrrrsr�rz-qz--quietrtr�)rrr#)rr)rrrrGszTestBool.setUpcCs|jgidd6g�dS)Nrrs)r*)rrrr�test_bool_defaults	
zTestBool.test_bool_defaultcCs?|jdgidd6g�\}}|j|jdk�dS)Nz-qrrsF)r*r.rs)rr)r(rrr�test_bool_falses
zTestBool.test_bool_falsecCs?|jdgidd6g�\}}|j|jdk�dS)Nz-vr_rsT)r*r.rs)rr)r(rrr�test_bool_true#s
zTestBool.test_bool_truecCs'|jdddgidd6g�dS)Nz-qvqz-qz-vr_rs)r*)rrrr�test_bool_flicker_on_and_off)s
z%TestBool.test_bool_flicker_on_and_offN)rrrrGrr	r
rrrrrrs
rc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
TestChoicecCsGtdt�|_|jjddddddddd	d
dg�dS)NrFz-crQr^r>rXrrrZ�oneZtwoZthree)rr	r#ru)rrrrrG/szTestChoice.setUpcCs*|jdddgidd6dg�dS)Nz-cr
r�rX)r*)rrrr�test_valid_choice4s
zTestChoice.test_valid_choicecCs|jdddgd�dS)Nz-c�four�abczEoption -c: invalid choice: 'four' (choose from 'one', 'two', 'three'))r:)rrrr�test_invalid_choice9szTestChoice.test_invalid_choicecCs^|jjddddddg�|jjd�}|j|jd�|j|jd�dS)	Nz-dz	--defaultrZrZfiveZsixrXr^)r#rurxr&r>rQ)rr�rrr�test_add_choice_option>s
z!TestChoice.test_add_choice_optionN)rrrrGrrrrrrrr.src@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�	TestCountc	Cs�tdt�|_tddddd�|_|jj|j�|jjddd	dd�|jjd
dddddd
d�dS)NrFz-vrQrUrrrsz	--verboser>rVz-qz--quiet�store_constr`r)rr	r#r�v_optru)rrrrrGFszTestCount.setUpcCs|jgidd6g�dS)Nrs)r*)rrrrr�NszTestCount.test_emptycCs!|jdgidd6g�dS)Nz-vr_rs)r*)rrrr�test_count_oneQszTestCount.test_count_onecCs!|jdgidd6g�dS)Nz-vvv�rs)r*)rrrr�test_count_threeTszTestCount.test_count_threecCs'|jdddgidd6g�dS)Nz-vrrs)r*)rrrr�test_count_three_apartWsz TestCount.test_count_three_apartcCs$|jddgidd6g�dS)Nz-vvvz--verbose=2rbrs)r*)rrrr�test_count_override_amountZsz$TestCount.test_count_override_amountcCs'|jdddgidd6g�dS)Nz-vvvz--verbose=2z-qrrs)r*)rrrr�test_count_override_quiet]sz#TestCount.test_count_override_quietcCs*|jddddgidd6g�dS)Nz-vvvz--verbose=2z-qz-vr_rs)r*)rrrr�test_count_overriding`szTestCount.test_count_overridingcCs*|jdddgidd6dg�dS)Nz--quiet�3z-vr_rs)r*)rrrr�test_count_interspersed_argsds
z&TestCount.test_count_interspersed_argscCs:|jj�|jdddgidd6ddg�dS)Nz--quietrz-vrrs)r#Zdisable_interspersed_argsr*)rrrr�test_count_no_interspersed_argsis

z)TestCount.test_count_no_interspersed_argscCs|jddgd�dS)Nz-q3z-vzno such option: -3)r:)rrrr�test_count_no_such_optionosz#TestCount.test_count_no_such_optioncCs|jddgd�dS)Nz	--quiet=3z-vz$--quiet option does not take a value)r:)rrrr�test_count_option_no_valuersz$TestCount.test_count_option_no_valuecCs1|jjdd�|jgidd6g�dS)Nrsr)r#r�r*)rrrr�test_count_with_defaultvsz!TestCount.test_count_with_defaultcCs=|jjdd�|jddddgidd6g�dS)Nrsrz-vvvz--verbose=2z-qz-vr_)r#r�r*)rrrr�test_count_overriding_defaultzsz'TestCount.test_count_overriding_defaultN)rrrrGr�rrrrrrrrr r!r"r#rrrrrEsrc@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestMultipleArgscCsAtdt�|_|jjdddddddd	d
d�dS)NrFz-pz--pointrQr^rcrr>�floatrr�point)rr	r#ru)rrrrrG�szTestMultipleArgs.setUpcCs6|jddddddgidd
6ddg�dS)
NrNz-p�1z2.5z-4.3r���?�@g333333@r&�333333�)r(r)r*)r*)rrrr�test_nargs_with_positional_args�s
z0TestMultipleArgs.test_nargs_with_positional_argscCs0|jdddddgidd	6dg�dS)
Nz--pointz-1z2.5z-0r�g�?�@gr&����)r-r,r.)r*)rrrr�test_nargs_long_opt�s
z$TestMultipleArgs.test_nargs_long_optcCs |jddddgd�dS)Nz-pz1.0Z2xz3.5z-option -p: invalid floating-point value: '2x')r:)rrrr�test_nargs_invalid_float_value�sz/TestMultipleArgs.test_nargs_invalid_float_valuecCs|jdddgd�dS)Nz--pointz1.0z3.5z#--point option requires 3 arguments)r:)rrrr�test_nargs_required_values�sz+TestMultipleArgs.test_nargs_required_valuesN)rrrrGr+r/r0r1rrrrr$s
r$c@sLeZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestMultipleArgsAppendcCs�tdt�|_|jjdddddddd	d
d�|jjdd
ddddddd
d�|jjddddd
ddd�dS)NrFz-pz--pointrQr^rcrr>r%rrr&z-fz--foor�rbrVrNz-zz--zeroZappend_constr`r)rr)rr	r#ru)rrrrrG�s

zTestMultipleArgsAppend.setUpcCsC|jdddddddgidd6ddgd
6dg�dS)Nz-f�4z-3r�z--foor'Z666r&�rr_�rN���)r4r6)r_r5)r*)rrrr�test_nargs_append�sz(TestMultipleArgsAppend.test_nargs_appendcCs|jdgd�dS)Nz-f4,3z-f option requires 2 arguments)r:)rrrr�!test_nargs_append_required_values�sz8TestMultipleArgsAppend.test_nargs_append_required_valuescCs.|jddgidd6dgd6g�dS)Nz--foo=3r3r&rr4rN)rr4)r*)rrrr�test_nargs_append_simple�sz/TestMultipleArgsAppend.test_nargs_append_simplecCs=|jdddddgidd6ddd
gd
6g�dS)Nz--zeroz--foorr3z-zr&rrr4rN)rr)rr4)rr)r*)rrrr�test_nargs_append_const�sz.TestMultipleArgsAppend.test_nargs_append_constN)rrrrGr7r8r9r:rrrrr2�s
	r2c@s(eZdZdd�Zdd�ZdS)�TestVersionc
Cstdtdd�|_tjdd�}z9tjjtjdd�tjd<|j	dgd�Wd|tjdd�<XdS)	NrFr�z	%prog 0.1rNrOrz	--versionzbar 0.1
)
rr	r#r;r�r�r�r��curdirr@)rr�rrr�test_version�s"zTestVersion.test_versioncCs)tdt�|_|jdgd�dS)NrFz	--versionzno such option: --version)rr	r#r:)rrrr�test_no_version�szTestVersion.test_no_versionN)rrrr=r>rrrrr;�s
r;c@s:eZdZdZdd�Zdd�Zdd�ZdS)	�TestConflictingDefaultsz4Conflicting default values: the last one should win.c
Cs1tdtddddddd�g�|_dS)	Nr�z-vrQrqrrrsr�r_)rrr#)rrrrrG�szTestConflictingDefaults.setUpcCs@|jjddddddd�|jgidd6g�dS)Nz-qrQrtrrrsr�r)r#rur*)rrrr�test_conflict_default�sz-TestConflictingDefaults.test_conflict_defaultcCs@|jjddddddd�|jgidd6g�dS)Nz-qrQrtrrrsr�)r#rur*)rrrr�test_conflict_default_none�sz2TestConflictingDefaults.test_conflict_default_noneN)rrrr�rGr@rArrrrr?�sr?c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestOptionGroupcCstdt�|_dS)NrF)rr	r#)rrrrrG�szTestOptionGroup.setUpcCs\t|jd�}|jj|�|jddddd�|jdgidd6g�dS)	N�Spamz--spamrQrqr�zspam spam spam spamr_Zspam)rr#�add_option_grouprur*)r�grouprrr�!test_option_group_create_instance�s
z1TestOptionGroup.test_option_group_create_instancecCs|j|jjdd�dS)Nz!not an OptionGroup instance: None)rBr#rD)rrrr�test_add_group_no_group�sz'TestOptionGroup.test_add_group_no_groupcCs |j|jjddd�dS)Nzinvalid arguments)rBr#rD)rrrr� test_add_group_invalid_arguments�sz0TestOptionGroup.test_add_group_invalid_argumentscCsDt|jd�}t�|_|j|jj|fdtd�dS)NrCz"invalid OptionGroup (wrong parser))rr#rr6rDr�)rrErrr�test_add_group_wrong_parser�sz+TestOptionGroup.test_add_group_wrong_parsercCsX|jjddd�}|jd�|jddd�|j|jjd�|�dS)NzGroup 2�descriptionzSome more optionsZBaconz--baconr>rV)r#rDZ	set_titlerur.Zget_option_group)rrErrr�test_group_manipulate�s
	
z%TestOptionGroup.test_group_manipulateN)	rrrrGrFrGrHrIrKrrrrrB�srBc@sbeZdZdd�Zdd�ZGdd�de�Zdd�Zd	d
�Zdd�Z	d
S)�TestExtendAddTypescCs]tdtd|j�|_|jjdddddd�|jjdd	dd
dd
�dS)NrFr�z-ar>r�rrr�z-fz--filer�)rr	�MyOptionr#ru)rrrrrG�szTestExtendAddTypes.setUpcCsTtjjtj�r(tjtj�n(tjjtj�rPtjtj�ndS)N)r�r��isdirr�TESTFN�rmdir�isfile�unlink)rrrr�tearDownszTestExtendAddTypes.tearDownc@sEeZdZdd�ZejdZejej�Zeed<dS)zTestExtendAddTypes.MyOptioncCsNtjj|�s%td|��n%tjj|�sJtd|��n|S)Nz%s: file does not existz%s: not a regular file)r�r��existsr
rQ)r�r�r�rrr�
check_files
z&TestExtendAddTypes.MyOption.check_filer�N)zfile)rrrrUrr�r�r�rrrrrMs
rMcCsDtjtj�|jdtjdgitjd6dd6g�dS)Nz--filez-afoor�rNr�)rZcreate_empty_filerOr*)rrrr�test_filetype_oksz#TestExtendAddTypes.test_filetype_okcCs'|jdtjdgdtj�dS)Nz--filez-afooz%s: file does not exist)r:rrO)rrrr�test_filetype_noexistsz(TestExtendAddTypes.test_filetype_noexistcCs7tjtj�|jdtjdgdtj�dS)Nz--filez-afooz%s: not a regular file)r��mkdirrrOr:)rrrr�test_filetype_notfilesz(TestExtendAddTypes.test_filetype_notfileN)
rrrrGrSrrMrVrWrYrrrrrL�srLc@sJeZdZdd�ZGdd�de�Zdd�Zdd�Zd	S)
�TestExtendAddActionsc	Cs=|jdddddddd�g}td	|�|_dS)
Nz-az--applerQ�extendr>r�rr�appler�)rMrr#)rr)rrrrG%szTestExtendAddActions.setUpc@sCeZdZejdZejdZejdZdd�ZdS)zTestExtendAddActions.MyOptionr[cCsZ|dkr7|jd�}|j|g�j|�ntj|||||||�dS)Nr[�,)�split�ensure_valuer[r�take_action)rrQrrr�r�r�r#Zlvaluerrrr`/s
z)TestExtendAddActions.MyOption.take_actionN)�extend)ra)ra)rrrrZACTIONSZ
STORE_ACTIONSZ
TYPED_ACTIONSr`rrrrrM*s


rMcCs-|jddgidddgd6g�dS)Nz	-afoo,barz--apple=blahrNrOr�r\)r*)rrrr�test_extend_add_action7sz+TestExtendAddActions.test_extend_add_actioncCs6|jddddgiddddgd6g�dS)	Nz-arNz-abarz--apple=x,yrOr�r�r\)r*)rrrr�test_extend_add_action_normal<sz2TestExtendAddActions.test_extend_add_action_normalN)rrrrGrrMrbrcrrrrrZ$s
rZc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestCallbackcCs^tddddd|j�tddddd|jdddd	�g}td
|�|_dS)Nz-xrQrez-fz--filer>r�rr�filenamer�)r�process_optrr#)rr)rrrrGDs		zTestCallback.setUpcCs@|dkr�|j|jdg�|j|jg�|j||jk�|j|dk�|jt|j�idd6�d|j_n�|dkr+|j|jdg�|j|jdg�|j||jk�|j|d�|jt|j�idd6dd6�t|j|j	|�n|j
d|�dS)	Nz-xrer�z--filez-frNr�z!Unknown option %r in process_opt.)r&ryrzr.r#r%r�r��setattrrrr1)rr�r�r��parser_rrrrfQs 'zTestCallback.process_optcCs+|jddgidd6dd6g�dS)Nz-xz
--file=foorNrer�r�)r*)rrrr�
test_callbackeszTestCallback.test_callbackcCsdtdt�}|jd�|jddddddd�d	d
dd�d
}|j||�dS)NrFz-hz-tz--testrQrecSsdS)Nrrrrr�<lambda>qsz1TestCallback.test_callback_help.<locals>.<lambda>r>r�r�rNz%Options:
  -t TEST, --test=TEST  foo
)rr	r�rurD)rr#rCrrr�test_callback_helpjs
zTestCallback.test_callback_helpN)rrrrGrfrirkrrrrrdCs
rdc@s4eZdZdd�Zdd�Zdd�ZdS)�TestCallbackExtraArgscCsUtddddd|jddtfddd	d
dg�g}td|�|_dS)
Nz-pz--pointrQrerhrr>r�rr�pointsr�r�)r�
process_tuplerVrr#)rr)rrrrGzs
	zTestCallbackExtraArgs.setUpcCs�|j|d�|j|tk�|dkrB|j|d�n|dkra|j|d�ntt||jd���}t|j|j�j	|�dS)Nrz-pz1,2,3z--pointz4,5,6r])
r&r.rVrS�mapr^�getattrr�rrr�)rr�r�r�rh�lenr>rrrrn�sz#TestCallbackExtraArgs.process_tuplecCs-|jdddgiddgd
6g�dS)
Nz-p1,2,3z--pointz4,5,6r_rbrr4r��rm)r_rbr)r4r�rr)r*)rrrr�test_callback_extra_args�sz.TestCallbackExtraArgs.test_callback_extra_argsN)rrrrGrnrsrrrrrlysrlc@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestCallbackMeddleArgscs;�fdd�tddd�D�}td|��_dS)	Nc
s7g|]-}tt|�ddd�jdd��qS)rQrerr�things)rr+�	process_n)�.0r�)rrr�
<listcomp>�s	z0TestCallbackMeddleArgs.setUp.<locals>.<listcomp>r_rrr�r�i����r�)�rangerr#)rr)r)rrrG�szTestCallbackMeddleArgs.setUpcCs�t|dd��}|j}t|�|krK|jd||f�n|jj|jg�}|jt|d|���|j	j|�|d|�=dS)Nr_z$Expected %d arguments for %s option.r)
rV�rargsrqr1r�r_rrr�rSZlargs)rr�r�r�rhrcrzrrrrrrv�s	z TestCallbackMeddleArgs.process_ncCs<|jddddddgid
dgd6dd	g�dS)Nz-1rNz-3rOr��quxrur_r)zfoo)zbarzbazr{)r*)rrrr�test_callback_meddle_args�sz0TestCallbackMeddleArgs.test_callback_meddle_argscCs-|jdddgidgd6dg�dS)Nz-2rN�--rurb)zfoor})r*)rrrr�#test_callback_meddle_args_separator�s
z:TestCallbackMeddleArgs.test_callback_meddle_args_separatorN)rrrrGrvr|r~rrrrrt�srtc@s4eZdZdd�Zdd�Zdd�ZdS)�TestCallbackManyArgscCsjtddddddd|jdd�td	d
ddddd|jdd�g}td
|�|_dS)Nz-az--applerQrercrbr>r�z-bz--bobrrVr�)r�process_manyrr#)rr)rrrrG�s
zTestCallbackManyArgs.setUpcCs�|dkr|j|d�n]|dkr>|j|d�n>|dkr]|j|d�n|dkr||j|d�ndS)Nz-arNrOz--apple�ding�dongz-br_rbrz--bobi�r�r)zfoozbar)r�r�)r_rbr�f���)r�r�r)r&)rr�r�r�rhrrrr��sz!TestCallbackManyArgs.process_manycCsO|jddddddddd	d
ddd
dgidd6dd6g�dS)Nz-arNrOz--appler�r�z-br'�2rz--bobz-666r��0r\Zbob)r*)rrrr�test_many_args�s
z#TestCallbackManyArgs.test_many_argsN)rrrrGr�r�rrrrr�s
rc@s4eZdZdd�Zdd�Zdd�ZdS)�TestCallbackCheckAbbrevcCs/t�|_|jjdddd|j�dS)Nz	--foo-barrQre)rr#ru�check_abbrev)rrrrrG�szTestCallbackCheckAbbrev.setUpcCs|j|d�dS)Nz	--foo-bar)r&)rr�r�r�r#rrrr��sz$TestCallbackCheckAbbrev.check_abbrevcCs|jdgig�dS)Nz--foo)r*)rrrr�test_abbrev_callback_expansion�sz6TestCallbackCheckAbbrev.test_abbrev_callback_expansionN)rrrrGr�r�rrrrr��sr�c@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestCallbackVarArgscCsstddddddd�tdd	d
dd�tdd
d	dd|jdd�g}tdtd|�|_dS)Nz-ar>rVrcrbrrr�z-brQrqrJz-cz
--callbackre�crFr�)r�
variable_argsrr	r#)rr)rrrrG�szTestCallbackVarArgs.setUpcCs�|j|dk�g}|j}x�|r�|d}|dd�dkr]t|�dks�|dd�dkr�t|�dkr�|ddkr�Pq%|j|�|d=q%Wt|j|j|�dS)Nrrbz--r_r)r.rzrqr�rgr�rr)rr�r�r�r#rz�argrrrr��s		
(8
z!TestCallbackVarArgs.variable_argscCsA|jdddddgidd6dd	6ddgd
6g�dS)
Nz-a3z-5z
--callbackrNrOrr�r�rJr�r�)rr�)r*)rrrr�test_variable_args�sz&TestCallbackVarArgs.test_variable_argscCsJ|jddddddgidd6dd	6dddgd
6dg�dS)Nz-cZ37z--Zxxxz-b�hellor�TrJr�)r*)rrrr�%test_consume_separator_stop_at_option�s

z9TestCallbackVarArgs.test_consume_separator_stop_at_optioncCsG|jdddddgidd6dd6dddgd6dg�dS)	Nr�z-crNrrOr�rJr�)r*)rrrr�%test_positional_arg_and_variable_args�s

z9TestCallbackVarArgs.test_positional_arg_and_variable_argscCs8|jdddgidd6dd6dgd6g�dS)Nz-crNz-br�TrJr�)r*)rrrr�test_stop_at_option�sz'TestCallbackVarArgs.test_stop_at_optioncCs |jddddgd�dS)Nz-crz-5z-azno such option: -5)r:)rrrr�test_stop_at_invalid_optionsz/TestCallbackVarArgs.test_stop_at_invalid_optionN)
rrrrGr�r�r�r�r�r�rrrrr��sr�c@s(eZdZdd�Zdd�ZdS)�ConflictBasec	Cs@tdddddddd�g}td	td
|�|_dS)Nz-vz	--verboserQrUrrrsr�zincrement verbosityrFr�)rrr	r#)rr)rrrrG
szConflictBase.setUpcCsd|j_dS)Nr_)r��show_version)rr�r�r�r#rrrr�szConflictBase.show_versionN)rrrrGr�rrrrr�	sr�c@sFeZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestConflictz9Use the default conflict resolution for Optik 1.2: error.cCs]|j|d
idd6|jd6dd6td�}|j|jd�|j|jd	�dS)N�-v�	--versionrerQzshow versionr�z5option -v/--version: conflicting option string(s): -vz conflicting option string(s): -vz-v/--version)r�r�)r6r�rr&rZ	option_id)rr2r5rrr�assertTrueconflict_errors
	z%TestConflict.assertTrueconflict_errorcCs|j|jj�dS)N)r�r#ru)rrrr�test_conflict_error sz TestConflict.test_conflict_errorcCs&t|jd�}|j|j�dS)NzGroup 1)rr#r�ru)rrErrr�test_conflict_error_group#sz&TestConflict.test_conflict_error_groupcCs#|j|jjddtd�dS)NrNz'invalid conflict_resolution value 'foo')zfoo)r6r#�set_conflict_handlerr�)rrrr�test_no_such_conflict_handler'sz*TestConflict.test_no_such_conflict_handlerN)rrrr�r�r�r�r�rrrrr�s
r�c@sXeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestConflictResolvec	CsItj|�|jjd�|jjddddd|jdd�dS)N�resolvez-vz	--versionrQrer�zshow version)r�rGr#r�rur�)rrrrrG.s
zTestConflictResolve.setUpcCs�|jjd�}|jjd�}|jjd�}|j||k�|j||k	�|j|jdg�|j|jdg�|j|jdg�|j|jg�|j|jdg�dS)Nz-vz	--verbosez	--version)r#rxr.r&rzry)rrZverbose_optZversion_optrrr�test_conflict_resolve4sz)TestConflictResolve.test_conflict_resolvecCs|jdgd�dS)Nz-hz}Options:
  --verbose      increment verbosity
  -h, --help     show this help message and exit
  -v, --version  show version
)r@)rrrr�test_conflict_resolve_helpAsz.TestConflictResolve.test_conflict_resolve_helpcCs(|jdgidd6dd6g�dS)Nz-vrsr_r�)r*)rrrr�test_conflict_resolve_short_optIsz3TestConflictResolve.test_conflict_resolve_short_optcCs!|jdgidd6g�dS)Nz	--verboser_rs)r*)rrrr�test_conflict_resolve_long_optNs
z2TestConflictResolve.test_conflict_resolve_long_optcCs+|jddgidd6dd6g�dS)Nz	--verbosez	--versionr_rsr�)r*)rrrr�test_conflict_resolve_long_optsSsz3TestConflictResolve.test_conflict_resolve_long_optsN)	rrrrGr�r�r�r�r�rrrrr�-s
r�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestConflictOverridecCsvtdt�|_|jjd�|jjddddddd	d
�|jjdddddd
ddd	d�dS)NrFr�z-nz	--dry-runrQrqrr�dry_runr�zdon't do anythingrr`r�zdry run mode)rr	r#r�ru)rrrrrGYszTestConflictOverride.setUpcCsB|jjd�}|j|jdg�|j|jdg�dS)Nz	--dry-runz-n)r#rxr&ryrz)rr�rrr�test_conflict_override_optscsz0TestConflictOverride.test_conflict_override_optscCs|jdgd�dS)Nz-hzXOptions:
  -h, --help     show this help message and exit
  -n, --dry-run  dry run mode
)r@)rrrr�test_conflict_override_helphsz0TestConflictOverride.test_conflict_override_helpcCs!|jdgidd6g�dS)Nz-nr�r�)r*)rrrr�test_conflict_override_argsos
z0TestConflictOverride.test_conflict_override_argsN)rrrrGr�r�r�rrrrr�Xs
r�aSUsage: 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
aSUsage: 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
aWUsage
=====
  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@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestHelpcCs|jd�|_dS)N�P)�make_parserr#)rrrrrG�szTestHelp.setUpcCs�tddddddddd	�td
ddddd
dddd�tddddddddd�g}tj��$}t|�|d<td|�SWdQXdS)Nz-ar>r�rrr��metavarZAPPLEr�zthrow APPLEs at basketz-bz--boorVr�ZNUMzeshout "boo!" NUM times (in order to frighten away all the evil spirits that cause trouble and mayhem)z--foorQr�rNz*store FOO in the foo list for later fooing�COLUMNSr�)rr�EnvironmentVarGuardr+r)r�columnsr)�envrrrr��szTestHelp.make_parserc
Csatjdd�}z3tjjdd�tjd<|jdg|�Wd|tjdd�<XdS)NrNzbar.pyrz-h)r;r�r�r�r�r@)rr9r�rrr�assertHelpEquals�s
zTestHelp.assertHelpEqualscCs|jt�dS)N)r��_expected_help_basic)rrrr�	test_help�szTestHelp.test_helpcCs!|jjd�|jt�dS)NzUsage: %prog [options])r#Z	set_usager�r�)rrrr�test_help_old_usage�szTestHelp.test_help_old_usagecCs d|jj_|jt�dS)Nr)r#r�Zshort_firstr��_expected_help_long_opts_first)rrrr�test_help_long_opts_first�sz"TestHelp.test_help_long_opts_firstc
Cs?tj��-}d|d<t�|j_|jt�WdQXdS)NZ80r�)rr�rr#r�r��_expected_help_title_formatter)rr�rrr�test_help_title_formatter�s
z"TestHelp.test_help_title_formattercCsB|jd�|_|jt�|jd�|_|jt�dS)Nr�r)r�r#r��_expected_help_short_lines�_expected_very_help_short_lines)rrrr�test_wrap_columns�s
zTestHelp.test_wrap_columnscCsEtdt�|_|jjddddd�d}|j|�dS)NrFz-arQrqr�uolé!uKOptions:
  -h, --help  show this help message and exit
  -a          olé!
)rr	r#rur�)r�expectrrr�test_help_unicodeszTestHelp.test_help_unicodecCs/tdtdd�|_d}|j|�dS)NrFrJuolé!u>olé!

Options:
  -h, --help  show this help message and exit
)rr	r#r�)rr�rrr�test_help_unicode_descriptionsz&TestHelp.test_help_unicode_descriptioncCs�|jjd�t|jdd�}|jddddd�|jj|�d	}|j|�d
|j_|j|d�dS)Nz`This is the program description for %prog.  %prog has an option group as well as single options.zDangerous OptionszZCaution: use of these options is at your own risk.  It is believed that some of them bite.z-grQrqr�z
Group option.aTUsage: 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.
)r#Zset_descriptionrrurDr�Zepilog)rrEr�rrr�test_help_description_groupss			
z%TestHelp.test_help_description_groupsN)rrrrGr�r�r�r�r�r�r�r�r�r�rrrrr��s		
r�c@s(eZdZdd�Zdd�ZdS)�TestMatchAbbrevcCs9|jtdidd6dd6dd6dd6�d�dS)Nz--fz--fozz--fooz--fie)r&r)rrrr�test_match_abbrev@s

z!TestMatchAbbrev.test_match_abbrevcCsDd}idd6dd6dd6}|jt||fdtd�dS)Nz--fz--fozz--fooz--fiez,ambiguous option: --f (--fie, --foo, --foz?))r6rr)rr�Zwordmaprrr�test_match_abbrev_errorHs
z'TestMatchAbbrev.test_match_abbrev_errorN)rrrr�r�rrrrr�?sr�c@s@eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestParseNumbercCs<t�|_|jjddt�|jjddt�dS)Nz-nr>z-l)rr#rurV)rrrrrGQszTestParseNumber.setUpcCsT|jtdtfittjd��|jtdtfittjd��dS)Nrz!invalid literal for int().*: '?'?Z0xOoopsz*invalid literal for int().*: s?'?0xOoops'?)r6rrVr��re�compile)rrrr�test_parse_num_failVsz#TestParseNumber.test_parse_num_failcCs�|jtdt�d�|jtdt�d�|jtdt�d�|jtdt�d�|jtd	t�d
�|jtdt�d�dS)Nr�rZ0x10�Z0XA�
Z010�Z0b11rZ0b)r&rrV)rrrr�test_parse_num_ok`sz!TestParseNumber.test_parse_num_okcCs�|jddddgidd6dd6g�|jdd	d
gidd6dd6g�|jd
gd�|jdgd�|jddgd�dS)Nz-nr�z-lZ0x20r�r�� �lZ0b0101z-l010r�r�z-n008z'option -n: invalid integer value: '008'z-l0b0123z*option -l: invalid integer value: '0b0123'Z0x12xz)option -l: invalid integer value: '0x12x')r*r:)rrrr�test_numeric_optionshsz$TestParseNumber.test_numeric_optionsN)rrrrGr�r�r�rrrrr�Ps
r�cCstjt�dS)N)rZrun_unittestrrrrr�	test_mainusr��__main__iii�Q)Hr;r�r�r�Zunittest�iorr�rZoptparserrrrrr	r
rrr
rrrr>r�r-�	ExceptionrrZTestCaser"rErpr�r�r�r�r�r�r�r�r�rrrr$r2r;r?rBrLrZrdrlrtrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�<module>	snL��O"
3*N�#:"+65
+'
!w%