HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/__pycache__/test_optparse.cpython-37.pyc
B

��g���@sddlZddlZddlZddlZddlZddlmZddlmZddl	Z	ddl	m
Z
mZmZm
Z
mZmZmZmZmZmZmZddl	mZddl	mZGdd�de�ZGd	d
�d
e
�ZGdd�dej�ZGd
d�de�ZGdd�de�ZGdd�de�ZGdd�de�Zddddd�Z dd�Z!Gdd�de�Z"Gdd�de�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.d/�d/e�Z+Gd0d1�d1e�Z,Gd2d3�d3e�Z-Gd4d5�d5e�Z.Gd6d7�d7e�Z/Gd8d9�d9e�Z0Gd:d;�d;e�Z1Gd<d=�d=e�Z2Gd>d?�d?e�Z3Gd@dA�dAe�Z4GdBdC�dCe�Z5GdDdE�dEe�Z6GdFdG�dGe�Z7GdHdI�dIe7�Z8GdJdK�dKe7�Z9GdLdM�dMe�Z:dNZ;dOZ<dPZ=dQZ>dRZ?GdSdT�dTe�Z@GdUdV�dVe�ZAGdWdX�dXe�ZBGdYdZ�dZej�ZCd[d\�ZDeEd]k�reD�dS)^�N)�StringIO)�support)�make_option�Option�TitledHelpFormatter�OptionParser�OptionGroup�SUPPRESS_USAGE�OptionError�OptionConflictError�BadOptionError�OptionValueError�Values)�
_match_abbrev)�
_parse_numc@seZdZddd�Zdd�ZdS)�InterceptedErrorNcCs||_||_||_dS)N)�
error_message�exit_status�exit_message)�selfrrr�r�./usr/local/lib/python3.7/test/test_optparse.py�__init__szInterceptedError.__init__cCs|jp|jpdS)Nzintercepted error)rr)rrrr�__str__$szInterceptedError.__str__)NNN)�__name__�
__module__�__qualname__rrrrrrrs
rc@seZdZddd�Zdd�ZdS)�InterceptingOptionParserrNcCst||d��dS)N)rr)r)r�status�msgrrr�exit(szInterceptingOptionParser.exitcCst|d��dS)N)r)r)rrrrr�error+szInterceptingOptionParser.error)rN)rrrr r!rrrrr's
rc@s>eZdZdd�Zdd�Zdd�Zdd	d
�Zdd�Zd
d�ZdS)�BaseTestcCsH|j�|�\}}t|�}|�||dt��|�||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�
assertParseOK0s
zBaseTest.assertParseOKc
Cs�|dkrd}|dkri}y|||�Wnj|k
r�}zLt|�}t|tj�rj|�|�|�d|j|f�n|�||d||f�|Sd}~XYnX|�dt	��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.
        NrzLexpected 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�re�Pattern�
assertTrue�search�patternr&�failr')r�funcr(�kwargsZexpected_exception�expected_message�errZactual_messagerrr�assertRaisesNs"zBaseTest.assertRaisesc
CsPy|j�|�Wn0tk
r@}z|�|j|�Wdd}~XYnX|�d�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_outputr6rrr�assertParseFail�s
 zBaseTest.assertParseFailrNc
Cs�tj}y0zt�t_|j�|�Wdtj��}|t_XWnztk
r�}z\|�t|t	�dt
|��||kr�|�d|d|d�|�|j
|�|�|j|�Wdd}~XYnX|�d�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+�typer2r&rrr8)rr9r:Zexpected_statusZexpected_errorZsave_stdout�outputr6rrr�assertOutput�s$
 zBaseTest.assertOutputcGs|�||dt|�dS)z4Assert that TypeError is raised when executing func.N)r7�	TypeError)rr3r5r(rrr�assertTypeError�szBaseTest.assertTypeErrorcCs.|��}||kr*|�d|d|d��dS)Nzhelp text failure; expected:
