Current File : //usr/local/apps/python3/lib/python3.11/test/__pycache__/test_optparse.cpython-311.pyc
�

�Ke����ddlZddlZddlZddlZddlZddlmZddlmZddl	m
Z
ddlZddlmZm
Z
mZmZmZmZmZmZmZmZmZddlmZddlmZGd�d	e��ZGd
�de��ZGd�d
ej��ZGd�de��ZGd�de��ZGd�de��Z Gd�de��Z!ddddd�Z"d�Z#Gd�de
��Z$Gd�de��Z%Gd �d!e��Z&Gd"�d#e��Z'Gd$�d%e��Z(Gd&�d'e��Z)Gd(�d)e��Z*Gd*�d+e��Z+Gd,�d-e��Z,Gd.�d/e��Z-Gd0�d1e��Z.Gd2�d3e��Z/Gd4�d5e��Z0Gd6�d7e��Z1Gd8�d9e��Z2Gd:�d;e��Z3Gd<�d=e��Z4Gd>�d?e��Z5Gd@�dAe��Z6GdB�dCe��Z7GdD�dEe��Z8GdF�dGe��Z9GdH�dIe9��Z:GdJ�dKe9��Z;GdL�dMe��Z<dNZ=dOZ>dPZ?dQZ@dRZAGdS�dTe��ZBGdU�dVe��ZCGdW�dXe��ZDGdY�dZej��ZEeFd[krejG��dSdS)\�N)�StringIO)�support)�	os_helper)�make_option�Option�TitledHelpFormatter�OptionParser�OptionGroup�SUPPRESS_USAGE�OptionError�OptionConflictError�BadOptionError�OptionValueError�Values)�
_match_abbrev)�
_parse_numc�"�eZdZ			dd�Zd�ZdS)�InterceptedErrorNc�0�||_||_||_dS�N)�
error_message�exit_status�exit_message)�selfrrrs    �</usr/local/apps/python3/lib/python3.11/test/test_optparse.py�__init__zInterceptedError.__init__s"��+���&���(�����c�"�|jp|jpdS)Nzintercepted error)rr�rs r�__str__zInterceptedError.__str__%s���!�M�T�%6�M�:M�Mr)NNN)�__name__�
__module__�__qualname__rr �rrrrsE������#�!�"�)�)�)�)�N�N�N�N�Nrrc��eZdZdd�Zd�ZdS)�InterceptingOptionParserrNc�$�t||����)N)rr�r)r�status�msgs   r�exitzInterceptingOptionParser.exit)s���6��D�D�D�Drc�"�t|����)N)rr()rr*s  r�errorzInterceptingOptionParser.error,s���S�1�1�1�1r�rN)r!r"r#r+r-r$rrr&r&(s;������E�E�E�E�2�2�2�2�2rr&c�8�eZdZd�Zd�Zd�Z		d	d�Zd�Zd�ZdS)
�BaseTestc��|j�|��\}}t|��}|�||dt	��z��|�||dt	��z��||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�args�
expected_opts�expected_positional_args�options�positional_args�optdicts       r�
assertParseOKzBaseTest.assertParseOK1s���&*�[�%;�%;�D�%A�%A�"��/��w�-�-������-�� ���"�	#�	#�	#�	
����*B�� ���#�	$�	$�	$���)�)rc
��|�d}|�i}	||i|��|�dt��z��dS#|$r�}t|��}t|tj��r6|�|�|��d|j�d|�d���n|�	||d|�d|�d���|cYd}~Sd}~wwxYw)	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.
        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'''
zexpected 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�assertRaiseszBaseTest.assertRaisesOs9��*�<��D��>��F�	��D�$�!�&�!�!�!�.
�I�I��
�i�i�	�
�
�
�
�
��-"�	�	�	� ��X�X�N��*�B�J�7�7�
*���� 0� 7� 7�� G� G� G��������1�2�2�2�2�� � ��!1�!1�������")�*�*�*��J�J�J�J�J�J�����)	���s�8�C�A>C�;C�Cc���	|j�|��|�d��dS#t$r&}|�|j|��Yd}~dSd}~wwxYw)z�
        Assert the parser fails with the expected message.  Caller
        must ensure that self.parser is an InterceptingOptionParser.
        zexpected parse failureN)r2r3�assertFalserr5r)r�cmdline_args�expected_outputrKs    r�assertParseFailzBaseTest.assertParseFail�s���
	7��K�"�"�<�0�0�0�
���5�6�6�6�6�6�� �	A�	A�	A����S�.��@�@�@�@�@�@�@�@�@�����	A���s�3�
A#�A�A#rNc���tj}		t��t_|j�|��tj���}|t_n/#tj���}|t_wxYw	|�d��dS#t$r�}|�t|t��dt|��z��||kr!|�d|zdz|zdz��|�
|j|��|�
|j|��Yd}~dSd}~wwxYw)z7Assert the parser prints the expected output on stdout.zexpected parser.exit()z0expected output to be an ordinary string, not %rzexpected: 
'''
z'''
but got 
'''
z'''N)�sys�stdoutrr2r3�getvaluerOrrDrAr@�typer?r5rr)rrPrQ�expected_status�expected_error�save_stdout�outputrKs        r�assertOutputzBaseTest.assertOutput�sy���j��	7�
)�%�Z�Z��
���&�&�|�4�4�4���,�,�.�.��(��
�
����,�,�.�.��(��
�(�(�(�(�
�
���5�6�6�6�6�6�� �
	?�
	?�
	?��O�O��6�3�'�'�B��v�,�,��
 �
 �
 �
��(�(��	�	�-��?�0�1�39�:�<A�B�C�C�C����S�_�o�>�>�>����S�-�~�>�>�>�>�>�>�>�>�>�����
	?���s*�2A,�+B3�,,B�B3�3
E�=BE�Ec�B�|�||dt|��dS)z4Assert that TypeError is raised when executing func.N)rM�	TypeError)rrGrJr7s    r�assertTypeErrorzBaseTest.assertTypeError�s%�����$��d�I�7G�H�H�H�H�Hrc�|�|���}||kr!|�d|zdz|zdz���dS)Nzhelp text failure; expected:
"z	"; got:
"z"
)�format_help�failureException)rr2�
expected_help�actual_helps    r�
assertHelpzBaseTest.assertHelp�sa���(�(�*�*���-�'�'��'�'�1��� ,�-���#�$�%�%�
%�(�'rr.)	r!r"r#r=rMrRr\r_rer$rrr0r00s������*�*�*�<6�6�6�v
7�
7�
7�&'�$(�	7�7�7�7�:I�I�I�%�%�%�%�%rr0c��eZdZd�Zgifd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestOptionChecksc�:�tt���|_dS�N��usage�r	rr2rs r�setUpzTestOptionChecks.setUp����"��8�8�8����rc�L�|�t||t|��dSr)rMrr)rrJr7rHs    r�assertOptionErrorz"TestOptionChecks.assertOptionError�s0�����+�t�V�%�'7�	9�	9�	9�	9�	9rc�<�|�td��dS)Nz+at least one option string must be supplied)r_rrs r�test_opt_string_emptyz&TestOptionChecks.test_opt_string_empty�s.�����[�J�	L�	L�	L�	L�	Lrc�4�|�ddg��dS)Nz?invalid option string 'b': must be at least two characters long�b�rprs r�test_opt_string_too_shortz*TestOptionChecks.test_opt_string_too_short�s,�����M�
�E�	�	�	�	�	rc�4�|�ddg��dS)NzOinvalid short option string '--': must be of the form -x, (x any non-dash char)�--rurs r�test_opt_string_short_invalidz.TestOptionChecks.test_opt_string_short_invalid�s.�����
4�
�F�	�	�	�	�	rc�4�|�ddg��dS)NzJinvalid long option string '---': must start with --, followed by non-dashz---rurs r�test_opt_string_long_invalidz-TestOptionChecks.test_opt_string_long_invalid�s.�����
7�
�G�	�	�	�	�	rc�<�|�ddgddd���dS)Nz.option -b: invalid keyword arguments: bar, foo�-b��foo�barrurs r�test_attr_invalidz"TestOptionChecks.test_attr_invalid�s6�����<�
�F�D��.�.�	0�	0�	0�	0�	0rc�:�|�ddgddi��dS)Nz option -b: invalid action: 'foo'r}�actionrrurs r�test_action_invalidz$TestOptionChecks.test_action_invalid�s3�����.�
�F�X�u�%�	'�	'�	'�	'�	'rc�x�|�ddgddi��|�ddgdti��dS)Nz%option -b: invalid option type: 'foo'r}rWrz'option -b: invalid option type: 'tuple')rp�tuplers r�test_type_invalidz"TestOptionChecks.test_type_invalid�sZ�����3�
�F�V�U�O�	%�	%�	%�	
���5�
�F�V�U�O�	%�	%�	%�	%�	%rc�<�|�ddgddd���dS)Nz4option -b: must not supply a type for action 'count'r}�count�int)r�rWrurs r�test_no_type_for_actionz(TestOptionChecks.test_no_type_for_action�s6�����B�
�F�w��6�6�	8�	8�	8�	8�	8rc�<�|�dddgddi��dS)Nz@option -b/--bad: must supply a list of choices for type 'choice'r}�--badrW�choicerurs r�test_no_choices_listz%TestOptionChecks.test_no_choices_list�s7�����
(�
�7�O�f�h�/�	1�	1�	1�	1�	1rc�l�td��j}|�d|zddgddd���dS)N�zBoption -b/--bad: choices must be a list of strings ('%s' supplied)r}r�r�zbad choices�rW�choices)rWr!rp)r�typenames  r�test_bad_choices_listz&TestOptionChecks.test_bad_choices_list�sQ����8�8�$�����
&�(0�
1�
�7�O���7�7�		9�	9�	9�	9�	9rc�<�|�ddgddd���dS)Nz1option -b: must not supply choices for type 'int'r}r��badr�rurs r�test_no_choices_for_typez)TestOptionChecks.test_no_choices_for_types6�����?�
�F�U�e�4�4�	6�	6�	6�	6�	6rc�<�|�ddgddd���dS)Nz:option -b: 'const' must not be supplied for action 'store'r}�store�)r��construrs r�test_no_const_for_actionz)TestOptionChecks.test_no_const_for_action�6�����H�
�F�w��3�3�	5�	5�	5�	5�	5rc�<�|�ddgddd���dS)Nz:option -b: 'nargs' must not be supplied for action 'count'r}r��)r��nargsrurs r�test_no_nargs_for_actionz)TestOptionChecks.test_no_nargs_for_actionr�rc�<�|�ddgddd���dS)Nz'option -b: callback not callable: 'foo'r}�callbackr�r�r�rurs r�test_callback_not_callablez+TestOptionChecks.test_callback_not_callables;�����5�
�F�z�!&�(�(�	)�	)�	)�	)�	)rc��dSrr$rs r�dummyzTestOptionChecks.dummy����rc�H�|�ddgd|jdd���dS)NzAoption -b: callback_args, if supplied, must be a tuple: not 'foo'r}r�r)r�r��
callback_args�rpr�rs r�test_callback_args_no_tuplez,TestOptionChecks.test_callback_args_no_tuplesB�����
)�
�F�z�!%��&+�-�-�	.�	.�	.�	.�	.rc�H�|�ddgd|jdd���dS)NzBoption -b: callback_kwargs, if supplied, must be a dict: not 'foo'r}r�r)r�r��callback_kwargsr�rs r�test_callback_kwargs_no_dictz-TestOptionChecks.test_callback_kwargs_no_dict'sB�����
(�
�F�z�!%��(-�/�/�	0�	0�	0�	0�	0rc�<�|�ddgddd���dS)Nz<option -b: callback supplied ('foo') for non-callback optionr}r�rr�rurs r�test_no_callback_for_actionz,TestOptionChecks.test_no_callback_for_action/s;�����J�
�F�w�!&�(�(�	)�	)�	)�	)�	)rc�<�|�ddgddd���dS)Nz9option -b: callback_args supplied for non-callback optionr}r�r)r�r�rurs r� test_no_callback_args_for_actionz1TestOptionChecks.test_no_callback_args_for_action5s;�����G�
�F�w�&+�-�-�	.�	.�	.�	.�	.rc�<�|�ddgddd���dS)Nz;option -b: callback_kwargs supplied for non-callback optionr}r�r)r�r�rurs r�"test_no_callback_kwargs_for_actionz3TestOptionChecks.test_no_callback_kwargs_for_action;s;�����I�
�F�w�(-�/�/�	0�	0�	0�	0�	0rc��|�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-dash�-dz--debugrurs r�test_no_single_dashz$TestOptionChecks.test_no_single_dashAs|�����
7�
�J�	�	�	�
	
���
(�
�8��	�	�	�
	
���
7�
�y�!�	#�	#�	#�	#�	#rN)r!r"r#rmrprrrvryr{r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r$rrrgrg�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�#�#�#�#�#rrgc��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
jdd�
��d���ZdS)�TestOptionParserc��t��|_|j�dddddd���|j�dd	d
dd���dS)N�-v�	--verbose�-n�--noisy�
store_true�verbose�r��dest�-q�--quiet�--silent�store_false)r	r2�
add_optionrs rrmzTestOptionParser.setUpRsr��"�n�n�������t�[�$�	�!-�I�	�	?�	?�	?�����t�Y�
�!.�Y�	�	@�	@�	@�	@�	@rc�H�|�|jjdd��dS)Nznot an Option instance: None�r_r2r�rs r�test_add_option_no_Optionz*TestOptionParser.test_add_option_no_OptionYs5�����T�[�3�;�T�	C�	C�	C�	C�	Crc�J�|�|jjddd��dS�Nzinvalid argumentsr�rs r�!test_add_option_invalid_argumentsz2TestOptionParser.test_add_option_invalid_arguments]s2�����T�[�3�0�$��	>�	>�	>�	>�	>rc�P�|j�d��}|�|t��|�|jddg��|�|jddg��|�|jd��|�|jd��dS)Nr�r�r�r�r�r�)	r2�
get_option�assertIsInstancerr5�_short_opts�
_long_optsr�r�)r�opt1s  r�test_get_optionz TestOptionParser.test_get_optionas����{�%�%�d�+�+�����d�F�+�+�+�����)�D�$�<�8�8�8������;�	�*B�C�C�C������l�3�3�3������I�.�.�.�.�.rc��|j�d��}|j�d��}|j�d��}|j�d��}|�||cxuo|cxuo|unc��dS)Nr�r�r�r�)r2r�rD)rr��opt2�opt3�opt4s     r�test_get_option_equalsz'TestOptionParser.test_get_option_equalsis����{�%�%�d�+�+���{�%�%�k�2�2���{�%�%�d�+�+���{�%�%�i�0�0�������4�4�4�4��4�4�4�4��4�4�4�4�5�5�5�5�5rc��|�|j�d����|�|j�d����dS)Nr�r�)rDr2�
has_optionrs r�test_has_optionz TestOptionParser.test_has_optionpsL�������.�.�t�4�4�5�5�5������.�.�{�;�;�<�<�<�<�<rc��|�|j�d��du��|�|j�d��du��|�|j�d��du��|�|j�d��du��|�|j�d����|�|j�d����|�|j�d����|�|j�d����|�|j�d����|�|j�d����dS)Nr�r�r�r�r�r�)rDr2r�rOr�rs r�assertTrueremovedz"TestOptionParser.assertTrueremovedtsx�������.�.�t�4�4��<�=�=�=������.�.�{�;�;�t�C�D�D�D������.�.�t�4�4��<�=�=�=������.�.�y�9�9�T�A�B�B�B������/�/��5�5�6�6�6������/�/��<�<�=�=�=������/�/��5�5�6�6�6������/�/�	�:�:�;�;�;������.�.�t�4�4�5�5�5������.�.�z�:�:�;�;�;�;�;rc�b�|j�d��|���dS)Nr��r2�
remove_optionr�rs r�test_remove_short_optz&TestOptionParser.test_remove_short_opt�s0����!�!�$�'�'�'���� � � � � rc�b�|j�d��|���dS)Nr�r�rs r�test_remove_long_optz%TestOptionParser.test_remove_long_opt�s0����!�!�+�.�.�.���� � � � � rc�V�|�|jjddtd��dS)N�rzno such option 'foo')rMr2r��
ValueErrorrs r�test_remove_nonexistentz(TestOptionParser.test_remove_nonexistent�s5�����$�+�3�X�t�$�&<�	>�	>�	>�	>�	>rzRelies on sys.getrefcountT)�cpythonc��dg}tj|��}t��}|�dd��||_|���~|�|tj|����dS)N�*�-az	--aaarggh)rT�getrefcountr	r��	big_thing�destroyr5)rr��refcountr2s    r�test_refleakzTestOptionParser.test_refleak�sz���D�	��?�9�-�-���������$��,�,�,�$��������������3�?�9�#=�#=�>�>�>�>�>rN)r!r"r#rmr�r�r�r�r�r�r�r�r�r�impl_detailr�r$rrr�r�Qs�������@�@�@�C�C�C�>�>�>�/�/�/�6�6�6�=�=�=�<�<�<�!�!�!�!�!�!�>�>�>��W��4�d�C�C�C�?�?�D�C�?�?�?rr�c��eZdZd�Zd�ZdS)�TestOptionValuesc��dSrr$rs rrmzTestOptionValues.setUp�r�rc�@�t��}|�t|��i��|�|i��|�|ddi��|�|d��ddd�}t|���}|�t|��|��|�||��|�|ddi��|�|i��|�|d��|�|g��dS)Nrr�r�r�)r�baz)�defaults)rr5r4�assertNotEqual)r�values�dicts   r�test_basicszTestOptionValues.test_basics�s����������f���r�*�*�*������$�$�$����F�U�E�N�3�3�3����F�B�'�'�'��R�(�(����&�&�&������f���t�,�,�,������&�&�&����F�U�E�N�3�3�3����F�B�'�'�'����F�B�'�'�'����F�B�'�'�'�'�'rN)r!r"r#rmr�r$rrr�r��s2������
�
�
�(�(�(�(�(rr�c� �eZdZd�Zd�Zd�ZdS)�TestTypeAliasesc�,�t��|_dSr)r	r2rs rrmzTestTypeAliases.setUp�s��"�n�n����rc��|j�dd���|�|j�d��jd��dS)N�-sr@�rW�string)r2r�r5r�rWrs r�test_str_aliases_stringz'TestTypeAliases.test_str_aliases_string�sL������t�%��0�0�0������/�/��5�5�:�H�E�E�E�E�Erc�V�|j�dt���|�|j�d��jd��|j�dt���|�|j�d��jd��dS)Nrrr�-xr�)r2r�r@r5r�rWr�rs r�test_type_objectz TestTypeAliases.test_type_object�s�������t�#��.�.�.������/�/��5�5�:�H�E�E�E�����t�#��.�.�.������/�/��5�5�:�E�B�B�B�B�BrN)r!r"r#rmrr	r$rrrr�sI������%�%�%�F�F�F�C�C�C�C�Crrr��<ii�Q)�s�m�h�dc��	|d���rt|��St|dd���t|dzS#ttf$rtd|�d|�����wxYw)N���zoption z: invalid duration: )�isdigitr��_time_unitsr��
IndexErrorr��option�opt�values   r�_check_durationr�s���>���9�����	<��u�:�:���u�S�b�S�z�?�?�[��r��%;�;�;���
�#�>�>�>���14���e�e�<�>�>�	>�>���s�(A�*A�'A=c�V�eZdZejdzZejej��Zeed<dS)�DurationOption)�durationrN)r!r"r#r�TYPES�copy�TYPE_CHECKERrr$rrrr�s:�������L�=�(�E��4�9�V�0�1�1�L�.�L����rrc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestDefaultValuesc���t��|_|j�ddd���|j�ddd���|j�d	d
d���|j�d
d
���|j�dd���|j�d��|j�dd���ddddddd�|_dS)Nr�r�T��defaultr�r�r�)r�r�r��%�rWr#z-mrrr�-tz-u)r��nrr�t�u)r	r2r��expectedrs rrmzTestDefaultValues.setUp�s���"�n�n�������t�[�$��?�?�?�����t�Y�Y��?�?�?�����t�%���<�<�<�����t�%��0�0�0�����t�U��3�3�3�����t�$�$�$�����t�T��2�2�2�%)�!�#�$�#�#�&�&��
�
�
rc�j�|�|j���|j��dSr)r5r2�get_default_valuesr*rs r�test_basic_defaultsz%TestDefaultValues.test_basic_defaults�s.�������7�7�9�9�4�=�I�I�I�I�Irc���|j�dd���|j�ddd���|�|j���|j��dS)Nr�i����)r'r)r2�set_defaultsr*�updater5r,rs r�test_mixed_defaults_postz*TestDefaultValues.test_mixed_defaults_post�sg���� � �2�� �.�.�.��
���2�D�1�1�2�2�2������7�7�9�9�4�=�I�I�I�I�Irc�P�|j�dd���|j�dd���|j�d��|j�ddd���|�|j���|j��|j�d��|j�dd���|j�ddi��|�|j���|j��dS)	N�barf�blah)�x�yr�frobr"z-yr6)r2r/r�r*r0r5r,r�rs r�test_mixed_defaults_prez)TestDefaultValues.test_mixed_defaults_pre�s	���� � �6�V� �4�4�4�����t�V��4�4�4�����t�$�$�$��
���6��7�7�8�8�8������7�7�9�9�4�=�I�I�I���!�!�$�'�'�'�����t�T��2�2�2��
���c�4�[�)�)�)������7�7�9�9�4�=�I�I�I�I�Irc�F�t|j_|j�ddd���|j�ddd���|j�d���|j�dd	d
d���|�|j���|j��|j�	d��|j�dddd���|�|j���|j��dS)
Nr�ri,r%z-e�6m�42)r'ihr�)r�er'F)
rr2�option_classr�r/r*r0r5r,�set_process_default_valuesrs r�test_process_defaultz&TestDefaultValues.test_process_default�s��#1��� �����t�*�c��B�B�B�����t�*�d��C�C�C��� � �4� �(�(�(��
���3�S�r�:�:�;�;�;������7�7�9�9�4�=�I�I�I���.�.�u�5�5�5��
���3�T��=�=�>�>�>������7�7�9�9�4�=�I�I�I�I�IrN)r!r"r#rmr-r1r8r?r$rrr r �sm������&�&�&� J�J�J�J�J�J�
J�J�J�
J�
J�
J�
J�
Jrr c�*�eZdZdZd�Zd�Zd�Zd�ZdS)�TestProgNamez]
    Test that %prog expands to the right thing in usage, version,
    and help strings.
    c�V�|�|���|��dSr)r5�	get_usage�rr2�expected_usages   r�assertUsagezTestProgName.assertUsages*������)�)�+�+�^�<�<�<�<�<rc�V�|�|���|��dSr)r5�get_version)rr2�expected_versions   r�
assertVersionzTestProgName.assertVersions+������+�+�-�-�/?�@�@�@�@�@rc��tjdd�}	tj�ddd��tjd<tdd���}d}|�||��|�|d	��|�||d
zdz��|tjdd�<dS#|tjdd�<wxYw)Nrr�zbaz.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
)	rT�argv�os�path�joinr	rFrJre)r�	save_argvr2rEs    r�test_default_prognamez"TestProgName.test_default_prognames����H�Q�Q�Q�K�	�	$��'�,�,�u�e�X�>�>�C�H�Q�K�!�+�{�C�C�C�F�2�N����V�^�4�4�4����v�|�4�4�4��O�O�F�*�T�1�N�N�
O�
O�
O�$�C�H�Q�Q�Q�K�K�K��)�C�H�Q�Q�Q�K�#�#�#�#s�B	B2�2Cc��tddd���}|�d��|�d��d}|�||��|�|d��|�||d	z��dS)
N�thingy�	%prog 0.1z
%prog arg arg)�progrLrk�-h�	--versionzUsage: thingy arg arg
z
thingy 0.1rM)r	r�rFrJrerDs   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�6rN)r!r"r#�__doc__rFrJrSrZr$rrrArA	s]��������
=�=�=�A�A�A�$�$�$�"	7�	7�	7�	7�	7rrAc�J�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�ZdS)�TestExpandDefaultsc��td���|_d|_d|_|jdz|_|jdz|_dS)N�test)rWzXUsage: 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_noners rrmzTestExpandDefaults.setUp4sU��"��/�/�/������>���"&�"2�I�#J���"&�"2�F�#G����rc��|j�ddd|j���|�|j|j��dS)N�-f�--file�foo.txt�r#�help)r2r�rarerbrs r�test_option_defaultz&TestExpandDefaults.test_option_defaultBsN������t�X�'0�$(�N�	�	4�	4�	4�	
�����T�%<�=�=�=�=�=rc��|j�dd|j���|j�dd��|�|j|j��dS)Nrerf�ri�filerg)r2r�ra�set_defaultrerbrs r�test_parser_default_1z(TestExpandDefaults.test_parser_default_1Hsa������t�X�$(�N�	�	4�	4�	4������	�2�2�2������T�%<�=�=�=�=�=rc��|j�dd|j���|j�d���|�|j|j��dS)Nrerfrlrg�rm)r2r�rar/rerbrs r�test_parser_default_2z(TestExpandDefaults.test_parser_default_2Nsb������t�X�$(�N�	�	4�	4�	4��� � �i� �0�0�0������T�%<�=�=�=�=�=rc��|j�dd|j���|�|j|j��dS)Nrerfrl�r2r�rarercrs r�test_no_defaultz"TestExpandDefaults.test_no_defaultTsI������t�X�$(�N�	�	4�	4�	4������T�%<�=�=�=�=�=rc��|j�ddd|j���|�|j|j��dS)Nrerfrhrtrs r�test_default_none_1z&TestExpandDefaults.test_default_none_1YsN������t�X�'+�$(�N�	�	4�	4�	4�	
�����T�%<�=�=�=�=�=rc��|j�dd|j���|j�d���|�|j|j��dS)Nrerfrlrq)r2r�rar/rercrs r�test_default_none_2z&TestExpandDefaults.test_default_none_2_sb������t�X�$(�N�	�	4�	4�	4��� � �d� �+�+�+������T�%<�=�=�=�=�=rc��|j�ddd���|j�d���|jdz}|�|j|��dS)N�-pz--probz1blow up with probability PROB [default: %default]rlg��Q���?)�probzF  -p PROB, --prob=PROB  blow up with probability PROB [default: 0.43]
)r2r�r/r`re�rrcs  r�test_float_defaultz%TestExpandDefaults.test_float_defaultest�������(�D�	�	F�	F�	F�	
�� � �d� �+�+�+��(�U�V�
������]�3�3�3�3�3rc��|j�dddd���d|jj_|�|j|j��dS)Nrerfrgz#read from FILE [default: *DEFAULT*]rhz	*DEFAULT*)r2r��	formatter�default_tagrerbrs r�test_alt_expandz"TestExpandDefaults.test_alt_expandns\������t�X�'0�$I�	�	K�	K�	K�-8����)������T�%<�=�=�=�=�=rc��|j�dddd���d|jj_|jdz}|�|j|��dS)Nrerfrgzread from %default filerhz0  -f FILE, --file=FILE  read from %default file
)r2r�r�r�r`rer}s  r�test_no_expandz!TestExpandDefaults.test_no_expandusg������t�X�'0�$=�	�	?�	?�	?�-1����)��(�?�@�
������]�3�3�3�3�3rN)
r!r"r#rmrjrorrrurwryr~r�r�r$rrr]r]3s�������G�G�G�>�>�>�>�>�>�>�>�>�>�>�>�
>�>�>�>�>�>�4�4�4�>�>�>�4�4�4�4�4rr]c��eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestStandardc��tdd���tdddd���td	d
���g}tt|���|_dS)
Nr�rrr}�--boor��boo�rWr��--foo�append�r��rk�option_list�rr&rr2�rr:s  rrmzTestStandard.setUp�sa���t�(�3�3�3��t�W�5�u�E�E�E��w�x�8�8�8�:��/�^�;B�D�D�D����rc�4�|�dgd��dS)Nr�z-a option requires 1 argument�rRrs r�test_required_valuez TestStandard.test_required_value�s!�����d�V�%D�E�E�E�E�Erc�6�|�ddgd��dS)Nr}�5xz&option -b: invalid integer value: '5x'r�rs r�test_invalid_integerz!TestStandard.test_invalid_integer�s2�����d�D�\�E�	G�	G�	G�	G�	Grc�4�|�dgd��dS)Nz--boo13zno such option: --boo13r�rs r�test_no_such_optionz TestStandard.test_no_such_option�s!�����i�[�*C�D�D�D�D�Drc�4�|�dgd��dS)Nz--boo=x5z)option --boo: invalid integer value: 'x5'r�rs r�test_long_invalid_integerz&TestStandard.test_long_invalid_integer�s0�����j�\�H�	J�	J�	J�	J�	Jrc�<�|�gdddd�g��dS)N��ar�r�r=rs r�
test_emptyzTestStandard.test_empty�s*�����2�T�$�t�D�D�b�I�I�I�I�Irc�D�|�gd�ddddgd�g��dS)N)r�r�z
--foo=blahz--foo=r�r4r�r�rs r�"test_shortopt_empty_longopt_appendz/TestStandard.test_shortopt_empty_longopt_append�sA�����=�=�=�!#�D�&�"��F�F��	�	�	�	�	rc�D�|�gd�ddgd�d�g��dS)N)r�r�r�r�z--foo=x)r�r�r5r�r�rs r�test_long_option_appendz$TestStandard.test_long_option_append�sK�����C�C�C�!%�#'�#3�#3�#3�5�5��		�	�	�	�	rc�>�|�dgdddd�g��dS)Nz-abc�bcr�r�rs r�test_option_argument_joinedz(TestStandard.test_option_argument_joined�s8�����F�8�!%�d�4�@�@��	�	�	�	�	rc�@�|�ddgdddd�g��dS)Nr��34r�r�rs r�test_option_argument_splitz'TestStandard.test_option_argument_split�s:�����D�$�<�!%�d�4�@�@��	�	�	�	�	rc�>�|�dgdddd�g��dS)Nz-b34�"r�r�rs r�#test_option_argument_joined_integerz0TestStandard.test_option_argument_joined_integer�s8�����F�8�!%�b��>�>��	�	�	�	�	rc�@�|�ddgdddd�g��dS)Nr}�-5���r�r�rs r�+test_option_argument_split_negative_integerz8TestStandard.test_option_argument_split_negative_integer�s:�����D�$�<�!%�b��>�>��	�	�	�	�	rc�>�|�dgdddd�g��dS)Nz--boo=13�
r�r�rs r� test_long_option_argument_joinedz-TestStandard.test_long_option_argument_joined�s8�����J�<�!%�b��>�>��	�	�	�	�	rc�@�|�ddgdddd�g��dS)Nr��111�or�r�rs r�test_long_option_argument_splitz,TestStandard.test_long_option_argument_split�s;�����G�U�+�!%�c�$�?�?��	�	�	�	�	rc�B�|�ddgdddgd�g��dS)N�	--foo=bar�-axyz�xyzr�r�r�rs r�test_long_option_short_optionz*TestStandard.test_long_option_short_option�s=�����K��1�!&�t�U�G�D�D��	�	�	�	�	rc�B�|�ddgdddgd�g��dS)N�--f=barr�r�r�r�r�rs r�test_abbrev_long_optionz$TestStandard.test_abbrev_long_option�s=�����I�w�/�!&�t�U�G�D�D��	�	�	�	�	rc���|j�g��\}}|j���}|�t	|��t	|����dSr)r2r3r,r5r4)rr:r7r�s    r�
test_defaultszTestStandard.test_defaults�sV���+�0�0��4�4���$��;�1�1�3�3������h����g���7�7�7�7�7rc�p�|j�dddd���|�dgd��dS)N�--fozr�rr�r�rWr�r�z%ambiguous option: --f (--foo, --foz?)�r2r�rRrs r�test_ambiguous_optionz"TestStandard.test_ambiguous_option�sX������w�w�$,�5�	�	:�	:�	:����i�[�D�	F�	F�	F�	F�	Frc�B�|�gd�dddgd�g��dS)N)r�r�r�r�r�r�r�r�rs r� test_short_and_long_option_splitz-TestStandard.test_short_and_long_option_split�s?�����8�8�8�!&�t�U�G�D�D��	�	�	�	�	rc�D�|�gd�ddddgd�g��dS)N)r�r}�123r�r��{r�r�r�r�rs r�*test_short_option_split_long_option_appendz7TestStandard.test_short_option_split_long_option_append�sA�����E�E�E�!%�c�5�%�.�I�I��	�	�	�	�	rc�B�|�gd�dddd�dg��dS)N)r�rr�rr�r�r�rs r�*test_short_option_split_one_positional_argz7TestStandard.test_short_option_split_one_positional_arg�s?�����/�/�/�!&�t�D�A�A�!�7�	$�	$�	$�	$�	$rc��|�gd�dddd�ddg��|�gd�dddgd�g��dS)N)r�rxrr�rxr�rr�)r�rxr�r�r�rs r�$test_short_option_consumes_separatorz1TestStandard.test_short_option_consumes_separator�sv�����5�5�5�!%�d�4�@�@�!�5�>�	+�	+�	+�	
���7�7�7�!%�d�E�7�C�C��	�	�	�	�	rc�F�|�gd�dddd�ddg��fdS)N)�-abrxr�r�rtr�r�r�r�rs r�&test_short_option_joined_and_separatorz3TestStandard.test_short_option_joined_and_separator�sG�����8�8�8�!$�T�$�?�?�#�U�+�	-�	-�	.�	.�	.�	.rc�D�|�gd�dddgd�dg��dS)N)r��-r�r�rtr�r�r�r�rs r�"test_hyphen_becomes_positional_argz/TestStandard.test_hyphen_becomes_positional_arg�sA�����7�7�7�!$�T�5�'�B�B��5�	"�	"�	"�	"�	"rc�D�|�gd�ddddgd�g��dS)N)�-b3r}�5r�r�r��r�r�r�r�rs r�test_no_append_versus_appendz)TestStandard.test_no_append_versus_append�sA�����J�J�J�!%�a����G�G��	�	�	�	�	rc�@�|�ddgdddd�g��dS)Nr�r�r�r�rs r�&test_option_consumes_optionlike_stringz3TestStandard.test_option_consumes_optionlike_strings:�����D�%�=�!&�t�D�A�A��	�	�	�	�	rc�l�|j�dd���|�dgd��dS)Nr&r�r�z-testzno such option: -er�rs r�#test_combined_single_invalid_optionz0TestStandard.test_combined_single_invalid_optionsF������t�L��9�9�9����g�Y�1�	3�	3�	3�	3�	3rN)r!r"r#rmr�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$rrr�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�3rr�c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestBoolc�~�tddddd���tddd	d�
��g}t|���|_dS)Nr�r�r�r�r��r�r�r#r�r�r�r��r�)rr	r2r�s  rrmzTestBool.setUps`���t�*�&2�$-�')�	+�+�+�
�t�(�&3�$-�/�/�/�0��#��9�9�9����rc�8�|�gddig��dS)Nr�r�r�rs r�test_bool_defaultzTestBool.test_bool_defaults0�����2�%�r�?��	�	�	�	�	rc�x�|�dgddig��\}}|�|jdu��dS)Nr�r�rF�r=rDr��rr:r7s   r�test_bool_falsezTestBool.test_bool_falsesJ���,�,�d�V�.7��^�-/�1�1���$�	
�����5�0�1�1�1�1�1rc�x�|�dgddig��\}}|�|jdu��dS)Nr�r�r�Tr�r�s   r�test_bool_truezTestBool.test_bool_true#sJ���,�,�d�V�.7��^�-/�1�1���$�	
�����4�/�0�0�0�0�0rc�<�|�gd�ddig��dS)N)z-qvqr�r�r�r�r�rs r�test_bool_flicker_on_and_offz%TestBool.test_bool_flicker_on_and_off)s7�����/�/�/�%�q�>��	�	�	�	�	rN)r!r"r#rmr�r�r�r�r$rrr�r�s_������
:�
:�
:����
2�2�2�1�1�1�����rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�
TestChoicec�|�tt���|_|j�ddddgd����dS)Nrj�-cr�r�)�one�two�three)r�rWr�r��r&rr2r�rs rrmzTestChoice.setUp/sT��.�^�D�D�D�������t�G�(�$,�6M�6M�6M�	�	O�	O�	O�	O�	Orc�>�|�gd�ddidg��dS)N)r�r�r�r�r�r�r�rs r�test_valid_choicezTestChoice.test_valid_choice4s:�����/�/�/�$�e�,�!�7�	$�	$�	$�	$�	$rc�6�|�gd�d��dS)N)r��four�abczEoption -c: invalid choice: 'four' (choose from 'one', 'two', 'three')r�rs r�test_invalid_choicezTestChoice.test_invalid_choice9s8�����2�2�2�C�	D�	D�	D�	D�	Drc���|j�ddgd����|j�d��}|�|jd��|�|jd��dS)Nr�z	--default)r��five�six)r�r�r�)r2r�r�r5rWr��rrs  r�test_add_choice_optionz!TestChoice.test_add_choice_option>s|������t�[�'>�'>�'>�	�	@�	@�	@��k�$�$�T�*�*�������8�,�,�,������W�-�-�-�-�-rN)r!r"r#rmr�r�rr$rrr�r�.sV������O�O�O�
$�$�$�
D�D�D�
.�.�.�.�.rr�c�b�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�ZdS)�	TestCountc��tt���|_tddd���|_|j�|j��|j�ddd���|j�d	d
ddd�
��dS)Nrjr�r�r�r�r�r�r�r�r��store_constr�r�r�r�)r&rr2r�v_optr�rs rrmzTestCount.setUpFs���.�^�D�D�D��� ��g�I�F�F�F��
�����t�z�*�*�*�����{��Y��G�G�G�����t�Y�&3�)�1�	�	N�	N�	N�	N�	Nrc�8�|�gddig��dS)Nr�r�rs rr�zTestCount.test_emptyNs%�����2�	�4�0�"�5�5�5�5�5rc�:�|�dgddig��dS)Nr�r�r�r�rs r�test_count_onezTestCount.test_count_oneQs&�����D�6�I�q�>�2�6�6�6�6�6rc�:�|�dgddig��dS)N�-vvvr��r�rs r�test_count_threezTestCount.test_count_threeTs&�����F�8�i��^�R�8�8�8�8�8rc�<�|�gd�ddig��dS)N)r�r�r�r�rr�rs r�test_count_three_apartz TestCount.test_count_three_apartWs+�����-�-�-�	�1�~�r�B�B�B�B�Brc�<�|�ddgddig��dS)Nr
�--verbose=2r�r�r�rs r�test_count_override_amountz$TestCount.test_count_override_amountZs)�����F�M�2�Y��N�B�G�G�G�G�Grc�<�|�gd�ddig��dS)N)r
rr�r�rr�rs r�test_count_override_quietz#TestCount.test_count_override_quiet]s+�����8�8�8�9�a�.�"�M�M�M�M�Mrc�<�|�gd�ddig��dS)N�r
rr�r�r�r�r�rs r�test_count_overridingzTestCount.test_count_overriding`s6�����>�>�>�%�q�>�2�	/�	/�	/�	/�	/rc�>�|�gd�ddidg��dS)N�r��3r�r�r�rr�rs r�test_count_interspersed_argsz&TestCount.test_count_interspersed_argsds9�����1�1�1�%�q�>��5�	"�	"�	"�	"�	"rc�r�|j���|�gd�ddiddg��dS)Nrr�rrr�)r2�disable_interspersed_argsr=rs r�test_count_no_interspersed_argsz)TestCount.test_count_no_interspersed_argsisO����-�-�/�/�/����1�1�1�%�q�>���;�	(�	(�	(�	(�	(rc�6�|�ddgd��dS)Nz-q3r�zno such option: -3r�rs r�test_count_no_such_optionz#TestCount.test_count_no_such_optionos#�����e�T�]�,@�A�A�A�A�Arc�6�|�ddgd��dS)Nz	--quiet=3r�z$--quiet option does not take a valuer�rs r�test_count_option_no_valuez$TestCount.test_count_option_no_valuers3�����k�4�0�C�	E�	E�	E�	E�	Erc�n�|j�dd��|�gddig��dS)Nr�r�r2rnr=rs r�test_count_with_defaultz!TestCount.test_count_with_defaultvs<������	�1�-�-�-����2�	�!�}�b�1�1�1�1�1rc�r�|j�dd��|�gd�ddig��dS)Nr�rrr�r&rs r�test_count_overriding_defaultz'TestCount.test_count_overriding_defaultzsN������	�1�-�-�-����>�>�>�%�q�>�2�	/�	/�	/�	/�	/rN)r!r"r#rmr�rrrrrrrr r"r$r'r)r$rrrrEs�������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�/�/�/�/�/rrc�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestMultipleArgsc�z�tt���|_|j�dddddd���dS)	Nrjr{�--pointr�r�float�point�r�r�rWr�r�rs rrmzTestMultipleArgs.setUp�sO��.�^�D�D�D�������t�Y�&-�Q�W�7�	�	T�	T�	T�	T�	Trc�@�|�gd�ddiddg��dS)N)rr{�1�2.5z-4.3r�r/)g�?�@g333333�rr�r�rs r�test_nargs_with_positional_argsz0TestMultipleArgs.test_nargs_with_positional_args�s=�����C�C�C�#�%5�6�!�5�>�	+�	+�	+�	+�	+rc�>�|�gd�ddidg��dS)N)r-�-1r3z-0r�r/)g�r4g�r�r�rs r�test_nargs_long_optz$TestMultipleArgs.test_nargs_long_opt�s;�����@�@�@�#�%6�7�!�7�	$�	$�	$�	$�	$rc�6�|�gd�d��dS)N)r{�1.0�2x�3.5z-option -p: invalid floating-point value: '2x'r�rs r�test_nargs_invalid_float_valuez/TestMultipleArgs.test_nargs_invalid_float_value�s8�����7�7�7�B�	C�	C�	C�	C�	Crc�6�|�gd�d��dS)N)r-r:r<z#--point option requires 3 argumentsr�rs r�test_nargs_required_valuesz+TestMultipleArgs.test_nargs_required_values�s5�����6�6�6�B�	D�	D�	D�	D�	DrN)r!r"r#rmr5r8r=r?r$rrr+r+sj������T�T�T�
+�+�+�
$�$�$�
C�C�C�
D�D�D�D�Drr+c�,�eZdZd�Zd�Zd�Zd�Zd�ZdS)�TestMultipleArgsAppendc��tt���|_|j�dddddd���|j�d	d
ddd
d���|j�ddddd���dS)Nrjr{r-r�rr.r/r0rer�r�r�r�r�-z�--zero�append_const�rrrr�rs rrmzTestMultipleArgsAppend.setUp�s���.�^�D�D�D�������t�Y�w�a�$+�'�	�	;�	;�	;�����t�W�X�Q�$)��	�	7�	7�	7�����t�X�n�$)��	�	9�	9�	9�	9�	9rc�D�|�gd�dddgd�dg��dS)N)re�4�-3r4r�r2�666)����)r�i��r/rr4r�rs r�test_nargs_appendz(TestMultipleArgsAppend.test_nargs_append�sB�����I�I�I�%)�7�H�2E�F�F�"�8�	%�	%�	%�	%�	%rc�4�|�dgd��dS)Nz-f4,3z-f option requires 2 argumentsr�rs r�!test_nargs_append_required_valuesz8TestMultipleArgsAppend.test_nargs_append_required_values�s+�����g�Y�=�	?�	?�	?�	?�	?rc�@�|�ddgddgd�g��dS)Nz--foo=3rH�rrKrMr�rs r�test_nargs_append_simplez/TestMultipleArgsAppend.test_nargs_append_simple�s;�����I�s�+�%)�&��:�:��	�	�	�	�	rc�B�|�gd�dgd�d�g��dS)N)rDr�rrHrC)rFrRrFrMr�rs r�test_nargs_append_constz.TestMultipleArgsAppend.test_nargs_append_const�sB�����>�>�>�%)�1I�1I�1I�J�J��	�	�	�	�	rN)r!r"r#rmrNrPrSrUr$rrrArA�s_������9�9�9�%�%�%�
?�?�?����
����rrAc��eZdZd�Zd�ZdS)�TestVersionc�R�ttd���|_tjdd�}	t
j�t
jdd��tjd<|�	dgd��|tjdd�<dS#|tjdd�<wxYw)NrV)rkrLrr�rrYzbar 0.1
)
r&rr2rTrNrOrPrQ�curdirr\)rrRs  r�test_versionzTestVersion.test_version�s���.�^�7B�D�D�D����H�Q�Q�Q�K�	�	$��'�,�,�r�y�%��?�?�C�H�Q�K����{�m�[�9�9�9�#�C�H�Q�Q�Q�K�K�K��)�C�H�Q�Q�Q�K�#�#�#�#s�AB�B&c�h�tt���|_|�dgd��dS)NrjrYzno such option: --version)r&rr2rRrs r�test_no_versionzTestVersion.test_no_version�s=��.�^�D�D�D������k�]�8�	:�	:�	:�	:�	:rN)r!r"r#rZr\r$rrrWrW�s2������$�$�$�:�:�:�:�:rrWc�$�eZdZdZd�Zd�Zd�ZdS)�TestConflictingDefaultsz4Conflicting default values: the last one should win.c�T�ttdddd���g���|_dS)Nr�r�r�r�r�r�)r	rr2rs rrmzTestConflictingDefaults.setUp�s9��"���\�	�1�M�M�M�0O�P�P�P����rc�t�|j�dddd���|�gddig��dS)Nr�r�r�rr��r2r�r=rs r�test_conflict_defaultz-TestConflictingDefaults.test_conflict_default�sL������t�M�	�'(�	�	*�	*�	*����2�	�1�~�r�2�2�2�2�2rc�t�|j�dddd���|�gddig��dS)Nr�r�r�r�rars r�test_conflict_default_nonez2TestConflictingDefaults.test_conflict_default_none�sM������t�M�	�'+�	�	-�	-�	-����2�	�4�0�"�5�5�5�5�5rN)r!r"r#r[rmrbrdr$rrr^r^�sJ������>�>�P�P�P�3�3�3�
6�6�6�6�6rr^c�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestOptionGroupc�:�tt���|_dSrirlrs rrmzTestOptionGroup.setUp�rnrc���t|jd��}|j�|��|�ddd���|�dgddig��dS)N�Spamz--spamr�zspam spam spam spam�r�ri�spamr�)r
r2�add_option_groupr�r=�r�groups  r�!test_option_group_create_instancez1TestOptionGroup.test_option_group_create_instance�sq���D�K��0�0����$�$�U�+�+�+�
����,�3�	�	5�	5�	5����H�:���{�B�7�7�7�7�7rc�H�|�|jjdd��dS)Nz!not an OptionGroup instance: None�r_r2rlrs r�test_add_group_no_groupz'TestOptionGroup.test_add_group_no_group�s5�����T�[�9�@�$�	H�	H�	H�	H�	Hrc�J�|�|jjddd��dSr�rqrs r� test_add_group_invalid_argumentsz0TestOptionGroup.test_add_group_invalid_arguments�s2�����T�[�9�0�$��	>�	>�	>�	>�	>rc��t|jd��}t��|_|�|jj|fdt
d��dS)Nriz"invalid OptionGroup (wrong parser))r
r2r	rMrlr�rms  r�test_add_group_wrong_parserz+TestOptionGroup.test_add_group_wrong_parser�sX���D�K��0�0��#�~�~������$�+�6���$�$�&J�	L�	L�	L�	L�	Lrc���|j�dd���}|�d��|�dd���|�|j�d��|��dS)NzGroup 2zSome more options)�description�Baconz--baconr�r)r2rl�	set_titler�rD�get_option_grouprms  r�test_group_manipulatez%TestOptionGroup.test_group_manipulate�sz����,�,�Y�9L�-�N�N��
���� � � �
������/�/�/������4�4�Y�?�?��G�G�G�G�GrN)	r!r"r#rmrorrrtrvr|r$rrrfrf�sy������9�9�9�8�8�8�H�H�H�>�>�>�L�L�L�H�H�H�H�Hrrfc�H�eZdZd�Zd�ZGd�de��Zd�Zd�Zd�Z	dS)	�TestExtendAddTypesc��tt|j���|_|j�dddd���|j�dddd���dS)	N)rkr=r�rr�r�rerfrm)r&r�MyOptionr2r�rs rrmzTestExtendAddTypes.setUp�sf��.�^�<@�M�K�K�K�������t�T��s��C�C�C�����t�X�F���H�H�H�H�Hrc�*�tj�tj��r tjtj��dStj�tj��r tjtj��dSdSr)rOrP�isdirr�TESTFN�rmdir�isfile�unlinkrs r�tearDownzTestExtendAddTypes.tearDownsp��
�7�=�=��)�*�*�	(��H�Y�%�&�&�&�&�&�
�W�^�^�I�,�
-�
-�	(��I�i�&�'�'�'�'�'�	(�	(rc�\�eZdZd�ZejdzZejej��Zeed<dS)�TestExtendAddTypes.MyOptionc���tj�|��std|z���tj�|��std|z���|S)N�%s: file does not exist�%s: not a regular file)rOrP�existsrr�rs   r�
check_filez&TestExtendAddTypes.MyOption.check_files]���7�>�>�%�(�(�
I�&�'@�5�'H�I�I�I��W�^�^�E�*�*�
I�&�'?�%�'G�H�H�H��LrrqrmN)r!r"r#r�rrrrr$rrr�r�sK������	�	�	���y�(�� �t�y��!4�5�5��)��V���rr�c��tjtj��|�dtjdgtjdd�g��dS)Nrf�-afoor)rmr�)r�create_empty_filer�r=rs r�test_filetype_okz#TestExtendAddTypes.test_filetype_oksU���#�I�$4�5�5�5����H�i�&6��@�$-�$4�5�A�A��	�	�	�	�	rc�f�|�dtjdgdtjz��dS)Nrfr�r�)rRrr�rs r�test_filetype_noexistz(TestExtendAddTypes.test_filetype_noexists>�����h�	�(8�'�B�6�&�-�.�	/�	/�	/�	/�	/rc��tjtj��|�dtjdgdtjz��dS)Nrfr�r�)rO�mkdirrr�rRrs r�test_filetype_notfilez(TestExtendAddTypes.test_filetype_notfilesQ��
���!�"�"�"����h�	�(8�'�B�5�&�-�.�	/�	/�	/�	/�	/rN)
r!r"r#rmr�rr�r�r�r�r$rrr~r~�s�������I�I�I�(�(�(�
*�
*�
*�
*�
*�F�
*�
*�
*����/�/�/�
/�/�/�/�/rr~c�<�eZdZd�ZGd�de��Zd�Zd�ZdS)�TestExtendAddActionsc�f�|�ddddd���g}t|���|_dS)Nr��--apple�extendr�appler�r�)r�r	r2r�s  rrmzTestExtendAddActions.setUp%s@���=�=��y��&.�W�!�>�>�?��"�w�7�7�7����rc�P�eZdZejdzZejdzZejdzZd�ZdS)�TestExtendAddActions.MyOption)r�c	���|dkr@|�d��}|�|g���|��dStj|||||||��dS)Nr��,)�split�ensure_valuer�r�take_action)rr�r�rrr�r2�lvalues        rr�z)TestExtendAddActions.MyOption.take_action/sv����!�!����S�)�)���#�#�D�"�-�-�4�4�V�<�<�<�<�<��"�4���s�F�E�#)�+�+�+�+�+rN)r!r"r#r�ACTIONS�
STORE_ACTIONS�
TYPED_ACTIONSr�r$rrr�r�*sI�������.�;�.���,�{�:�
��,�{�:�
�	+�	+�	+�	+�	+rr�c�@�|�ddgdgd�ig��dS)Nz	-afoo,barz--apple=blahr�)rr�r4r�rs r�test_extend_add_actionz+TestExtendAddActions.test_extend_add_action7s=�����K��8�#�%;�%;�%;�<��	�	�	�	�	rc�@�|�gd�dgd�ig��dS)N)r�rz-abarz--apple=x,yr�)rr�r5r6r�rs r�test_extend_add_action_normalz2TestExtendAddActions.test_extend_add_action_normal<s?�����@�@�@�#�%=�%=�%=�>��	�	�	�	�	rN)r!r"r#rmrr�r�r�r$rrr�r�$sk������8�8�8�
+�+�+�+�+�F�+�+�+����
����rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestCallbackc	��tddd|j���tddd|jdd���g}t|�	��|_dS)
Nrr�r�rerfr�filename)r�r�rWr�r�)r�process_optr	r2r�s  rrmzTestCallback.setUpDsi���t�#�&0�(,�(8�:�:�:��t�'�&0�(,�(8�$,�$.�0�0�0�		1��#�w�7�7�7����rc��|dkr�|�|jdg��|�|jg��|�||ju��|�|du��|�t|j��ddi��d|j_dS|dkr�|�|jdg��|�|jdg��|�||ju��|�|d��|�t|j��ddd���t|j|j	|��dS|�
d|z��dS)	Nrr�r�rfrer�r�r5z!Unknown option %r in process_opt.)r5r�r�rDr2r4r�r5�setattrr�r?�rrrr�parser_s     rr�zTestCallback.process_optQss���$�;�;����V�/�$��8�8�8����V�.��3�3�3��O�O�G�t�{�2�3�3�3��O�O�E�T�M�*�*�*����T�'�.�1�1�J��3E�F�F�F�!�G�N����
�H�_�_����V�/�$��8�8�8����V�.��
�;�;�;��O�O�G�t�{�2�3�3�3����U�E�*�*�*����T�'�.�1�1��2�3N�3N�O�O�O��G�N�F�K��7�7�7�7�7��I�I�9�C�?�@�@�@�@�@rc�>�|�ddgddd�g��dS)Nrz
--file=foorr�r�r�rs r�
test_callbackzTestCallback.test_callbackes9�����D�,�/�(-�B�7�7��	�	�	�	�	rc���tt���}|�d��|�dddd�dd�	��d
}|�||��dS)NrjrXr&z--testr�c��dSrr$r$rr�<lambda>z1TestCallback.test_callback_help.<locals>.<lambda>qs��4�rrr)r�r�rWriz%Options:
  -t TEST, --test=TEST  foo
)r	rr�r�re)rr2rcs   r�test_callback_helpzTestCallback.test_callback_helpjsv���N�3�3�3�����T�"�"�"����$���#/�<�h�$�	�	&�	&�	&�9�
�����
�.�.�.�.�.rN)r!r"r#rmr�r�r�r$rrr�r�CsS������8�8�8�A�A�A�(���
/�/�/�/�/rr�c� �eZdZd�Zd�Zd�ZdS)�TestCallbackExtraArgsc
�x�tddd|jdtfddg���g}t|���|_dS)	Nr{r-r�rr�points)r�r�r�rWr�r#r�)r�
process_tupler�r	r2r�s  rrmzTestCallbackExtraArgs.setUpzsM���t�Y�z�(,�(:�./��X�H�$,�b�:�:�:�;��#�w�7�7�7����rc��|�|d��|�|tu��|dkr|�|d��n|dkr|�|d��tt	||�d������}t
|j|j���	|��dS)Nrr{z1,2,3r-�4,5,6r�)
r5rDr�r��mapr��getattrr�r�r�)rrrrr��lenrWs       rr�z#TestCallbackExtraArgs.process_tuple�s�������a� � � �������$�$�$��$�;�;����U�G�,�,�,�,�
�I�
�
����U�G�,�,�,��c�$����C� 0� 0�1�1�2�2�������,�,�3�3�E�:�:�:�:�:rc�@�|�gd�dddgig��dS)N)z-p1,2,3r-r�r��r�r�r)rKr��r�rs r�test_callback_extra_argsz.TestCallbackExtraArgs.test_callback_extra_args�s=�����:�:�:�$�w��&8�9��	�	�	�	�	rN)r!r"r#rmr�r�r$rrr�r�ysA������8�8�8�
;�
;�
;�����rr�c�&�eZdZd�Zd�Zd�Zd�ZdS)�TestCallbackMeddleArgsc�l���fd�tddd��D��}t|����_dS)Nc�Z��g|]'}tt|��d�jd�����(S)r��things�r�r�r�)rr@�	process_n)�.0r5rs  �r�
<listcomp>z0TestCallbackMeddleArgs.setUp.<locals>.<listcomp>�sL���/�/�/���s�1�v�v�j�(,��X�G�G�G�/�/�/rri����r�)�ranger	r2r�s` rrmzTestCallbackMeddleArgs.setUp�sO���/�/�/�/�!�"�b�"�-�-�/�/�/��#�w�7�7�7����rc�n�t|dd���}|j}t|��|kr|�d||fz��|j�|jg��}|�t|d|�����|j	�|��|d|�=dS)Nr�z$Expected %d arguments for %s option.r)
r��rargsr�r?r�r�r�r�r��largs)rrrrr�r�r�r�s        rr�z TestCallbackMeddleArgs.process_n�s����C����G�����
���u�:�:�����I�I�<��s�|�K�L�L�L��~�*�*�6�;��;�;�����E�%��%��.�)�)�*�*�*��
���U�#�#�#��!�E�'�N�N�Nrc�D�|�gd�dddgiddg��dS)N)r7rrIr�r��quxr�r�)r�r�r�r�rr�rs r�test_callback_meddle_argsz0TestCallbackMeddleArgs.test_callback_meddle_args�sB�����C�C�C�$�x�1F�&G�H��q�6�	#�	#�	#�	#�	#rc�@�|�gd�ddgidg��dS)N)z-2rrxr�)rrxr�r�rs r�#test_callback_meddle_args_separatorz:TestCallbackMeddleArgs.test_callback_meddle_args_separator�s<�����.�.�.�$�}�o�6��3�	 �	 �	 �	 �	 rN)r!r"r#rmr�r�r�r$rrr�r��sP������8�8�8�	�	�	�#�#�#�
 � � � � rr�c� �eZdZd�Zd�Zd�ZdS)�TestCallbackManyArgsc	��tdddd|jd���tdddd	|jd
���g}t|���|_dS)Nr�r�r�r�r)r�r�r�rWr}�--bobrr�r�)r�process_manyr	r2r�s  rrmzTestCallbackManyArgs.setUp�sl���t�Y�z��(,�(9��J�J�J��t�W�Z�q�(,�(9��G�G�G�H��#�w�7�7�7����rc��|dkr|�|d��dS|dkr|�|d��dS|dkr|�|d��dS|dkr|�|d��dSdS)	Nr�r~r�)�ding�dongr}r�r�)if���r�r�r5r�s     rr�z!TestCallbackManyArgs.process_many�s����$�;�;����U�N�3�3�3�3�3�
�I�
�
����U�$4�5�5�5�5�5�
�D�[�[����U�I�.�.�.�.�.�
�G�^�^����U�M�2�2�2�2�2��^rc�>�|�gd�ddd�g��dS)N)r�rr�r�r�r�r}r2�2rr�z-666r;�0)r��bobr�rs r�test_many_argsz#TestCallbackManyArgs.test_many_args�sC�����!�!�!�&*�$�7�7��		�	�	�	�	rN)r!r"r#rmr�r�r$rrr�r��sA������8�8�8�3�3�3�����rr�c� �eZdZd�Zd�Zd�ZdS)�TestCallbackCheckAbbrevc�p�t��|_|j�dd|j���dS)N�	--foo-barr�r�)r	r2r��check_abbrevrs rrmzTestCallbackCheckAbbrev.setUp�s@��"�n�n�������{�:�(,�(9�	�	;�	;�	;�	;�	;rc�2�|�|d��dS)Nr�r��rrrrr2s     rr�z$TestCallbackCheckAbbrev.check_abbrev�s������k�*�*�*�*�*rc�6�|�dgig��dS)Nr�r�rs r�test_abbrev_callback_expansionz6TestCallbackCheckAbbrev.test_abbrev_callback_expansion�s"�����G�9�b�"�-�-�-�-�-rN)r!r"r#rmr�r�r$rrr�r��sA������;�;�;�
+�+�+�.�.�.�.�.rr�c�8�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	dS)	�TestCallbackVarArgsc	��tdddd���tddd�	��td
dd|jd
���g}tt|���|_dS)Nr�r�r�r�)rWr�r�r}r�rtr�r��
--callbackr��cr�r�)r�
variable_argsr&rr2r�s  rrmzTestCallbackVarArgs.setUp�sw���t�%�q�s�C�C�C��t�L�s�C�C�C��t�\�*�(,�(:��F�F�F�G��/�^�;B�D�D�D����rc�b�|�|du��g}|j}|rq|d}|dd�dkrt|��dks-|dd�dkr t|��dkr
|ddkrn|�|��|d=|�qt	|j|j|��dS)Nrr�rxr�r�)rDr�r�r�r�r�r�)rrrrr2r��args       rr�z!TestCallbackVarArgs.variable_args�s��������
�&�&�&�������	���(�C��R�a�R��D���S��X�X��\�\��R�a�R��C���C��H�H�q�L�L�S��V�s�]�]�����S�!�!�!��!�H��	�	��
�v�{�E�2�2�2�2�2rc�D�|�gd�ddddgd�g��dS)N)z-a3r�r�rr�)rr�rr��r�rtr�r�rs r�test_variable_argsz&TestCallbackVarArgs.test_variable_args�sA�����D�D�D�!(�t�5�%�.�I�I��	�	�	�	�	rc�F�|�gd�ddgd�d�dg��dS)N)r��37rx�xxxr}�helloT)rrxrr�rr�rs r�%test_consume_separator_stop_at_optionz9TestCallbackVarArgs.test_consume_separator_stop_at_option�sM�����C�C�C�!%�!%�!4�!4�!4�6�6�$�9�		&�	&�	&�	&�	&rc�F�|�gd�ddgd�d�dg��dS)N)rr�rr�r�)rr�r�r�rr�rs r�%test_positional_arg_and_variable_argsz9TestCallbackVarArgs.test_positional_arg_and_variable_args�sM�����=�=�=�!%�!%� 3� 3� 3�5�5�$�9�		&�	&�	&�	&�	&rc�B�|�gd�dddgd�g��dS)N)r�rr}Trr�r�rs r�test_stop_at_optionz'TestCallbackVarArgs.test_stop_at_option�s?�����.�.�.�!%�D��w�?�?��	�	�	�	�	rc�6�|�gd�d��dS)N)r�rr�r�zno such option: -5r�rs r�test_stop_at_invalid_optionz/TestCallbackVarArgs.test_stop_at_invalid_options&�����4�4�4�6J�K�K�K�K�KrN)
r!r"r#rmr�r�rrrr	r$rrr�r��s�������D�D�D�3�3�3����
&�&�&�&�&�&����
L�L�L�L�Lrr�c��eZdZd�Zd�ZdS)�ConflictBasec�f�tddddd���g}tt|���|_dS)Nr�r�r�r�zincrement verbosity�r�r�rir�r�r�s  rrmzConflictBase.setUp
sM���t�[��$-�4I�K�K�K�L��.�^�;B�D�D�D����rc��d|j_dS)Nr�)r��show_versionr�s     rrzConflictBase.show_versions��%&��
�"�"�"rN)r!r"r#rmrr$rrrr	s5������D�D�D�'�'�'�'�'rrc�*�eZdZdZd�Zd�Zd�Zd�ZdS)�TestConflictz9Use the default conflict resolution for Optik 1.2: error.c��|�|dd|jdd�td��}|�|jd��|�|jd��dS)N)r�rYr��show version�r�r�riz5option -v/--version: conflicting option string(s): -vz conflicting option string(s): -vz-v/--version)rMrr
r5r*�	option_id)rrGrKs   r�assertTrueconflict_errorz%TestConflict.assertTrueconflict_errorsw������%�:�59�5F�1?�(A�(A�
 �C�E�E��	
�����"D�E�E�E�������7�7�7�7�7rc�D�|�|jj��dSr)rr2r�rs r�test_conflict_errorz TestConflict.test_conflict_error s!���%�%�d�k�&<�=�=�=�=�=rc�d�t|jd��}|�|j��dS)NzGroup 1)r
r2rr�rms  r�test_conflict_error_groupz&TestConflict.test_conflict_error_group#s0���D�K��3�3���%�%�e�&6�7�7�7�7�7rc�V�|�|jjddtd��dS)Nr�z'invalid conflict_resolution value 'foo')rMr2�set_conflict_handlerr�rs r�test_no_such_conflict_handlerz*TestConflict.test_no_such_conflict_handler's;������K�,�h���A�	C�	C�	C�	C�	CrN)r!r"r#r[rrrrr$rrrrs[������C�C�	8�	8�	8�>�>�>�8�8�8�C�C�C�C�Crrc�2�eZdZd�Zd�Zd�Zd�Zd�Zd�ZdS)�TestConflictResolvec��t�|��|j�d��|j�ddd|jd���dS)N�resolver�rYr�rr)rrmr2rr�rrs rrmzTestConflictResolve.setUp.sh�����4� � � ���(�(��3�3�3�����t�[��(,�(9��	�	P�	P�	P�	P�	Prc��|j�d��}|j�d��}|j�d��}|�||u��|�||u��|�|jdg��|�|jdg��|�|jdg��|�|jg��|�|jdg��dS)Nr�r�rY)r2r�rDr5r�r�)rr�verbose_opt�version_opts    r�test_conflict_resolvez)TestConflictResolve.test_conflict_resolve4s�����&�&�t�,�,���k�,�,�[�9�9���k�,�,�[�9�9�������,�-�-�-�����[�0�1�1�1�����)�K�=�9�9�9�����0�4�&�9�9�9�����/�+��?�?�?�����0�"�5�5�5�����/�+��?�?�?�?�?rc�4�|�dgd��dS)NrXz}Options:
  --verbose      increment verbosity
  -h, --help     show this help message and exit
  -v, --version  show version
�r\rs r�test_conflict_resolve_helpz.TestConflictResolve.test_conflict_resolve_helpAs-�����4�&�#�	�	�	�	�	rc�<�|�dgddd�g��dS)Nr�r��r�rr�rs r�test_conflict_resolve_short_optz3TestConflictResolve.test_conflict_resolve_short_optIs6�����D�6�'+�Q�?�?��	�	�	�	�	rc�:�|�dgddig��dS)Nr�r�r�r�rs r�test_conflict_resolve_long_optz2TestConflictResolve.test_conflict_resolve_long_optNs2�����K�=�%�q�>��	�	�	�	�	rc�>�|�ddgddd�g��dS)Nr�rYr�r*r�rs r�test_conflict_resolve_long_optsz3TestConflictResolve.test_conflict_resolve_long_optsSs9�����K��5�'(�!�<�<��	�	�	�	�	rN)	r!r"r#rmr%r(r+r-r/r$rrrr-st������P�P�P�@�@�@�������
���
����rrc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestConflictOverridec���tt���|_|j�d��|j�ddddd���|j�ddd	d
dd���dS)
Nrjr!r��	--dry-runr��dry_runzdon't do anythingr
rr�zdry run mode)r�r�r�ri)r&rr2rr�rs rrmzTestConflictOverride.setUpYs���.�^�D�D�D�����(�(��3�3�3�����t�[�&2��$7�	�	9�	9�	9�	
����{�D�&3�2�I�$2�	�	4�	4�	4�	4�	4rc��|j�d��}|�|jdg��|�|jdg��dS)Nr3r�)r2r�r5r�r�rs  r�test_conflict_override_optsz0TestConflictOverride.test_conflict_override_optscsQ���k�$�$�[�1�1�������4�&�1�1�1������+��7�7�7�7�7rc�4�|�dgd��dS)NrXzXOptions:
  -h, --help     show this help message and exit
  -n, --dry-run  dry run mode
r'rs r�test_conflict_override_helpz0TestConflictOverride.test_conflict_override_helphs-�����4�&�#�	�	�	�	�	rc�:�|�dgddig��dS)Nr�r4r�r�rs r�test_conflict_override_argsz0TestConflictOverride.test_conflict_override_argsos2�����D�6�%�r�?��	�	�	�	�	rN)r!r"r#rmr6r8r:r$rrr1r1XsP������4�4�4�8�8�8�
�������rr1aSUsage: 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�P�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
dS)
�TestHelpc�:�|�d��|_dS)N�P)�make_parserr2rs rrmzTestHelp.setUp�s���&�&�r�*�*����rc	��tddddd���tddd	d
dd���td
dddd���g}tj��5}t|��|d<t	|���cddd��S#1swxYwYdS)Nr�rr��APPLEzthrow APPLEs at basket)rWr��metavarrir}r�r�r��NUMzeshout "boo!" NUM times (in order to frighten away all the evil spirits that cause trouble and mayhem)r�r�rz*store FOO in the foo list for later fooing)r�rWr�ri�COLUMNSr�)rr�EnvironmentVarGuardr@r&)r�columnsr:�envs    rr?zTestHelp.make_parser�s����8�#� '�.F�
H�
H�
H���g�E�� %�N�
O�
O�
O�

���x�e�I�
K�
K�
K�
�� �
*�
,�
,�	A�� ��\�\�C�	�N�+��@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A�	A�	As�"A?�?B�Bc��tjdd�}	tj�dd��tjd<|�dg|��|tjdd�<dS#|tjdd�<wxYw)Nrzbar.pyrrX)rTrNrOrPrQr\)rrQrRs   r�assertHelpEqualszTestHelp.assertHelpEquals�sw���H�Q�Q�Q�K�	�	$��'�,�,�u�h�7�7�C�H�Q�K����t�f�o�6�6�6�#�C�H�Q�Q�Q�K�K�K��)�C�H�Q�Q�Q�K�#�#�#�#s�AA-�-Bc�:�|�t��dSr)rI�_expected_help_basicrs r�	test_helpzTestHelp.test_help�s�����2�3�3�3�3�3rc�n�|j�d��|�t��dS)NzUsage: %prog [options])r2�	set_usagerIrKrs r�test_help_old_usagezTestHelp.test_help_old_usage�s4������6�7�7�7����2�3�3�3�3�3rc�\�d|jj_|�t��dS)Nr)r2r��short_firstrI�_expected_help_long_opts_firstrs r�test_help_long_opts_firstz"TestHelp.test_help_long_opts_first�s*��,-����)����<�=�=�=�=�=rc���tj��5}d|d<t��|j_|�t��ddd��dS#1swxYwYdS)N�80rD)rrErr2r�rI�_expected_help_title_formatter)rrGs  r�test_help_title_formatterz"TestHelp.test_help_title_formatter�s���
�
*�
,�
,�	B��!�C�	�N�$7�$9�$9�D�K�!��!�!�"@�A�A�A�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B�	B����	B�	B�	B�	B�	B�	Bs�8A�A� Ac���|�d��|_|�t��|�d��|_|�t��dS)Nr
r)r?r2rI�_expected_help_short_lines�_expected_very_help_short_linesrs r�test_wrap_columnszTestHelp.test_wrap_columns�s^���&�&�r�*�*������8�9�9�9��&�&�q�)�)������=�>�>�>�>�>rc��tt���|_|j�ddd���d}|�|��dS)Nrjr�r��olé!rjuKOptions:
  -h, --help  show this help message and exit
  -a          olé!
)r&rr2r�rI�r�expects  r�test_help_unicodezTestHelp.test_help_unicodesT��.�^�D�D�D�������t�L�{��K�K�K���
	
���f�%�%�%�%�%rc�j�ttd���|_d}|�|��dS)Nr])rkrxu>olé!

Options:
  -h, --help  show this help message and exit
)r&rr2rIr^s  r�test_help_unicode_descriptionz&TestHelp.test_help_unicode_descriptionsC��.�^�;F�H�H�H�����	
���f�%�%�%�%�%rc�@�|j�d��t|jdd��}|�ddd���|j�|��d}|�|��d	|j_|�|d
z��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-gr�z
Group option.rjaTUsage: 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�rlrI�epilog)rrnr_s   r�test_help_description_groupsz%TestHelp.test_help_description_groupss�����#�#�
9�	:�	:�	:���K�,�
5�6�6��	����l���I�I�I���$�$�U�+�+�+���(	
���f�%�%�%�?�������f�'M�M�N�N�N�N�NrN)r!r"r#rmr?rIrLrOrSrWr[r`rbrfr$rrr<r<�s�������+�+�+�A�A�A�*$�$�$�4�4�4�4�4�4�>�>�>�B�B�B�?�?�?�&�&�&�	&�	&�	&�#O�#O�#O�#O�#Orr<c��eZdZd�Zd�ZdS)�TestMatchAbbrevc
�X�|�tdddddd���d��dS)N�--f)r�r��--fierj)r5rrs r�test_match_abbrevz!TestMatchAbbrev.test_match_abbrev@sM������u�15�15�15�/3�(5�(5�6�6�
�	 �	 �	 �	 �	 rc�`�d}dddd�}|�t||fdtd��dS)Nrj)r�r�rkz,ambiguous option: --f (--fie, --foo, --foz?))rMrr)rr�wordmaps   r�test_match_abbrev_errorz'TestMatchAbbrev.test_match_abbrev_errorHsN���� �4�$�?�?������A�w�<���J�	L�	L�	L�	L�	LrN)r!r"r#rlror$rrrhrh?s7������ � � �L�L�L�L�Lrrhc�&�eZdZd�Zd�Zd�Zd�ZdS)�TestParseNumberc��t��|_|j�dt���|j�dt���dS)Nr�r�-l)r&r2r�r�rs rrmzTestParseNumber.setUpQsK��.�0�0�������t�#��.�.�.�����t�#��.�.�.�.�.rc	��|�tdtfitt	jd����|�tdtfitt	jd����dS)Nr�z!invalid literal for int().*: '?'?�0xOoopsz*invalid literal for int().*: s?'?0xOoops'?)rMrr�r�rB�compilers r�test_parse_num_failz#TestParseNumber.test_parse_num_failVs|�������S�	�2���J�;�<�<�	>�	>�	>�	
�����C�(�"���J�D�E�E�	G�	G�	G�	G�	Grc���|�tdt��d��|�tdt��d��|�tdt��d��|�tdt��d��|�td	t��d
��|�tdt��d��dS)Nr�r�0x10��0XA�
�010��0b11r�0b)r5rr�rs r�test_parse_num_okz!TestParseNumber.test_parse_num_ok`s�������C��-�-�q�1�1�1�����F�C�0�0�"�5�5�5�����E�3�/�/��4�4�4�����E�3�/�/��3�3�3�����F�C�0�0�!�4�4�4�����D�#�.�.��2�2�2�2�2rc��|�gd�ddd�g��|�gd�ddd�g��|�dgd	��|�d
gd��|�dd
gd��dS)N)r�r;rs�0x20r�� )r'�l)r��0b0101z-l010r�r~z-n008z'option -n: invalid integer value: '008'z-l0b0123z*option -l: invalid integer value: '0b0123'rs�0x12xz)option -l: invalid integer value: '0x12x')r=rRrs r�test_numeric_optionsz$TestParseNumber.test_numeric_optionshs������5�5�5�"$�4�1�1�2�	7�	7�	7����4�4�4�"#�!�-�-�r�	3�	3�	3����g�Y�F�	H�	H�	H����j�\�I�	K�	K�	K����d�G�_�H�	J�	J�	J�	J�	JrN)r!r"r#rmrwr�r�r$rrrqrqPsX������/�/�/�
G�G�G�3�3�3�
J�
J�
J�
J�
Jrrqc��eZdZd�ZdS)�MiscTestCasec�F�hd�}tj|t|���dS)N>�
NO_DEFAULT�
check_builtin�AmbiguousOptionError)�not_exported)r�check__all__�optparse)rr�s  r�test__all__zMiscTestCase.test__all__vs+��N�N�N����T�8�,�G�G�G�G�G�GrN)r!r"r#r�r$rrr�r�us(������H�H�H�H�Hrr��__main__)HrTrOrBr�unittest�iorr_r�test.supportrr�rrrr	r
rrr
rrrrr�	Exceptionrr&�TestCaser0rgr�r�rrrrr rAr]r�r�r�rr+rArWr^rfr~r�r�r�r�r�r�r�rrrr1rKrRrVrYrZr<rhrqr�r!�mainr$rr�<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%�jJ#�J#�J#�J#�J#�x�J#�J#�J#�XL?�L?�L?�L?�L?�x�L?�L?�L?�^(�(�(�(�(�x�(�(�(�*C�C�C�C�C�h�C�C�C� �r��h�@�@��>�>�>�/�/�/�/�/�V�/�/�/�
0J�0J�0J�0J�0J��0J�0J�0J�f'7�'7�'7�'7�'7�8�'7�'7�'7�TI4�I4�I4�I4�I4��I4�I4�I4�\H3�H3�H3�H3�H3�8�H3�H3�H3�T!�!�!�!�!�x�!�!�!�F.�.�.�.�.��.�.�.�.8/�8/�8/�8/�8/��8/�8/�8/�tD�D�D�D�D�x�D�D�D�2�����X����::�:�:�:�:�(�:�:�:�$6�6�6�6�6�h�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�
.�
.�
.�0L�0L�0L�0L�0L�(�0L�0L�0L�j'�'�'�'�'�8�'�'�'�C�C�C�C�C�<�C�C�C�4)�)�)�)�)�,�)�)�)�V�����8����<	��	"��"����#��BtO�tO�tO�tO�tO�x�tO�tO�tO�nL�L�L�L�L�h�L�L�L�""J�"J�"J�"J�"J�h�"J�"J�"J�JH�H�H�H�H�8�$�H�H�H��z����H�M�O�O�O�O�O��r