"z	"; got:
"z"
)�format_helpZfailureException)rr#�
expected_helpZactual_helprrr�
assertHelp�szBaseTest.assertHelp)rN)	rrrr*r7r;rArCrFrrrrr"/s;
r"c@s�eZdZdd�Zgifdd�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�TestOptionCheckscCsttd�|_dS)N)�usage)rr	r#)rrrr�setUp�szTestOptionChecks.setUpcCs|�t||t|�dS)N)r7rr
)rr5r(r4rrr�assertOptionError�s
z"TestOptionChecks.assertOptionErrorcCs|�td�dS)Nz+at least one option string must be supplied)rCr)rrrr�test_opt_string_empty�sz&TestOptionChecks.test_opt_string_emptycCs|�ddg�dS)Nz?invalid option string 'b': must be at least two characters long�b)rJ)rrrr�test_opt_string_too_short�sz*TestOptionChecks.test_opt_string_too_shortcCs|�ddg�dS)NzOinvalid short option string '--': must be of the form -x, (x any non-dash char)z--)rJ)rrrr�test_opt_string_short_invalid�sz.TestOptionChecks.test_opt_string_short_invalidcCs|�ddg�dS)NzJinvalid long option string '---': must start with --, followed by non-dashz---)rJ)rrrr�test_opt_string_long_invalid�sz-TestOptionChecks.test_opt_string_long_invalidcCs|�ddgddd��dS)Nz.option -b: invalid keyword arguments: bar, fooz-b)�foo�bar)rJ)rrrr�test_attr_invalid�sz"TestOptionChecks.test_attr_invalidcCs|�ddgddi�dS)Nz option -b: invalid action: 'foo'z-b�actionrP)rJ)rrrr�test_action_invalid�sz$TestOptionChecks.test_action_invalidcCs,|�ddgddi�|�ddgdti�dS)Nz%option -b: invalid option type: 'foo'z-br?rPz'option -b: invalid option type: 'tuple')rJ�tuple)rrrr�test_type_invalid�sz"TestOptionChecks.test_type_invalidcCs|�ddgddd��dS)Nz4option -b: must not supply a type for action 'count'z-b�count�int)rSr?)rJ)rrrr�test_no_type_for_action�sz(TestOptionChecks.test_no_type_for_actioncCs|�dddgddi�dS)Nz@option -b/--bad: must supply a list of choices for type 'choice'z-bz--badr?�choice)rJ)rrrr�test_no_choices_list�sz%TestOptionChecks.test_no_choices_listcCs*td�j}|�d|ddgddd��dS)N�zBoption -b/--bad: choices must be a list of strings ('%s' supplied)z-bz--badrZzbad choices)r?�choices)r?rrJ)r�typenamerrr�test_bad_choices_list�s
z&TestOptionChecks.test_bad_choices_listcCs|�ddgddd��dS)Nz1option -b: must not supply choices for type 'int'z-brXZbad)r?r])rJ)rrrr�test_no_choices_for_typesz)TestOptionChecks.test_no_choices_for_typecCs|�ddgddd��dS)Nz:option -b: 'const' must not be supplied for action 'store'z-b�store�)rS�const)rJ)rrrr�test_no_const_for_actionsz)TestOptionChecks.test_no_const_for_actioncCs|�ddgddd��dS)Nz:option -b: 'nargs' must not be supplied for action 'count'z-brW�)rS�nargs)rJ)rrrr�test_no_nargs_for_actionsz)TestOptionChecks.test_no_nargs_for_actioncCs|�ddgddd��dS)Nz'option -b: callback not callable: 'foo'z-b�callbackrP)rSrh)rJ)rrrr�test_callback_not_callablesz+TestOptionChecks.test_callback_not_callablecCsdS)Nr)rrrr�dummyszTestOptionChecks.dummycCs|�ddgd|jdd��dS)NzAoption -b: callback_args, if supplied, must be a tuple: not 'foo'z-brhrP)rSrh�
callback_args)rJrj)rrrr�test_callback_args_no_tuples
z,TestOptionChecks.test_callback_args_no_tuplecCs|�ddgd|jdd��dS)NzBoption -b: callback_kwargs, if supplied, must be a dict: not 'foo'z-brhrP)rSrh�callback_kwargs)rJrj)rrrr�test_callback_kwargs_no_dict&s
z-TestOptionChecks.test_callback_kwargs_no_dictcCs|�ddgddd��dS)Nz<option -b: callback supplied ('foo') for non-callback optionz-brarP)rSrh)rJ)rrrr�test_no_callback_for_action.sz,TestOptionChecks.test_no_callback_for_actioncCs|�ddgddd��dS)Nz9option -b: callback_args supplied for non-callback optionz-brarP)rSrk)rJ)rrrr� test_no_callback_args_for_action4sz1TestOptionChecks.test_no_callback_args_for_actioncCs|�ddgddd��dS)Nz;option -b: callback_kwargs supplied for non-callback optionz-brarP)rSrm)rJ)rrrr�"test_no_callback_kwargs_for_action:sz3TestOptionChecks.test_no_callback_kwargs_for_actioncCs2|�ddg�|�dddg�|�dddg�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)rJ)rrrr�test_no_single_dash@s
z$TestOptionChecks.test_no_single_dashN)rrrrIrJrKrMrNrOrRrTrVrYr[r_r`rdrgrirjrlrnrorprqrrrrrrrG�s.rGc@sreZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Ze
jddd�dd��ZdS)�TestOptionParsercCs:t�|_|jjddddddd�|jjdd	d
ddd�dS)Nz-vz	--verbosez-nz--noisy�
store_true�verbose)rS�destz-qz--quietz--silent�store_false)rr#�
add_option)rrrrrIQs

zTestOptionParser.setUpcCs|�|jjdd�dS)Nznot an Option instance: None)rCr#rx)rrrr�test_add_option_no_OptionXs
z*TestOptionParser.test_add_option_no_OptioncCs|�|jjddd�dS)Nzinvalid arguments)rCr#rx)rrrr�!test_add_option_invalid_arguments\s
z2TestOptionParser.test_add_option_invalid_argumentscCs\|j�d�}|�|t�|�|jddg�|�|jddg�|�|jd�|�|jd�dS)Nz-vz-nz	--verbosez--noisyrtru)	r#�
get_optionZassertIsInstancerr&�_short_opts�
_long_optsrSrv)r�opt1rrr�test_get_option`sz TestOptionParser.test_get_optioncCs\|j�d�}|j�d�}|j�d�}|j�d�}|�||koP|koP|kn�dS)Nz-vz	--verbosez-nz--noisy)r#r{r/)rr~Zopt2Zopt3Zopt4rrr�test_get_option_equalshs
z'TestOptionParser.test_get_option_equalscCs(|�|j�d��|�|j�d��dS)Nz-vz	--verbose)r/r#�
has_option)rrrr�test_has_optionosz TestOptionParser.test_has_optioncCs�|�|j�d�dk�|�|j�d�dk�|�|j�d�dk�|�|j�d�dk�|�|j�d��|�|j�d��|�|j�d��|�|j�d��|�|j�d��|�|j�d��dS)Nz-vz	--verbosez-nz--noisyz-qz--silent)r/r#r{r8r�)rrrr�assertTrueremovedssz"TestOptionParser.assertTrueremovedcCs|j�d�|��dS)Nz-n)r#�
remove_optionr�)rrrr�test_remove_short_opt�sz&TestOptionParser.test_remove_short_optcCs|j�d�|��dS)Nz	--verbose)r#r�r�)rrrr�test_remove_long_opt�sz%TestOptionParser.test_remove_long_optcCs|�|jjddtd�dS)N)rPzno such option 'foo')r7r#r��
ValueError)rrrr�test_remove_nonexistent�sz(TestOptionParser.test_remove_nonexistentzRelies on sys.getrefcountT)ZcpythoncCsHdg}t�|�}t�}|�dd�||_|��~|�|t�|��dS)N�*z-az	--aaarggh)r<�getrefcountrrx�	big_thingZdestroyr&)rr�Zrefcountr#rrr�test_refleak�s
zTestOptionParser.test_refleakN)rrrrIryrzrr�r�r�r�r�r�rZimpl_detailr�rrrrrsPsrsc@seZdZdd�Zdd�ZdS)�TestOptionValuescCsdS)Nr)rrrrrI�szTestOptionValues.setUpcCs�t�}|�t|�i�|�|i�|�|ddi�|�|d�ddd�}t|d�}|�t|�|�|�||�|�|ddi�|�|i�|�|d�|�|g�dS)NrPrQr\r�)rP�baz)�defaults)rr&r%ZassertNotEqual)r�values�dictrrr�test_basics�s

zTestOptionValues.test_basicsN)rrrrIr�rrrrr��sr�c@s$eZdZdd�Zdd�Zdd�ZdS)�TestTypeAliasescCst�|_dS)N)rr#)rrrrrI�szTestTypeAliases.setUpcCs*|jjddd�|�|j�d�jd�dS)Nz-sr+)r?�string)r#rxr&r{r?)rrrr�test_str_aliases_string�sz'TestTypeAliases.test_str_aliases_stringcCsP|jjdtd�|�|j�d�jd�|jjdtd�|�|j�d�jd�dS)Nz-s)r?r�z-xrX)r#rxr+r&r{r?rX)rrrr�test_type_object�sz TestTypeAliases.test_type_objectN)rrrrIr�r�rrrrr��sr�rb�<ii�Q)�s�m�h�dc	Csby4|d��rt|�St|dd��t|dSWn(ttfk
r\td||f��YnXdS)N���zoption %s: invalid duration: %r)�isdigitrX�_time_unitsr��
IndexErrorr
)�option�opt�valuerrr�_check_duration�s r�c@s*eZdZejdZe�ej�Zeed<dS)�DurationOption)�durationr�N)rrrr�TYPES�copy�TYPE_CHECKERr�rrrrr��s
r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestDefaultValuescCs�t�|_|jjdddd�|jjdddd�|jjd	d
dd�|jjd
d
d�|jjddd�|j�d�|jjddd�ddddddd�|_dS)Nz-vz	--verboseT)�defaultz-qz--quietru)rvz-nrX�%)r?r�z-m)r?z-srPz-tz-u)ru�nr�r��t�u)rr#rx�expected)rrrrrI�szTestDefaultValues.setUpcCs|�|j��|j�dS)N)r&r#�get_default_valuesr�)rrrr�test_basic_defaults�sz%TestDefaultValues.test_basic_defaultscCs:|jjddd�|j�ddd��|�|j��|j�dS)Nr�i����)r�r�)r#�set_defaultsr��updater&r�)rrrr�test_mixed_defaults_post�sz*TestDefaultValues.test_mixed_defaults_postcCs�|jjddd�|jjddd�|j�d�|j�ddd��|�|j��|j�|j�d�|jjddd�|j�ddi�|�|j��|j�dS)	NZbarf�blah)�x�yz-xZfrob)r�z-yr�)r#r�rxr�r�r&r�r�)rrrr�test_mixed_defaults_pre�sz)TestDefaultValues.test_mixed_defaults_precCs�t|j_|jjdddd�|jjdddd�|jjdd�|j�dd	d
d��|�|j��|j�|j�	d�|j�dddd��|�|j��|j�dS)
Nz-dr�i,)r?r�z-eZ6m�42)r�ihr�)r��er�F)
r�r#�option_classrxr�r�r�r&r�Zset_process_default_values)rrrr�test_process_default�sz&TestDefaultValues.test_process_defaultN)rrrrIr�r�r�r�rrrrr��s

r�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestProgNamez]
    Test that %prog expands to the right thing in usage, version,
    and help strings.
    cCs|�|��|�dS)N)r&Z	get_usage)rr#�expected_usagerrr�assertUsageszTestProgName.assertUsagecCs|�|��|�dS)N)r&Zget_version)rr#Zexpected_versionrrr�
assertVersionszTestProgName.assertVersionc
Csztjdd�}zVtj�ddd�tjd<tddd�}d}|�||�|�|d	�|�||d
d�Wd|tjdd�<XdS)NrPrQzbaz.pyrz	%prog ...z	%prog 1.2)�versionzUsage: 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�rF)r�	save_argvr#r�rrr�test_default_prognamesz"TestProgName.test_default_prognamecCsRtdddd�}|�d�|�d�d}|�||�|�|d�|�||d	�dS)
NZthingyz	%prog 0.1z
%prog arg arg)�progr�rHz-hz	--versionzUsage: thingy arg arg
z
thingy 0.1r�)rr�r�r�rF)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)�TestExpandDefaultscCs4tdd�|_d|_d|_|jd|_|jd|_dS)N�test)r�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]
)rr#�help_prefix�	file_help�expected_help_file�expected_help_none)rrrrrI3szTestExpandDefaults.setUpcCs*|jjddd|jd�|�|j|j�dS)Nz-fz--filezfoo.txt)r��help)r#rxr�rFr�)rrrr�test_option_defaultAs

z&TestExpandDefaults.test_option_defaultcCs6|jjdd|jd�|j�dd�|�|j|j�dS)Nz-fz--file)r��filezfoo.txt)r#rxr��set_defaultrFr�)rrrr�test_parser_default_1Gs

z(TestExpandDefaults.test_parser_default_1cCs6|jjdd|jd�|jjdd�|�|j|j�dS)Nz-fz--file)r�zfoo.txt)r�)r#rxr�r�rFr�)rrrr�test_parser_default_2Ms

z(TestExpandDefaults.test_parser_default_2cCs(|jjdd|jd�|�|j|j�dS)Nz-fz--file)r�)r#rxr�rFr�)rrrr�test_no_defaultSs

z"TestExpandDefaults.test_no_defaultcCs*|jjddd|jd�|�|j|j�dS)Nz-fz--file)r�r�)r#rxr�rFr�)rrrr�test_default_none_1Xs

z&TestExpandDefaults.test_default_none_1cCs6|jjdd|jd�|jjdd�|�|j|j�dS)Nz-fz--file)r�)r�)r#rxr�r�rFr�)rrrr�test_default_none_2^s

z&TestExpandDefaults.test_default_none_2cCs<|jjdddd�|jjdd�|jd}|�|j|�dS)Nz-pz--probz1blow up with probability PROB [default: %default])r�g��Q���?)ZprobzF  -p PROB, --prob=PROB  blow up with probability PROB [default: 0.43]
)r#rxr�r�rF)rrErrr�test_float_defaultdsz%TestExpandDefaults.test_float_defaultcCs2|jjddddd�d|jj_|�|j|j�dS)Nz-fz--filezfoo.txtz#read from FILE [default: *DEFAULT*])r�r�z	*DEFAULT*)r#rx�	formatter�default_tagrFr�)rrrr�test_alt_expandms


z"TestExpandDefaults.test_alt_expandcCs:|jjddddd�d|jj_|jd}|�|j|�dS)Nz-fz--filezfoo.txtzread from %default file)r�r�z0  -f FILE, --file=FILE  read from %default file
)r#rxr�r�r�rF)rrErrr�test_no_expandts

z!TestExpandDefaults.test_no_expandN)
rrrrIr�r�r�r�r�r�r�r�r�rrrrr�2s	r�c@s�eZdZdd�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�TestStandardcCs8tddd�tddddd�td	d
d�g}tt|d�|_dS)
Nz-ar�)r?z-bz--boorX�boo)r?rvz--foo�append)rS)rH�option_list)rrr	r#)rr)rrrrI�s

zTestStandard.setUpcCs|�dgd�dS)Nz-az-a option requires 1 argument)r;)rrrr�test_required_value�sz TestStandard.test_required_valuecCs|�ddgd�dS)Nz-bZ5xz&option -b: invalid integer value: '5x')r;)rrrr�test_invalid_integer�s
z!TestStandard.test_invalid_integercCs|�dgd�dS)Nz--boo13zno such option: --boo13)r;)rrrr�test_no_such_option�sz TestStandard.test_no_such_optioncCs|�dgd�dS)Nz--boo=x5z)option --boo: invalid integer value: 'x5')r;)rrrr�test_long_invalid_integer�sz&TestStandard.test_long_invalid_integercCs|�gdddd�g�dS)N)�ar�rP)r*)rrrr�
test_empty�szTestStandard.test_emptycCs&|�ddddgddddgd�g�dS)Nz-ar\z
--foo=blahz--foo=r�)r�r�rP)r*)rrrr�"test_shortopt_empty_longopt_append�sz/TestStandard.test_shortopt_empty_longopt_appendcCs*|�dddddgdddddgd�g�dS)Nz--foorQr\z--foo=xr�)r�r�rP)r*)rrrr�test_long_option_append�s
z$TestStandard.test_long_option_appendcCs|�dgdddd�g�dS)Nz-abcZbc)r�r�rP)r*)rrrr�test_option_argument_joined�s
z(TestStandard.test_option_argument_joinedcCs|�ddgdddd�g�dS)Nz-aZ34)r�r�rP)r*)rrrr�test_option_argument_split�s

z'TestStandard.test_option_argument_splitcCs|�dgdddd�g�dS)Nz-b34�")r�r�rP)r*)rrrr�#test_option_argument_joined_integer�s
z0TestStandard.test_option_argument_joined_integercCs|�ddgdddd�g�dS)Nz-bz-5���)r�r�rP)r*)rrrr�+test_option_argument_split_negative_integer�s

z8TestStandard.test_option_argument_split_negative_integercCs|�dgdddd�g�dS)Nz--boo=13�
)r�r�rP)r*)rrrr� test_long_option_argument_joined�s
z-TestStandard.test_long_option_argument_joinedcCs|�ddgdddd�g�dS)Nz--booZ111�o)r�r�rP)r*)rrrr�test_long_option_argument_split�s

z,TestStandard.test_long_option_argument_splitcCs |�ddgdddgd�g�dS)Nz	--foo=barz-axyz�xyzrQ)r�r�rP)r*)rrrr�test_long_option_short_option�s
z*TestStandard.test_long_option_short_optioncCs |�ddgdddgd�g�dS)Nz--f=barz-axyzr�rQ)r�r�rP)r*)rrrr�test_abbrev_long_option�s
z$TestStandard.test_abbrev_long_optioncCs2|j�g�\}}|j��}|�t|�t|��dS)N)r#r$r�r&r%)rr)r(r�rrr�
test_defaults�s
zTestStandard.test_defaultscCs&|jjddddd�|�dgd�dS)Nz--fozrar�rP)rSr?rvz--f=barz%ambiguous option: --f (--foo, --foz?))r#rxr;)rrrr�test_ambiguous_option�s

z"TestStandard.test_ambiguous_optioncCs$|�ddddgdddgd�g�dS)Nz-ar�z--foorQ)r�r�rP)r*)rrrr� test_short_and_long_option_split�sz-TestStandard.test_short_and_long_option_splitcCs(|�dddddgddddgd�g�dS)	Nz	--foo=barz-bZ123z--foor��{rQ)r�r�rP)r*)rrrr�*test_short_option_split_long_option_append�sz7TestStandard.test_short_option_split_long_option_appendcCs"|�dddgdddd�dg�dS)Nz-arPrQ)r�r�rP)r*)rrrr�*test_short_option_split_one_positional_arg�s
z7TestStandard.test_short_option_split_one_positional_argcCsF|�ddddgdddd�ddg�|�ddddgdddgd�g�dS)Nz-az--rPrQ)r�r�rPz--foo)r*)rrrr�$test_short_option_consumes_separator�s

z1TestStandard.test_short_option_consumes_separatorcCs(|�ddddgdddd�ddg�fdS)Nz-abz--z--foorQrL)r�r�rP)r*)rrrr�&test_short_option_joined_and_separator�s
z3TestStandard.test_short_option_joined_and_separatorcCs&|�ddddgdddgd�dg�dS)Nz-ab�-z--foorQrL)r�r�rP)r*)rrrr�"test_hyphen_becomes_positional_arg�sz/TestStandard.test_hyphen_becomes_positional_argcCs*|�ddddddgddddgd	�g�dS)
Nz-b3z-b�5z	--foo=barz--foor��rQ)r�r�rP)r*)rrrr�test_no_append_versus_append�sz)TestStandard.test_no_append_versus_appendcCs|�ddgdddd�g�dS)Nz-az-b3)r�r�rP)r*)rrrr�&test_option_consumes_optionlike_strings

z3TestStandard.test_option_consumes_optionlike_stringcCs"|jjddd�|�dgd�dS)Nz-trt)rSz-testzno such option: -e)r#rxr;)rrrr�#test_combined_single_invalid_optionsz0TestStandard.test_combined_single_invalid_optionN)rrrrIr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrrrrrr��s6r�c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestBoolcCs2tdddddd�tddd	dd
�g}t|d�|_dS)Nz-vz	--verbosertrur\)rSrvr�z-qz--quietrw)rSrv)r�)rrr#)rr)rrrrIs
zTestBool.setUpcCs|�gddig�dS)Nrur\)r*)rrrr�test_bool_defaultszTestBool.test_bool_defaultcCs,|�dgddig�\}}|�|jdk�dS)Nz-qrurF)r*r/ru)rr)r(rrr�test_bool_falses
zTestBool.test_bool_falsecCs,|�dgddig�\}}|�|jdk�dS)Nz-vrurbT)r*r/ru)rr)r(rrr�test_bool_true"s
zTestBool.test_bool_truecCs|�dddgddig�dS)Nz-qvqz-qz-vrurb)r*)rrrr�test_bool_flicker_on_and_off(sz%TestBool.test_bool_flicker_on_and_offN)rrrrIr	r
rrrrrrr
s
rc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�
TestChoicecCs,ttd�|_|jjdddddddgd�dS)	N)rHz-crarZ�oneZtwoZthree)rSr?rvr])rr	r#rx)rrrrrI.szTestChoice.setUpcCs|�dddgddidg�dS)Nz-crr�rZ)r*)rrrr�test_valid_choice3szTestChoice.test_valid_choicecCs|�dddgd�dS)Nz-c�four�abczEoption -c: invalid choice: 'four' (choose from 'one', 'two', 'three'))r;)rrrr�test_invalid_choice8szTestChoice.test_invalid_choicecCsD|jjdddddgd�|j�d�}|�|jd�|�|jd�dS)	Nz-dz	--defaultrZfiveZsix)r]rZra)r#rxr{r&r?rS)rr�rrr�test_add_choice_option=s

z!TestChoice.test_add_choice_optionN)rrrrIrrrrrrrr
-sr
c@s|eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�ZdS)�	TestCountcCsVttd�|_tdddd�|_|j�|j�|jjdddd�|jjd	d
dddd
�dS)N)rHz-vrWru)rSrvz	--verboserX)r?rvz-qz--quiet�store_constr)rSrvrc)rr	r#r�v_optrx)rrrrrIEs
zTestCount.setUpcCs|�gddig�dS)Nru)r*)rrrrr�MszTestCount.test_emptycCs|�dgddig�dS)Nz-vrurb)r*)rrrr�test_count_onePszTestCount.test_count_onecCs|�dgddig�dS)Nz-vvvru�)r*)rrrr�test_count_threeSszTestCount.test_count_threecCs|�dddgddig�dS)Nz-vrur)r*)rrrr�test_count_three_apartVsz TestCount.test_count_three_apartcCs|�ddgddig�dS)Nz-vvvz--verbose=2rure)r*)rrrr�test_count_override_amountYsz$TestCount.test_count_override_amountcCs|�dddgddig�dS)Nz-vvvz--verbose=2z-qrur)r*)rrrr�test_count_override_quiet\sz#TestCount.test_count_override_quietcCs|�ddddgddig�dS)Nz-vvvz--verbose=2z-qz-vrurb)r*)rrrr�test_count_overriding_szTestCount.test_count_overridingcCs|�dddgddidg�dS)Nz--quiet�3z-vrurb)r*)rrrr�test_count_interspersed_argscsz&TestCount.test_count_interspersed_argscCs*|j��|�dddgddiddg�dS)Nz--quietrz-vrur)r#Zdisable_interspersed_argsr*)rrrr�test_count_no_interspersed_argshs
z)TestCount.test_count_no_interspersed_argscCs|�ddgd�dS)Nz-q3z-vzno such option: -3)r;)rrrr�test_count_no_such_optionnsz#TestCount.test_count_no_such_optioncCs|�ddgd�dS)Nz	--quiet=3z-vz$--quiet option does not take a value)r;)rrrr�test_count_option_no_valueqs
z$TestCount.test_count_option_no_valuecCs$|j�dd�|�gddig�dS)Nrur)r#r�r*)rrrr�test_count_with_defaultusz!TestCount.test_count_with_defaultcCs,|j�dd�|�ddddgddig�dS)Nrurz-vvvz--verbose=2z-qz-vrb)r#r�r*)rrrr�test_count_overriding_defaultysz'TestCount.test_count_overriding_defaultN)rrrrIr�rrrrrrrr r!r"r#r$rrrrrDsrc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestMultipleArgscCs(ttd�|_|jjddddddd�dS)	N)rHz-pz--pointrar�float�point)rSrfr?rv)rr	r#rx)rrrrrIs
zTestMultipleArgs.setUpcCs&|�ddddddgddiddg�dS)	NrPz-p�1z2.5z-4.3r�r')g�?g@g333333�)r*)rrrr�test_nargs_with_positional_args�sz0TestMultipleArgs.test_nargs_with_positional_argscCs"|�dddddgddidg�dS)Nz--pointz-1z2.5z-0r�r')g�g@g�)r*)rrrr�test_nargs_long_opt�sz$TestMultipleArgs.test_nargs_long_optcCs|�ddddgd�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|�dddgd�dS)Nz--pointz1.0z3.5z#--point option requires 3 arguments)r;)rrrr�test_nargs_required_values�sz+TestMultipleArgs.test_nargs_required_valuesN)rrrrIr)r*r+r,rrrrr%~s
r%c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�TestMultipleArgsAppendcCsVttd�|_|jjddddddd�|jjd	d
ddd
dd�|jjdddddd�dS)N)rHz-pz--pointrarr&r')rSrfr?rvz-fz--foor�rerXrPz-zz--zero�append_const)rr)rSrvrc)rr	r#rx)rrrrrI�s

zTestMultipleArgsAppend.setUpc	Cs,|�dddddddgddd	gd
�dg�dS)Nz-f�4z-3r�z--foor(Z666)����)rbi�)r'rP)r*)rrrr�test_nargs_append�sz(TestMultipleArgsAppend.test_nargs_appendcCs|�dgd�dS)Nz-f4,3z-f option requires 2 arguments)r;)rrrr�!test_nargs_append_required_values�sz8TestMultipleArgsAppend.test_nargs_append_required_valuescCs|�ddgddgd�g�dS)Nz--foo=3r/)rr0)r'rP)r*)rrrr�test_nargs_append_simple�s

z/TestMultipleArgsAppend.test_nargs_append_simplecCs(|�dddddgddddgd�g�dS)	Nz--zeroz--foorr/z-z)rr)rr0)r'rP)r*)rrrr�test_nargs_append_const�sz.TestMultipleArgsAppend.test_nargs_append_constN)rrrrIr2r3r4r5rrrrr-�s
	r-c@seZdZdd�Zdd�ZdS)�TestVersionc
Cs\ttdd�|_tjdd�}z*tj�tjdd�tjd<|�	dgd�Wd|tjdd�<XdS)Nz	%prog 0.1)rHr�rPrQrz	--versionzbar 0.1
)
rr	r#r<r�r�r�r��curdirrA)rr�rrr�test_version�s
zTestVersion.test_versioncCsttd�|_|�dgd�dS)N)rHz	--versionzno such option: --version)rr	r#r;)rrrr�test_no_version�szTestVersion.test_no_versionN)rrrr8r9rrrrr6�s
r6c@s(eZdZdZdd�Zdd�Zdd�ZdS)	�TestConflictingDefaultsz4Conflicting default values: the last one should win.cCsttddddd�gd�|_dS)Nz-vrtrurb)rSrvr�)r�)rrr#)rrrrrI�szTestConflictingDefaults.setUpcCs*|jjddddd�|�gddig�dS)Nz-qrwrur)rSrvr�)r#rxr*)rrrr�test_conflict_default�sz-TestConflictingDefaults.test_conflict_defaultcCs*|jjddddd�|�gddig�dS)Nz-qrwru)rSrvr�)r#rxr*)rrrr�test_conflict_default_none�sz2TestConflictingDefaults.test_conflict_default_noneN)rrrr�rIr;r<rrrrr:�sr:c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestOptionGroupcCsttd�|_dS)N)rH)rr	r#)rrrrrI�szTestOptionGroup.setUpcCs@t|jd�}|j�|�|jdddd�|�dgddig�dS)N�Spamz--spamrtzspam spam spam spam)rSr�Zspamrb)rr#�add_option_grouprxr*)r�grouprrr�!test_option_group_create_instance�s
z1TestOptionGroup.test_option_group_create_instancecCs|�|jjdd�dS)Nz!not an OptionGroup instance: None)rCr#r?)rrrr�test_add_group_no_group�s
z'TestOptionGroup.test_add_group_no_groupcCs|�|jjddd�dS)Nzinvalid arguments)rCr#r?)rrrr� test_add_group_invalid_arguments�s
z0TestOptionGroup.test_add_group_invalid_argumentscCs0t|jd�}t�|_|�|jj|fdtd�dS)Nr>z"invalid OptionGroup (wrong parser))rr#rr7r?r�)rr@rrr�test_add_group_wrong_parser�sz+TestOptionGroup.test_add_group_wrong_parsercCs@|jjddd�}|�d�|jddd�|�|j�d�|�dS)NzGroup 2zSome more options)�descriptionZBaconz--baconrX)r?)r#r?Z	set_titlerxr/Zget_option_group)rr@rrr�test_group_manipulate�s

z%TestOptionGroup.test_group_manipulateN)	rrrrIrArBrCrDrFrrrrr=�sr=c@sDeZdZdd�Zdd�ZGdd�de�Zdd�Zd	d
�Zdd�Z	d
S)�TestExtendAddTypescCs<tt|jd�|_|jjddddd�|jjddddd�dS)	N)rHr�z-ar�r�)r?rvz-fz--filer�)rr	�MyOptionr#rx)rrrrrI�szTestExtendAddTypes.setUpcCs:tj�tj�rt�tj�ntj�tj�r6t�tj�dS)N)r�r��isdirr�TESTFN�rmdir�isfile�unlink)rrrr�tearDown�szTestExtendAddTypes.tearDownc@s2eZdZdd�ZejdZe�ej�Zeed<dS)zTestExtendAddTypes.MyOptioncCs6tj�|�std|��ntj�|�s2td|��|S)Nz%s: file does not existz%s: not a regular file)r�r��existsr
rL)r�r�r�rrr�
check_files
z&TestExtendAddTypes.MyOption.check_file)r�r�N)rrrrPrr�r�r�rrrrrHs
rHcCs.t�tj�|�dtjdgtjdd�g�dS)Nz--filez-afoorP)r�r�)rZcreate_empty_filerJr*)rrrr�test_filetype_oks
z#TestExtendAddTypes.test_filetype_okcCs|�dtjdgdtj�dS)Nz--filez-afooz%s: file does not exist)r;rrJ)rrrr�test_filetype_noexistsz(TestExtendAddTypes.test_filetype_noexistcCs*t�tj�|�dtjdgdtj�dS)Nz--filez-afooz%s: not a regular file)r��mkdirrrJr;)rrrr�test_filetype_notfilesz(TestExtendAddTypes.test_filetype_notfileN)
rrrrIrNrrHrQrRrTrrrrrG�srGc@s4eZdZdd�ZGdd�de�Zdd�Zdd�Zd	S)
�TestExtendAddActionscCs&|jdddddd�g}t|d�|_dS)Nz-az--apple�extendr��apple)rSr?rv)r�)rHrr#)rr)rrrrI$s
zTestExtendAddActions.setUpc@s2eZdZejdZejdZejdZdd�ZdS)zTestExtendAddActions.MyOption)rVc	Cs@|dkr&|�d�}|�|g��|�nt�|||||||�dS)NrV�,)�split�ensure_valuerVr�take_action)rrSrvr�r�r�r#Zlvaluerrrr[.s

z)TestExtendAddActions.MyOption.take_actionN)rrrrZACTIONSZ
STORE_ACTIONSZ
TYPED_ACTIONSr[rrrrrH)s


rHcCs |�ddgddddgig�dS)Nz	-afoo,barz--apple=blahrWrPrQr�)r*)rrrr�test_extend_add_action6s
z+TestExtendAddActions.test_extend_add_actioncCs&|�ddddgdddddgig�dS)	Nz-arPz-abarz--apple=x,yrWrQr�r�)r*)rrrr�test_extend_add_action_normal;sz2TestExtendAddActions.test_extend_add_action_normalN)rrrrIrrHr\r]rrrrrU#s
rUc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestCallbackc	Cs8tddd|jd�tddd|jddd�g}t|d	�|_dS)
Nz-xrh)rSrhz-fz--filer��filename)rSrhr?rv)r�)r�process_optrr#)rr)rrrrICs
zTestCallback.setUpcCs�|dkrd|�|jdg�|�|jg�|�||jk�|�|dk�|�t|j�ddi�d|j_n||dkr�|�|jdg�|�|jdg�|�||jk�|�|d�|�t|j�ddd��t|j|j	|�n|�
d|�dS)	Nz-xr_r�z--filez-frP)r_r�z!Unknown option %r in process_opt.)r&r|r}r/r#r%r�r��setattrrvr2)rr�r�r��parser_rrrr`Ps
zTestCallback.process_optcCs|�ddgddd�g�dS)Nz-xz
--file=foorPr�)r_r�)r*)rrrr�
test_callbackds
zTestCallback.test_callbackcCsBttd�}|�d�|jddddd�dd	d
�d}|�||�dS)N)rHz-hz-tz--testrhcSsdS)Nrrrrr�<lambda>p�z1TestCallback.test_callback_help.<locals>.<lambda>r�rP)rSrhr?r�z%Options:
  -t TEST, --test=TEST  foo
)rr	r�rxrF)rr#rErrr�test_callback_helpis


zTestCallback.test_callback_helpN)rrrrIr`rcrfrrrrr^Bs
r^c@s$eZdZdd�Zdd�Zdd�ZdS)�TestCallbackExtraArgsc
Cs0tddd|jdtfddgd�g}t|d�|_dS)	Nz-pz--pointrhrr��points)rSrhrkr?rvr�)r�)r�
process_tuplerXrr#)rr)rrrrIys
zTestCallbackExtraArgs.setUpcCsp|�|d�|�|tk�|dkr0|�|d�n|dkrD|�|d�tt||�d���}t|j|j��	|�dS)Nrz-pz1,2,3z--pointz4,5,6rX)
r&r/rXrU�maprY�getattrr�rvr�)rr�r�r�rb�lenr?rrrri�sz#TestCallbackExtraArgs.process_tuplecCs |�dddgdddgig�dS)Nz-p1,2,3z--pointz4,5,6rh)rbrer)r0r�)r*)rrrr�test_callback_extra_args�s
z.TestCallbackExtraArgs.test_callback_extra_argsN)rrrrIrirnrrrrrgxsrgc@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestCallbackMeddleArgscs*�fdd�tddd�D�}t|d��_dS)Ncs"g|]}tt|�d�jdd��qS)rh�things)rSrhrv)rr+�	process_n)�.0r�)rrr�
<listcomp>�sz0TestCallbackMeddleArgs.setUp.<locals>.<listcomp>r�i����)r�)�rangerr#)rr)r)rrrI�s
zTestCallbackMeddleArgs.setUpcCstt|dd��}|j}t|�|kr4|�d||f�|j�|jg�}|�t|d|���|j	�|�|d|�=dS)Nrbz$Expected %d arguments for %s option.r)
rX�rargsrlr2r�rZrvr�rUZlargs)rr�r�r�rbrfrurvrrrrq�sz TestCallbackMeddleArgs.process_ncCs*|�ddddddgddd	gid
dg�dS)Nz-1rPz-3rQr��quxrp)rP)rQr�rvrbr)r*)rrrr�test_callback_meddle_args�s
z0TestCallbackMeddleArgs.test_callback_meddle_argscCs |�dddgddgidg�dS)Nz-2rPz--rp)rPz--re)r*)rrrr�#test_callback_meddle_args_separator�sz:TestCallbackMeddleArgs.test_callback_meddle_args_separatorN)rrrrIrqrwrxrrrrro�sroc@s$eZdZdd�Zdd�Zdd�ZdS)�TestCallbackManyArgsc	Cs<tdddd|jdd�tdddd	|jd
d�g}t|d�|_dS)Nz-az--applerhrer�)rSrfrhr?z-bz--bobrrX)r�)r�process_manyrr#)rr)rrrrI�s



zTestCallbackManyArgs.setUpcCsZ|dkr|�|d�n@|dkr,|�|d�n*|dkrB|�|d�n|dkrV|�|d�dS)	Nz-a)rPrQz--apple)�ding�dongz-b)rbrerz--bob)if���r�r)r&)rr�r�r�rbrrrrz�sz!TestCallbackManyArgs.process_manycCs4|�ddddddddd	d
ddd
dgddd�g�dS)Nz-arPrQz--appler{r|z-br(�2rz--bobz-666r��0)rWZbob)r*)rrrr�test_many_args�s
z#TestCallbackManyArgs.test_many_argsN)rrrrIrzrrrrrry�s
ryc@s$eZdZdd�Zdd�Zdd�ZdS)�TestCallbackCheckAbbrevcCs t�|_|jjdd|jd�dS)Nz	--foo-barrh)rSrh)rr#rx�check_abbrev)rrrrrI�s
zTestCallbackCheckAbbrev.setUpcCs|�|d�dS)Nz	--foo-bar)r&)rr�r�r�r#rrrr��sz$TestCallbackCheckAbbrev.check_abbrevcCs|�dgig�dS)Nz--foo)r*)rrrr�test_abbrev_callback_expansion�sz6TestCallbackCheckAbbrev.test_abbrev_callback_expansionN)rrrrIr�r�rrrrr��sr�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�TestCallbackVarArgsc	CsBtddddd�tdddd	�td
dd|jd
d�g}tt|d�|_dS)Nz-arXrer�)r?rfrvz-brtrL)rSrvz-cz
--callbackrh�c)rSrhrv)rHr�)r�
variable_argsrr	r#)rr)rrrrI�szTestCallbackVarArgs.setUpcCs�|�|dk�g}|j}xh|r�|d}|dd�dkrBt|�dksj|dd�dkrnt|�dkrn|ddkrnPq|�|�|d=qWt|j|j|�dS)Nrrez--rbr)r/rurlr�rar�rv)rr�r�r�r#ru�argrrrr��s(

z!TestCallbackVarArgs.variable_argscCs(|�dddddgddddgd�g�dS)Nz-a3z-5z
--callbackrPrQ)rr�)r�rLr�)r*)rrrr�test_variable_args�sz&TestCallbackVarArgs.test_variable_argscCs.|�ddddddgdddddgd�dg�dS)	Nz-cZ37z--Zxxxz-b�helloT)r�rLr�)r*)rrrr�%test_consume_separator_stop_at_option�s
z9TestCallbackVarArgs.test_consume_separator_stop_at_optioncCs,|�dddddgdddddgd�dg�dS)Nr�z-crPrrQ)r�rLr�)r*)rrrr�%test_positional_arg_and_variable_args�s
z9TestCallbackVarArgs.test_positional_arg_and_variable_argscCs"|�dddgdddgd�g�dS)Nz-crPz-bT)r�rLr�)r*)rrrr�test_stop_at_option�sz'TestCallbackVarArgs.test_stop_at_optioncCs|�ddddgd�dS)Nz-crz-5z-azno such option: -5)r;)rrrr�test_stop_at_invalid_optionsz/TestCallbackVarArgs.test_stop_at_invalid_optionN)
rrrrIr�r�r�r�r�r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�ConflictBasecCs&tdddddd�g}tt|d�|_dS)Nz-vz	--verboserWruzincrement verbosity)rSrvr�)rHr�)rrr	r#)rr)rrrrI	szConflictBase.setUpcCsd|j_dS)Nrb)r��show_version)rr�r�r�r#rrrr�szConflictBase.show_versionN)rrrrIr�rrrrr�sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�TestConflictz9Use the default conflict resolution for Optik 1.2: error.cCs<|�|dd|jdd�td�}|�|jd�|�|jd�dS)N)z-vz	--versionrhzshow version)rSrhr�z5option -v/--version: conflicting option string(s): -vz conflicting option string(s): -vz-v/--version)r7r�rr&rZ	option_id)rr3r6rrr�assertTrueconflict_errorsz%TestConflict.assertTrueconflict_errorcCs|�|jj�dS)N)r�r#rx)rrrr�test_conflict_errorsz TestConflict.test_conflict_errorcCst|jd�}|�|j�dS)NzGroup 1)rr#r�rx)rr@rrr�test_conflict_error_group"sz&TestConflict.test_conflict_error_groupcCs|�|jjddtd�dS)N)rPz'invalid conflict_resolution value 'foo')r7r#�set_conflict_handlerr�)rrrr�test_no_such_conflict_handler&s
z*TestConflict.test_no_such_conflict_handlerN)rrrr�r�r�r�r�rrrrr�s
r�c@s<eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
S)�TestConflictResolvecCs2t�|�|j�d�|jjddd|jdd�dS)N�resolvez-vz	--versionrhzshow version)rSrhr�)r�rIr#r�rxr�)rrrrrI-s
zTestConflictResolve.setUpcCs�|j�d�}|j�d�}|j�d�}|�||k�|�||k	�|�|jdg�|�|jdg�|�|jdg�|�|jg�|�|jdg�dS)Nz-vz	--verbosez	--version)r#r{r/r&r}r|)rrZverbose_optZversion_optrrr�test_conflict_resolve3sz)TestConflictResolve.test_conflict_resolvecCs|�dgd�dS)Nz-hz}Options:
  --verbose      increment verbosity
  -h, --help     show this help message and exit
  -v, --version  show version
)rA)rrrr�test_conflict_resolve_help@sz.TestConflictResolve.test_conflict_resolve_helpcCs|�dgddd�g�dS)Nz-vrb)rur�)r*)rrrr�test_conflict_resolve_short_optHsz3TestConflictResolve.test_conflict_resolve_short_optcCs|�dgddig�dS)Nz	--verboserurb)r*)rrrr�test_conflict_resolve_long_optMsz2TestConflictResolve.test_conflict_resolve_long_optcCs|�ddgddd�g�dS)Nz	--verbosez	--versionrb)rur�)r*)rrrr�test_conflict_resolve_long_optsRs
z3TestConflictResolve.test_conflict_resolve_long_optsN)	rrrrIr�r�r�r�r�rrrrr�,s
r�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestConflictOverridecCsJttd�|_|j�d�|jjdddddd�|jjddd	d
ddd�dS)
N)rHr�z-nz	--dry-runrt�dry_runzdon't do anything)rSrvr�rr�zdry run mode)rSrcrvr�)rr	r#r�rx)rrrrrIXs

zTestConflictOverride.setUpcCs0|j�d�}|�|jdg�|�|jdg�dS)Nz	--dry-runz-n)r#r{r&r|r})rr�rrr�test_conflict_override_optsbsz0TestConflictOverride.test_conflict_override_optscCs|�dgd�dS)Nz-hzXOptions:
  -h, --help     show this help message and exit
  -n, --dry-run  dry run mode
)rA)rrrr�test_conflict_override_helpgsz0TestConflictOverride.test_conflict_override_helpcCs|�dgddig�dS)Nz-nr�r�)r*)rrrr�test_conflict_override_argsnsz0TestConflictOverride.test_conflict_override_argsN)rrrrIr�r�r�rrrrr�Ws
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@sdeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dS)�TestHelpcCs|�d�|_dS)N�P)�make_parserr#)rrrrrI�szTestHelp.setUpc	Cs`tdddddd�tddd	d
ddd�td
ddddd�g}t���}t|�|d<t|d�SQRXdS)Nz-ar�r�ZAPPLEzthrow APPLEs at basket)r?rv�metavarr�z-bz--boorXr�ZNUMzeshout "boo!" NUM times (in order to frighten away all the evil spirits that cause trouble and mayhem)z--foor�rPz*store FOO in the foo list for later fooing)rSr?rvr��COLUMNS)r�)rr�EnvironmentVarGuardr+r)r�columnsr)�envrrrr��s



zTestHelp.make_parserc
CsJtjdd�}z&tj�dd�tjd<|�dg|�Wd|tjdd�<XdS)NrPzbar.pyrz-h)r<r�r�r�r�rA)rr:r�rrr�assertHelpEquals�s
zTestHelp.assertHelpEqualscCs|�t�dS)N)r��_expected_help_basic)rrrr�	test_help�szTestHelp.test_helpcCs|j�d�|�t�dS)NzUsage: %prog [options])r#Z	set_usager�r�)rrrr�test_help_old_usage�szTestHelp.test_help_old_usagecCsd|jj_|�t�dS)Nr)r#r�Zshort_firstr��_expected_help_long_opts_first)rrrr�test_help_long_opts_first�s
z"TestHelp.test_help_long_opts_firstc	Cs4t���"}d|d<t�|j_|�t�WdQRXdS)NZ80r�)rr�rr#r�r��_expected_help_title_formatter)rr�rrr�test_help_title_formatter�s

z"TestHelp.test_help_title_formattercCs0|�d�|_|�t�|�d�|_|�t�dS)Nr�r)r�r#r��_expected_help_short_lines�_expected_very_help_short_lines)rrrr�test_wrap_columns�s
zTestHelp.test_wrap_columnscCs0ttd�|_|jjdddd�d}|�|�dS)N)rHz-artuolé!)rSr�uKOptions:
  -h, --help  show this help message and exit
  -a          olé!
)rr	r#rxr�)r�expectrrr�test_help_unicodeszTestHelp.test_help_unicodecCs ttdd�|_d}|�|�dS)Nuolé!)rHrEu>olé!

Options:
  -h, --help  show this help message and exit
)rr	r#r�)rr�rrr�test_help_unicode_description
s
z&TestHelp.test_help_unicode_descriptioncCs^|j�d�t|jdd�}|jdddd�|j�|�d}|�|�d	|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-grtz
Group option.)rSr�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_descriptionrrxr?r��epilog)rr@r�rrr�test_help_description_groupss
z%TestHelp.test_help_description_groupsN)rrrrIr�r�r�r�r�r�r�r�r�r�rrrrr��s		
r�c@seZdZdd�Zdd�ZdS)�TestMatchAbbrevc	Cs |�tdddddd��d�dS)Nz--f)z--fozz--fooz--fiez--f)r&r)rrrr�test_match_abbrev?sz!TestMatchAbbrev.test_match_abbrevcCs*d}dddd�}|�t||fdtd�dS)Nz--f)z--fozz--fooz--fiez,ambiguous option: --f (--fie, --foo, --foz?))r7rr)rr�Zwordmaprrr�test_match_abbrev_errorGs

z'TestMatchAbbrev.test_match_abbrev_errorN)rrrr�r�rrrrr�>sr�c@s,eZdZdd�Zdd�Zdd�Zdd�Zd	S)
�TestParseNumbercCs,t�|_|jjdtd�|jjdtd�dS)Nz-n)r?z-l)rr#rxrX)rrrrrIPszTestParseNumber.setUpc	Cs<|�tdtfitt�d��|�tdtfitt�d��dS)Nr\z!invalid literal for int().*: '?'?Z0xOoopsz*invalid literal for int().*: s?'?0xOoops'?)r7rrXr�r-�compile)rrrr�test_parse_num_failUs

z#TestParseNumber.test_parse_num_failcCsp|�tdt�d�|�tdt�d�|�tdt�d�|�tdt�d�|�td	t�d
�|�tdt�d�dS)Nr~rZ0x10�Z0XA�
Z010�Z0b11rZ0b)r&rrX)rrrr�test_parse_num_ok_sz!TestParseNumber.test_parse_num_okcCsf|�ddddgddd�g�|�ddd	gd
dd�g�|�dgd
�|�dgd�|�ddgd�dS)Nz-nr�z-lZ0x20r�� )r��lZ0b0101z-l010rr�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_optionsgs
z$TestParseNumber.test_numeric_optionsN)rrrrIr�r�r�rrrrr�Os
r�c@seZdZdd�ZdS)�MiscTestCasecCsdddh}tj|t|d�dS)NZ
check_builtinZAmbiguousOptionErrorZ
NO_DEFAULT)�	blacklist)rZcheck__all__�optparse)rr�rrr�test__all__us
zMiscTestCase.test__all__N)rrrr�rrrrr�tsr�cCst�t�dS)N)rZrun_unittestrrrrr�	test_mainzsr��__main__)Fr<r�r-r�Zunittest�iorr�rr�rrrrrr	r
rrr
rrr�	ExceptionrrZTestCaser"rGrsr�r�r�r�r�r�r�r�r�rr
rr%r-r6r:r=rGrUr^rgroryr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrr�<module>	sv4
O
3*N#:"+65
+'
!w%