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

�Ke����ddlZddlZddlZddlZddlZddlZddlmZddlm	Z	ddl
mZmZm
Z
mZmZejsejd���eed��Zd�ZGd�d	ej��Zeje��d
��Gd�dej����ZGd
�dej��Zd�Zedkrej��dSdS)�N)�support)�	os_helper)�spawn_python�kill_python�assert_python_ok�assert_python_failure� interpreter_requires_environmentztest module requires subprocess�gettotalrefcountc�P�t|��}|���}||fS�N)r�wait)�p�data�
returncodes   �</usr/local/apps/python3/lib/python3.11/test/test_cmd_line.py�_kill_python_and_exit_coders%���q�>�>�D������J�����c�$�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Ze
je��d��d���Zd
�Zd�Zd�Zd�Zd�Zd�Ze
jejd��d���Ze
jejd��d���Ze
jejdkd��d���Ze
jejdkd��d���Ze
jejdkpe j!d��d���Z"d�Z#d�Z$d�Z%d �Z&e
jej'j(d!��d"���Z)d#�Z*d$�Z+d%�Z,d&�Z-d'�Z.d(�Z/d)�Z0d*�Z1e
je2j3d+kd,��e
jejd-kd.��d/�����Z4d0�Z5d1�Z6d2�Z7d3�Z8d4�Z9d5�Z:d6�Z;e
je��d7��d8���Z<d9�Z=d:�Z>d;d;d<�d=�Z?d>�Z@dJd@�ZAdA�ZBdB�ZCdC�ZDdD�ZEe
jejdkdE��dF���ZFdG�ZGdH�ZHdIS)K�CmdLineTestc�B�td��td��dS)N�.z< .)r��selfs r�test_directorieszCmdLineTest.test_directories!s$���c�"�"�"��e�$�$�$�$�$rc���t|��\}}}|�|dkp|�d����|�d|��|�d|��|S)Nr�
s	Traceback)r�
assertTrue�endswith�assertNotIn)r�cmd_line�rc�out�errs     r�verify_valid_flagzCmdLineTest.verify_valid_flag%sm��'��1�1���C������s�
�9�c�l�l�5�&9�&9�:�:�:�����s�+�+�+�����s�+�+�+��
rc��|�d��|�d��|�d��}|���}|�d|d��|�d|��|�d|��|�t|��d��dS)	Nz-hz-?z--help�usager�
PYTHONHOME�-X dev�2)r$�
splitlines�assertInr�
assertLess�len�rr"�liness   r�	test_helpzCmdLineTest.test_help,s������t�$�$�$����t�$�$�$��$�$�X�.�.����� � ���
�
�h��a��)�)�)������,�,�,�����C�(�(�(�����E�
�
�B�'�'�'�'�'rc�\�|�d��}|�d|��dS)Nz
--help-envr'�r$r+�rr"s  r�
test_help_envzCmdLineTest.test_help_env6s/���$�$�\�2�2���
�
�m�S�)�)�)�)�)rc�\�|�d��}|�d|��dS)Nz--help-xoptionsr(r2r3s  r�test_help_xoptionszCmdLineTest.test_help_xoptions:s0���$�$�%6�7�7���
�
�i��%�%�%�%�%rc�H�|�d��}|���}|�d|d��|�d|��|�d|��d�|dd����d��dS)	Nz
--help-allr&rr'r(r��ascii)r$r*r+�join�decoder.s   r�
test_help_allzCmdLineTest.test_help_all>s����$�$�\�2�2����� � ���
�
�h��a��)�)�)��
�
�m�S�)�)�)��
�
�i��%�%�%�	����q�r�r����"�"�7�+�+�+�+�+rc�Z�|�d��|�d��dS)Nz-Oz-OO�r$rs r�
test_optimizezCmdLineTest.test_optimizeIs0�����t�$�$�$����u�%�%�%�%�%rc�0�|�d��dS)N�-Sr>rs r�test_site_flagzCmdLineTest.test_site_flagMs�����t�$�$�$�$�$rc�*�dtjdd�z�d��}dD]e}t|��\}}}|�|�|����|�|�|�����fdS)NzPython %d.%d�r9)z-Vz	--versionz-VV)�sys�version_info�encoder�assertFalse�
startswithr)r�version�switchr!r"r#s      r�test_versionzCmdLineTest.test_versionPs���!�C�$4�R�a�R�$8�8�@�@��I�I��.�	5�	5�F�+�F�3�3�L�B��S����S�^�^�G�4�4�5�5�5��O�O�C�N�N�7�3�3�4�4�4�4�	5�	5rc��td��\}}}|�d|��td��\}}}|�d|��dS)Nz-vsstack overflowz-vv)rr�rr!r"r#s    r�test_verbosezCmdLineTest.test_verboseWs^��(��-�-���C�����*�C�0�0�0�'��.�.���C�����*�C�0�0�0�0�0rz6Cannot run -E tests when PYTHON env vars are required.c��d�}|��}|�|i��|dd��}|�|ddd���dS)Nc��tjdf|z}|dz
}tj|��}t	|���d��}|S)N�-E)�-c� import sys; print(sys._xoptions)r)rE�
executable�
subprocess�check_output�evalr*)�argsr"�optss   r�get_xoptionsz/CmdLineTest.test_xoptions.<locals>.get_xoptionscsQ���N�D�)�D�0�D��>�>�D��)�$�/�/�C�����(�(��+�,�,�D��Krz-Xaz	-Xb=c,d=eTzc,d=e)�a�b)�assertEqual)rr[rZs   r�
test_xoptionszCmdLineTest.test_xoptions`si��	�	�	��|�~�~������r�"�"�"��|�E�;�/�/������T��8�8�9�9�9�9�9rc����fd�}d}|d|��\}}}��|���d����|d��|dddd|��\}}}��|���d	��tr��|d
��dS��|d��dS)Nc�d��tjg}|�|��tj}tj|||���}|���\}}|j���|j	���|j
}��|d��|||fS)N��stdout�stderrr)rErU�extendrV�PIPE�Popen�communicaterc�closerdrr^)rY�cmdrfrr"r#r!rs       �r�
run_pythonz1CmdLineTest.test_showrefcount.<locals>.run_pythonss�����>�"�C��J�J�t�����?�D�� ��T�$�?�?�?�A��}�}���H�C��
�H�N�N����
�H�N�N������B����R��#�#�#��s�C�<�rrTrSs{}r�-I�-X�showrefcounts{'showrefcount': True}s^\[-?\d+ refs, \d+ blocks\])r^�rstrip�Py_DEBUG�assertRegex)rrk�coder!r"r#s`     r�test_showrefcountzCmdLineTest.test_showrefcountrs����
	 �
	 �
	 �
	 �
	 �2��!�z�$��-�-���C����������u�-�-�-�����c�"�"�"�!�z�$��n�d�D�I�I���C����������'@�A�A�A��	'�
���S�"A�B�B�B�B�B����S�#�&�&�&�&�&rc��hd�}|D]r\}}dd|��ddg}|�|��5t|�}|�|j�d��|��ddd��n#1swxYwY�sdS)N>�z=on�FrozenImporter�z=off�SourceFileLoader��rv��=rvrm�frozen_modulesrSz,import os; print(os.__spec__.loader, end="")�utf-8)�subTestrrqr"r;)r�tests�raw�expectedrj�ress      r�test_xoption_frozen_modulesz'CmdLineTest.test_xoption_frozen_modules�s���
�
�
��#�	D�	D�M�C���/�#�/�/��G�I�C����c�"�"�
D�
D�&��,��� � ������!8�!8�(�C�C�C�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��	D�	Ds�8A.�.A2	�5A2	c��td��tdd��tddd��tdddd��dS)N�-m�
fnord43520xyz�runpy�timeit�-n�1�rrrs r�test_run_modulezCmdLineTest.test_run_module�sP��	�d�#�#�#��d�O�4�4�4�	�d�G�_�=�=�=���x��s�3�3�3�3�3rc�b�tddddd��}|j�d��|j�d��t|��}|�|�d��d	k��|�|�d
��d	k��dS)N�-ir�r�r�r�sTimer
�exit()
s1 loop���s__main__.Timer)r�stdin�writerr�find)rrrs   r�test_run_module_bug1764407z&CmdLineTest.test_run_module_bug1764407�s���
��t�X�t�S�9�9��	��
�
�j�!�!�!�	��
�
�k�"�"�"��1�~�~������	�	�)�,�,��2�3�3�3�����	�	�"3�4�4��:�;�;�;�;�;rc��tj�t���d��}tj|��5tddd��tddd��ddd��dS#1swxYwYdS)N�testr��unittestztest/test_longexp.pyz./test/test_longexp.py)�os�path�dirname�__file__�removesuffixr�
change_cwdr)r�projectlibpaths  r�test_relativedir_bug46421z%CmdLineTest.test_relativedir_bug46421�s��������2�2�?�?��G�G��
�
!�.�
1�
1�	I�	I��T�:�/E�F�F�F��T�:�/G�H�H�H�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I�	I����	I�	I�	I�	I�	I�	Is�#A<�<B�Bc�d�td��tdd��tdd��dS)NrSzraise Exception�passr�rs r�
test_run_codezCmdLineTest.test_run_code�s9��	�d�#�#�#��d�$5�6�6�6���v�&�&�&�&�&rzneed os_helper.FS_NONASCIIc�z�dtj�dttj���d�}td|��dS)Nzassert(ord(z) == �)rS)r�FS_NONASCII�ordr)r�commands  r�test_non_asciizCmdLineTest.test_non_ascii�sC��� �+�+�+�S��1F�-G�-G�-G�-G�I����w�'�'�'�'�'rc���tj}d|�d�}td|��}|�|j���t
|���d����dS)Nz# coding: latin1
print(ascii('z'))rSr9)rr�rr^r"ror9rG)r�chrjr�s    r�test_codingzCmdLineTest.test_coding�sg���
"��7��7�7�7���t�S�)�)���������)�)�5��9�9�+;�+;�G�+D�+D�E�E�E�E�Er�win32z Windows has a native unicode APIc���d}tj���}d|d<d|d<d|zdz}tjt
jd|gtjtj|�	��}|�	��\}}|j
d
krd}n(|j
dkrd
}ntd|j
�d|�����|�|��st|�d|�����dS)N���C�LC_ALL�0�PYTHONCOERCECLOCALEsimport locale; print(ascii("s"), locale.getencoding())rS)rcrd�envr8s3Unable to decode the command from the command line:rs'\xff' zUnknown exit code: z	, output=z doesn't start with )
r��environ�copyrVrgrErUrf�STDOUTrhr�AssertionErrorrI)r�undecodabler�rrrrcrd�patterns        r�test_undecodable_codez!CmdLineTest.test_undecodable_code�s�����j�o�o������H�
�%(��!�"�
�*�
+�.)�
)�	
�
��
�^�T�4�(��?�:�+<��
�
�
�����������<�1���
M�G�G�
�\�Q�
�
�"�G�G�!�.�q�|�|�|�U[�U[�!\�]�]�]�� � ��)�)�	Q� �v�v�v�w�w�!O�P�P�P�	Q�	Qrc	�b�
�d�
�
fd�}�
fd�}�
fd�}d�d��}d}||g}|||fD]{}|�|���5|D]G}||��}	|�|	j���t|�����H	ddd��n#1swxYwY�|dS)	Nz;import sys, os; s=os.fsencode(sys.argv[1]); print(ascii(s))c�f��tjd�|g}tj|tjd���S)NrST�rc�text�rErUrV�runrf��argrjrrs  �r�run_defaultz6CmdLineTest.test_invalid_utf8_arg.<locals>.run_default
s,����>�4��s�3�C��>�#�j�o�D�I�I�I�Irc���tjd�|g}ttj��}d|d<tj|t
jd|���S)NrSr�r�T)rcr�r�)rErU�dictr�r�rVr�rf)r�rjr�rrs   �r�run_c_localez7CmdLineTest.test_invalid_utf8_arg.<locals>.run_c_localesO����>�4��s�3�C��r�z�"�"�C��C��M��>�#�j�o�'+��6�6�6�
6rc�j��tjddd�|g}tj|tjd���S)Nrm�utf8rSTr�r�r�s  �r�
run_utf8_modez8CmdLineTest.test_invalid_utf8_arg.<locals>.run_utf8_modes0����>�4���t�S�A�C��>�#�j�o�D�I�I�I�Ir�e:é, euro:€, non-bmp:􏿿r~s��é�������)�run_cmd)rGrr^rcror9)rr�r�r��
valid_utf8�invalid_utf8�	test_argsr�r��procrrs          @r�test_invalid_utf8_argz!CmdLineTest.test_invalid_utf8_arg�s{���M��	J�	J�	J�	J�	J�	6�	6�	6�	6�	6�	J�	J�	J�	J�	J�?�E�E�g�N�N�
�
(�	� ��.�	�#�\�=�A�	G�	G�G����g��.�.�
G�
G�$�G�G�C�"�7�3�<�<�D��$�$�T�[�%7�%7�%9�%9�5��:�:�F�F�F�F�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs�AB#�#B'	�*B'	�darwinz%test specific to Mac OS X and Androidc���d�d��}d}|�dd��}t|���d��dz}tj���}d|d<t
jtj	d	||ftj
|�
��}|���\}}|�||��|�|j
d��dS)Nr�r~z%import sys; print(ascii(sys.argv[1]))�surrogateescaper9rr�r�rS)rcr�r)rGr;r9r�r�r�rVrgrErUrfrhr^r)	rr�rr�decodedr�r�rrcrds	         r�test_osx_android_utf8z!CmdLineTest.test_osx_android_utf8+s���9�?�?��H�H��6���+�+�g�'8�9�9����>�>�(�(��1�1�E�9���j�o�o������H�
���
�^�T�4��.��?��
�
�
���������������*�*�*������q�)�)�)�)�)rc���tjd��}tjd|g}t	j|tjtjdd���}|�|jd��dS)Nz�
            import sys
            out = sys.stdout
            print(out.isatty(), out.write_through, out.line_buffering)
            err = sys.stderr
            print(err.isatty(), err.write_through, err.line_buffering)
        rST)rcrdr��checkz#False False False
False False True
)	�textwrap�dedentrErUrVr�rfr^rc)rrrrYr�s    r�%test_non_interactive_output_bufferingz1CmdLineTest.test_non_interactive_output_bufferingAs{���� �
�
�����d�+���~�d�:�?�%/�_�4�t�M�M�M�������.�	/�	/�	/�	/�	/rc��dD]~}d|z}tdd|��\}}}|dkr|n|}|�|dd|z��d|z}tdd|��\}}}|dkr|n|}|�|dd	|z���dS)
Nrbz6import os, sys; sys.%s.buffer.write(b'x'); os._exit(0)�-urSrd�xzbinary %s not unbufferedz.import os, sys; sys.%s.write('x'); os._exit(0)ztext %s not unbuffered�rr^)r�streamrrr!r"r#rs       r�test_unbuffered_outputz"CmdLineTest.test_unbuffered_outputPs���*�	L�	L�F�L���D�+�D�$��=�=�L�B��S� �H�,�,�3�3�#�D����T�4�)C�f�)L�M�M�M�D���D�+�D�$��=�=�L�B��S� �H�,�,�3�3�#�D����T�4�)A�F�)J�K�K�K�K�	L�	Lrc�4�d}tdd|��}|j�d��|j���t	|��\}}|�|d��|�|�d��|��dS)Nz/import sys; sys.stdout.write(sys.stdin.read(1))r�rSr�r)rr�r��flushrr^rrI)rrrrrr!s     r�test_unbuffered_inputz!CmdLineTest.test_unbuffered_input`s���A����t�T�*�*��	��
�
�d����	��
�
����-�a�0�0���b�����Q�����������-�-�t�4�4�4�4�4rc��d}d}|tjz|z}d}tdd||���\}}}|�|�d��|��|�|�d��|��dS)N��ABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDEABCDE��FGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJFGHIJ��if 1:
            import sys
            path = ":".join(sys.path)
            path = path.encode("ascii", "backslashreplace")
            sys.stdout.buffer.write(path)rArS��
PYTHONPATHr9)r��pathseprr+rG)r�path1�path2r�rrr!r"r#s        r�test_large_PYTHONPATHz!CmdLineTest.test_large_PYTHONPATHjs��������r�z�!�E�)��-��
(��d�D�37�9�9�9���C���
�
�e�l�l�7�+�+�S�1�1�1��
�
�e�l�l�7�+�+�S�1�1�1�1�1rz'PYTHONSAFEPATH changes default sys.pathc��d}td|d���\}}}td|d���\}}}|�||��dS)Nr�rSrzr�F)�
__isolatedr�)rrr�rc1�out1�err1�rc2�out2�err2s        r� test_empty_PYTHONPATH_issue16309z,CmdLineTest.test_empty_PYTHONPATH_issue16309ys]��-��
+�4��"�E�E�E���T�4�*�4��%�H�H�H���T�4�	
����t�$�$�$�$�$rc�"�dD�]
}tj���}||d<tjt
jdgtjtjtj|���}d}|j	�
t|���d��dz��|j	�
d��t|��}t|���|d	��}|�||����dS)
N)r9zlatin-1r~�PYTHONIOENCODINGr�)r�rcrdr�ua=é b=� c=𐀀 d=􏿿r9rr��backslashreplace)r�r�r�rVrgrErUrfr�r�r�r9rGr�reprr+)r�encodingr�rr�r�escapeds       r�test_displayhook_unencodablez(CmdLineTest.test_displayhook_unencodable�s���5�	)�	)�H��*�/�/�#�#�C�&.�C�"�#�� ����&� �o�!��!�(�����A�?�D�
�G�M�M�%��+�+�,�,�W�5�5��=�>�>�>�
�G�M�M�+�&�&�&��q�>�>�D��4�j�j�'�'��2D�E�E�G��M�M�'�4�(�(�(�(�	)�	)rc�H�tjd��5}tj�d��}|�|�d����|���|�d��tj
tjd|f|tj
���5}|���\}}ddd��n#1swxYwYddd��n#1swxYwY|�|���|��dS)Nzwb+�ASCII)sabcsdefrrS)r�rc)�tempfile�NamedTemporaryFiler��lineseprGr�r:r��seekrVrgrErUrfrhr^ro)rrrr�r��sepr�rcrds        r�check_inputzCmdLineTest.check_input�sn��
�
(��
/�
/�	4�5��*�#�#�G�,�,�C��K�K����!1�2�2�3�3�3��K�K�M�M�M��J�J�q�M�M�M��!����t�,��J�O�5�5�5�
4�8<�!%�!1�!1�!3�!3����
4�
4�
4�
4�
4�
4�
4�
4�
4�
4�
4����
4�
4�
4�
4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4�	4����	4�	4�	4�	4�	
��������(�3�3�3�3�3s6�BC/�4C�C/�C	�C/�C	� C/�/C3�6C3c�2�|�dd��dS)Nz-import sys; print(repr(sys.stdin.readline()))s'abc\n'�rrs r�test_stdin_readlinezCmdLineTest.test_stdin_readline�s,��	
���;��	�	�	�	�	rc�2�|�dd��dS)Nzprint(repr(input()))s'abc'rrs r�test_builtin_inputzCmdLineTest.test_builtin_input�s*�����"��	�	�	�	�	rc��d}td|��\}}}tjdkr.|�d|��|�d|��dS|�d|��|�d|��dS)Nz�if 1:
            import sys
            print(1)
            print(2)
            print(3, file=sys.stderr)
            print(4, file=sys.stderr)rSr�s1
2
s3
4
s1
2
s3
4
)rrE�platformr^�rrrr!r"r#s     r�test_output_newlinezCmdLineTest.test_output_newline�s���)��(��d�3�3���C���<�7�"�"����]�C�0�0�0����]�C�0�0�0�0�0����Y��,�,�,����Y��,�,�,�,�,rc��tdd��\}}}|�|�dd��d��|�d|��dS)NrS�'r9�ignore�SyntaxErrorr)rrqr;r^rNs    r�test_unmached_quotezCmdLineTest.test_unmached_quote�sY��-�T�3�7�7���C��������G�X�6�6�
�F�F�F�����c�"�"�"�"�"rc���d}td|��\}}}|�d|��|�d|��|�|�dd��d��dS)Nz�if 1:
            import os, sys, test.support
            test.support.SuppressCrashReport().__enter__()
            sys.stdout.write('x')
            os.close(sys.stdout.fileno())rSr�xr9rz"Exception ignored in.*
OSError: .*)rr^rqr;rs     r�test_stdout_flush_at_shutdownz)CmdLineTest.test_stdout_flush_at_shutdown�s���-��
-�T�4�8�8���C������c�"�"�"�����b�!�!�!�������G�X�6�6�>�	@�	@�	@�	@�	@rc�^�d}td|��\}}}|�d|��dS)Nzimport sys; sys.stdout.close()rSrr�rs     r�test_closed_stdoutzCmdLineTest.test_closed_stdout�s:��0��'��d�3�3���C������c�"�"�"�"�"r�posixztest needs POSIX semantics�vxworksz.test needs preexec support in subprocess.Popenc�X��d�����}�fd�}tjtjdd|gtjtjtj|���}|���\}}|�|d��|�|jd��dS)	Nz�if 1:
            import os, sys
            for i, s in enumerate({streams}):
                if getattr(sys, s) is not None:
                    os._exit(i + 1)
            os._exit(42)��streamsc���d�vrtjd��d�vrtjd��d�vrtjd��dSdS)Nr�rrcr8rdrD)r�rirs�r�preexecz+CmdLineTest._test_no_stdio.<locals>.preexec�sW����'�!�!��������7�"�"��������7�"�"���������#�"rrRrS)r�rcrd�
preexec_fnr�*)	�formatrVrgrErUrfrhr^r)rrrrr rr"r#s `     r�_test_no_stdiozCmdLineTest._test_no_stdio�s�����
#�F�7�F�3�3�	
�	�	�	�	�	�
��
�^�T�4��.��/��?��?��
 �
 �
 ���=�=�?�?���S�����c�"�"�"������r�*�*�*�*�*rc�2�|�dg��dS)Nr��r$rs r�
test_no_stdinzCmdLineTest.test_no_stdins�����W�I�&�&�&�&�&rc�2�|�dg��dS)Nrcr&rs r�test_no_stdoutzCmdLineTest.test_no_stdout������X�J�'�'�'�'�'rc�2�|�dg��dS)Nrdr&rs r�test_no_stderrzCmdLineTest.test_no_stderrr*rc�4�|�gd���dS)N)r�rcrdr&rs r�test_no_std_streamszCmdLineTest.test_no_std_streams
s#�����9�9�9�:�:�:�:�:rc�t�|�d��g}tj�dd��dkr"t	tj��}|d=d|d<ni}td��D]A}d}t
d|fi|��\}}}|�|d	��|�|���Btt|����}|�t|��d
d�
|�����d
}t
d|d���\}}}|�d|��t
d|d���\}}}|�d|��t
d|d���\}}}|�d|��t
dd|d���\}}}|�d|��dS)Nz-R�PYTHONHASHSEED�randomr��
__cleanenv�zprint(hash("spam"))rSrr8z83 runs produced an identical random hash  for "spam": {})�msgz<import sys; print("random is", sys.flags.hash_randomization)rz�r0srandom is 1r�srandom is 0)r$r�r��getr��rangerr^�append�sorted�set�
assertGreaterr-r#r+)r�hashesr��irrr!r"r#s        r�test_hash_randomizationz#CmdLineTest.test_hash_randomization
s������t�$�$�$���
�:�>�>�*�H�5�5��A�A��r�z�"�"�C��$�%� #�C�����C��q���	�	�A�(�D�+�D�$�>�>�#�>�>�L�B��S����R��#�#�#��M�M�#�������F���$�$�����3�v�;�;�� 1�17�����	�	A�	A�	A�
N��'��d�2�F�F�F���C���
�
�n�c�*�*�*�'��d�8�L�L�L���C���
�
�n�c�*�*�*�'��d�3�G�G�G���C���
�
�n�c�*�*�*�'��d�D��M�M�M���C���
�
�n�c�*�*�*�*�*rc��tj}|�tj|��t	|dd���5}td|���td|���ddd��n#1swxYwYt
|��dS)N�wr~�r�z
import sys)�filezdel sys.modules['__main__'])r�TESTFN�
addCleanup�unlink�open�printr)r�filename�scripts   r�test_del___main__zCmdLineTest.test_del___main__2s����#�����	�(�(�3�3�3�
�(�C�'�
2�
2�
2�	>�f��,�V�,�,�,�,��/�f�=�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	��"�"�"�"�"s�#A.�.A2�5A2c��tdd��\}}}|�d|��|�|����d��d��|�d|��tdd���\}}}|�d|��|�|����d��d��|�d|��tddd���\}}}|�d|��|�d|��|�|����d��d��|�d|��dS)	NrRz-zsUnknown option: -zr8r)�withoutz-asUnknown option: -a)rr+r^r*�countrrNs    r�test_unknown_optionsz CmdLineTest.test_unknown_options=sv��,�T�4�8�8���C���
�
�+�S�1�1�1�������)�)�/�/�0E�F�F��J�J�J�����c�"�"�"�-�T�4�@�@�@���C���
�
�+�S�1�1�1�������)�)�/�/�0E�F�F��J�J�J�����c�"�"�"�,�T�4��F�F�F���C���
�
�+�S�1�1�1����.��4�4�4�������)�)�/�/�0E�F�F��J�J�J�����c�"�"�"�"�"r�6Cannot run -I tests when PYTHON env vars are required.c��|�d��|�d��tdddd���\}}}|�|���d��t	j��5}tj�|d��}tj�|d	��}t|d
d���5}|�
d
��ddd��n#1swxYwYt|d
d���5}|�
d��|�
d��ddd��n#1swxYwY|�tj
tjtjd|g|tj���tjtjd|g|���}|�|���d��ddd��dS#1swxYwYdS)Nrlz-IEPsrSz`from sys import flags as f; print(f.no_user_site, f.ignore_environment, f.isolated, f.safe_path)rz)�dummyvars
1 1 1 Truezuuid.pyzmain.pyr@r~rAz)raise RuntimeError('isolated mode test')
zimport uuid
zprint('ok')
rR)�cwdrd)rRsok)r$rr^�stripr�temp_cwdr�r�r:rFr��assertRaisesrV�CalledProcessErrorrWrErU�DEVNULL)rr!r"r#�tmpdir�fake�main�fs        r�test_isolatedmodezCmdLineTest.test_isolatedmodeOs���	
���t�$�$�$����w�'�'�'�'��d�
S��	�����C��
	
��������m�4�4�4�
�
�
!�
!�	1�V��7�<�<��	�2�2�D��7�<�<��	�2�2�D��d�C�'�2�2�2�
F�a����D�E�E�E�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��d�C�'�2�2�2�
)�a�����(�(�(�����(�(�(�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)�
)����
)�
)�
)�
)�
���j�;�(�5�"�~�t�T�:��%/�%7�
�
9�
9�
9��)�3�>�4��*F�.4�6�6�6�C����S�Y�Y�[�[�%�0�0�0�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1�	1����	1�	1�	1�	1�	1�	1s\�=AG.�C2�&G.�2C6	�6G.�9C6	�:G.�+E�:G.�E
	�
G.�
E
	�BG.�.G2�5G2c��dD]y\}}t||||���}tt|����}d|�d|�d�}|�|���5t	d|fi|��ddd��n#1swxYwY�zdS)N))rzr)r�r8)r�r8)�2rD)�PYTHONDEBUG�PYTHONOPTIMIZE�PYTHONDONTWRITEBYTECODE�
PYTHONVERBOSEz�import sys; sys.stderr.write(str(sys.flags)); sys.exit(not (
                    sys.flags.debug == sys.flags.optimize ==
                    sys.flags.verbose ==
                    z:
                    and sys.flags.dont_write_bytecode == z
                )))�envar_valuerS)r��int�boolrr)r�valuer��env_vars�dont_write_bytecoderrs      r�test_sys_flags_setzCmdLineTest.test_sys_flags_setks��I�	9�	9�O�E�8��!�$�(-�#�	���H�#&�d�5�k�k�"2�"2���
���;N�
���
����%��0�0�
9�
9� ��t�8�8�x�8�8�8�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9�
9����
9�
9�
9�
9��%	9�	9s�A1�1A5	�8A5	c��t��}dddddd|dfg}|D]�\}}}|�dnd|�d	�}d
|�d�}d|g}|�ind
|i}	||ur
ddg|dd�<n|�dd|��g|dd�<|�||���5tj��5t	|i|	��ddd��n#1swxYwYddd��n#1swxYwY��dS)N)NNN)�fooNrk)N�barrl)rkrlrl)rkrzNrkzis Nonez== "�"z,import sys; sys.exit(not sys.pycache_prefix r�rS�PYTHONPYCACHEPREFIXrm�pycache_prefixrzpycache_prefix=)�envval�opt)�objectrrrTr)
r�NO_VALUE�casesrprqr��
exp_clauserrrYr�s
          r�test_set_pycache_prefixz#CmdLineTest.test_set_pycache_prefix�s����8�8��
� � �!��
�H�d�#�
��&+�	3�	3�!�F�C��&.�&6���<N�8�<N�<N�<N�J�O�*�O�O�O�D��$�<�D���"�"�-B�F�,K�C��h��� �"2�3��R�a�R����� �"9�C�"9�"9�:��R�a�R�����V���5�5�
3�
3��'�)�)�3�3�$�d�2�c�2�2�2�3�3�3�3�3�3�3�3�3�3�3����3�3�3�3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3�
3����
3�
3�
3�
3��	3�	3s6�1B5�
B�B5�B"�"B5�%B"�&B5�5B9	�<B9	T)�check_exitcode�xdevc���ttj��}|�dd��|�dd��|�dd��|rtjddg|�R}ntjg|�R}t
j|tjtj	d|���}|r|�
|jd|��|j�
��S)	N�PYTHONWARNINGS�
PYTHONDEVMODE�PYTHONMALLOCrm�devT�rcrd�universal_newlinesr�r)r�r�r��poprErUrVr�rfr�r^rrcro)rrwrxrYr�r�s      r�run_xdevzCmdLineTest.run_xdev�s����2�:������� �$�'�'�'������&�&�&������%�%�%��	+��N�D�%�7�$�7�7�D�D��N�*�T�*�*�D��~�d�%/�_�%/�%6�15�"%�	'�'�'��
�	7����T�_�a��6�6�6��{�!�!�#�#�#rc���d}|�d|d���}|�|d��|�d|��}|�|d��d}trd}nd	}|�d|��}|�||��|�d
d|��}|�|d|����|�dd|��}|�|d
|����|�dd|��}|�|d|����	ddl}d}t	j��5|�d|d���}ddd��n#1swxYwYt	j��rd}nd}|�||��n#t$rYnwxYw	ddl}d}|�d|��}|�|d��dS#t$rYdSwxYw)N�%import sys; print(sys.flags.dev_mode)rSF)rx�False�Truez\import warnings; print(' '.join('%s::%s' % (f[0], f[2].__name__) for f in warnings.filters))zdefault::Warningz�default::Warning default::DeprecationWarning ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarningz-bzdefault::BytesWarning �-bbzerror::BytesWarning z-Werrorzerror::Warning r�<import _testcapi; print(_testcapi.pymem_getallocatorsname()))rw�pymalloc_debug�malloc_debugz5import faulthandler; print(faulthandler.is_enabled()))	r�r^rp�	_testcapir�SuppressCrashReport�
with_pymalloc�ImportError�faulthandler)rrrr"�expected_filtersr��
alloc_namer�s       r�	test_xdevzCmdLineTest.test_xdev�s���6���m�m�D�$�U�m�3�3������g�&�&�&��m�m�D�$�'�'������f�%�%�%�>���	;�1���!:���m�m�D�$�'�'������.�/�/�/��m�m�D�$��-�-������I�7G�I�I�J�J�J��m�m�E�4��.�.������G�5E�G�G�H�H�H��m�m�I�t�T�2�2������B�0@�B�B�C�C�C�	.�����R�D��,�.�.�
F�
F��m�m�D�$�u�m�E�E��
F�
F�
F�
F�
F�
F�
F�
F�
F�
F�
F����
F�
F�
F�
F��$�&�&�
,�-�
�
�+�
����S�*�-�-�-�-���	�	�	��D�	����	*�����K�D��-�-��d�+�+�C����S�&�)�)�)�)�)���	�	�	��D�D�	���s6�(F �E&�&E*�-E*� 
F-�,F-�1G%�%
G3�2G3Fc�j�|rd}nd}|dz
}tjd|dd|f}ttj��}|�dd��||d<t
j|tjtj	d	|�
��}|�
|jd|��|j�
��S)Nz�import sys; from test.support.import_helper import import_fresh_module; warnings = import_fresh_module('warnings', blocked=['_warnings']); zimport sys, warnings; zKprint(' '.join('%s::%s' % (f[0], f[2].__name__) for f in warnings.filters))z-Wr�rSr{rzTr~r)rErUr�r�r�r�rVr�rfr�r^rrcro)r�cmdline_option�envvar�
use_pywarningrrrYr�r�s        r�check_warnings_filtersz"CmdLineTest.check_warnings_filters�s����	,�Z�D�D�,�D��>�	?�����n�e�T�4�H���2�:���������&�&�&� &�����~�d�%/�_�%/�%6�15�"%�	'�'�'��
	
�����!�T�2�2�2��{�!�!�#�#�#rc���d}ts|dz
}|�dd��}|�||��|�ddd���}|�||��dS)Nz9error::BytesWarning once::UserWarning always::UserWarningz� default::DeprecationWarning ignore::DeprecationWarning ignore::PendingDeprecationWarning ignore::ImportWarning ignore::ResourceWarningzonce::UserWarningzalways::UserWarningT)r�)rpr�r^)rr�r"s   r�test_warnings_filter_precedencez+CmdLineTest.test_warnings_filter_precedence�s���2���	<��";�
<���)�)�*=�*?�A�A������.�/�/�/��)�)�*=�*?�8<�*�>�>��	
����.�/�/�/�/�/rc��d}ttj��}|�dd��|�||d<n|�dd��tjd|f}t
j|tjtj	d|���}|�
|j���|��|�
|j
d��dS)Nr�r{r|rSTr~r)r�r�r�r�rErUrVr�rfr�r^rcror)r�env_var�namerrr�rYr�s       r�check_pythonmalloczCmdLineTest.check_pythonmallocs���M���2�:���������&�&�&���")�C�����G�G�N�D�)�)�)����d�+���~�d�%/�_�%/�%6�15�"%�	'�'�'��
	
�����+�+�-�-�t�4�4�4������!�,�,�,�,�,rc�B�tj��}|rtrdnd}d}n
trdnd}d}d|fd|fddg}|r|�d��|D]J\}}|�||�	��5|�||��ddd��n#1swxYwY�KdS)
Nr��pymallocr��malloc�debug)r�r�)r�r�))r�r�)r�r�)r�r�)rr�rprerr�)rr��default_name�default_name_debugr�r�r�s       r�test_pythonmalloczCmdLineTest.test_pythonmalloc%s+���(�*�*���	0�/7�G�+�+�Z�L�!1���-5�C�>�>�8�L�!/���<� �
�(�)� �,�	
���	��L�L��
�
�
�
#�	7�	7�M�G�T����g�D��9�9�
7�
7��'�'���6�6�6�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7�
7����
7�
7�
7�
7��	7�	7s�0B�B	�B	c�<�d}ttj��}|�dd��tjd|f}t
j|tjd|���}|�	|j
���d��|�	|jd|��d|d<t
j|tjd|���}|�	|j
���d	��|�	|jd|��dS)
Nr�r{rST)rcrr�r�rr�r�)
r�r�r�r�rErUrVr�rfr^rcror)rrrr�rYr�s     r�test_pythondevmode_envz"CmdLineTest.test_pythondevmode_env?s��6���2�:���������&�&�&����d�+���~�d�:�?�15�3�@�@�@�������+�+�-�-�w�7�7�7������!�T�2�2�2�"��O���~�d�:�?�15�3�@�@�@�������+�+�-�-�v�6�6�6������!�T�2�2�2�2�2rz!bpo-32457 only applies on Windowsc�`�tjddf}tj�tj��\}}|dz|z}tj|t
j|���}|�|j	d|��|�|j
���d��dS)NrSzprint(0)z\.\.\.\)rcrUr�0)rErUr�r��splitrVr�rfr^rrcrS)rrY�prefix�exerUr�s      r�test_argv0_normalizationz$CmdLineTest.test_argv0_normalizationQs����~�t�Z�/���g�m�m�C�N�3�3�����m�+�c�1�
��~�d�:�?�)3�5�5�5�������!�T�2�2�2������*�*�,�,�d�3�3�3�3�3rc��tjddg}tj|tjtjd���}d}|�|j�|��|j��|�|j	d��dS)Nrlz--unknown-optionT)rcrdr�z'unknown option --unknown-option
usage: r)
rErUrVr�rfrrdrI�assertNotEqualr)rrYr��err_msgs    r�test_parsing_errorzCmdLineTest.test_parsing_error]s������&8�9���~�d�%/�_�%/�_�#'�)�)�)��=�������.�.�w�7�7���E�E�E����D�O�Q�/�/�/�/�/rc��d}tddd|��tddd|��tddd|��tddd|d���td|d	���td|d
���d�}td|��}|�||��dtj��f��tdd
d|��}|�||��d��tddd|��}|�||��d��tddd|��}|�||��d��td|d���}|�||��d��td|d���}|�||��d��tddd|d���}|�||��d��dS)NzMimport sys; print(sys.flags.int_max_str_digits, sys.get_int_max_str_digits())rm�int_max_str_digitsrSzint_max_str_digits=foozint_max_str_digits=100�4000)�PYTHONINTMAXSTRDIGITSrk�100c��|j����d��}td�|���D����S)Nr~c3�4K�|]}t|��V��dSr)rd)�.0r=s  r�	<genexpr>zGCmdLineTest.test_int_max_str_digits.<locals>.res2int.<locals>.<genexpr>us(����5�5�A��Q���5�5�5�5�5�5r)r"rSr;�tupler�)r�r"s  r�res2intz4CmdLineTest.test_int_max_str_digits.<locals>.res2intssD���'�-�-�/�/�(�(��1�1�C��5�5������5�5�5�5�5�5rr�zint_max_str_digits=0)rrzint_max_str_digits=4000)�r�zint_max_str_digits=100000)順r�r�zint_max_str_digits=6000)�pr�)rrr^rE�get_int_max_str_digits)rrrr�r�s    r�test_int_max_str_digitsz#CmdLineTest.test_int_max_str_digitsgs#��^���d�$8�$��E�E�E��d�$<�d�D�I�I�I��d�$<�d�D�I�I�I��d�$8�$��4:�	<�	<�	<�	<�	�d�D��F�F�F�F��d�D��F�F�F�F�	6�	6�	6��t�T�*�*�����������C�,F�,H�,H�'I�J�J�J��t�%;�T�4�H�H����������v�.�.�.��t�%>��d�K�K����������|�4�4�4��t�%@�$��M�M����������'7�8�8�8��t�T��E�E�E����������v�.�.�.��t�T��H�H�H����������|�4�4�4���+�T�4�"(�
�
�
��	
��������|�4�4�4�4�4rN)F)I�__name__�
__module__�__qualname__rr$r0r4r6r<r?rBrLrOr��skipIfr	r_rsr�r�r�r�r��
skipUnlessrr�r�r�rEr
r�r�r�
is_androidr�r�r�r�r��flags�	safe_pathr�r�rr	rrrrrr�r�r$r'r)r,r.r>rJrNr\rirvr�r�r�r�r�r�r�r�r�r��rrrr s\������%�%�%����(�(�(�*�*�*�&�&�&�	,�	,�	,�&�&�&�%�%�%�5�5�5�1�1�1��X�_�5�5�7�7�M�O�O�:�:�O�O�:� '�'�'�>D�D�D�
4�
4�
4�	<�	<�	<�I�I�I�'�'�'��X���.�0L�M�M�(�(�N�M�(��X���.�0L�M�M�F�F�N�M�F��X�_�S�\�W�,�7�9�9�Q�Q�9�9�Q�B�X�_�S�\�W�,�7�9�9�(G�(G�9�9�(G�T�X��#�,�(�2�#��"�%L�N�N�*�*�N�N�*�(
/�
/�
/�L�L�L� 5�5�5�
2�
2�
2��X�_�S�Y�(�>�@�@�%�%�@�@�%�")�)�)�$
4�
4�
4�������-�-�-�"#�#�#�@�@�@�#�#�#��X�_�R�W��'�)E�F�F��X�_�S�\�Y�.�I�K�K�+�+�K�K�G�F�+�0'�'�'�(�(�(�(�(�(�;�;�;�#+�#+�#+�J	#�	#�	#�#�#�#�$�X�_�5�5�7�7�M�O�O�1�1�O�O�1�49�9�9�.3�3�3�4.2��$�$�$�$�$�&9*�9*�9*�v$�$�$�$�*0�0�0�*-�-�-�"7�7�7�43�3�3�$�X�����0�<�>�>�4�4�>�>�4�0�0�0�!5�!5�!5�!5�!5rrrOc�&�eZdZd�Zd�Zd�Zd�ZdS)�IgnoreEnvironmentTestc�J�d�|��}tdd|fi|��S)Nz@import sys; sys.stderr.write(str(sys.flags)); sys.exit(not ({}))rRrS)r#r)r�	predicatergrrs    r�run_ignoring_varsz'IgnoreEnvironmentTest.run_ignoring_vars�s3��
R�X�X�Yb�c�c����d�D�=�=�H�=�=�=rc�^�d}|�d�|��|���dS)N�should_be_ignoredz'{}' not in sys.pathr�)r�r#)rr�s  r�test_ignore_PYTHONPATHz,IgnoreEnvironmentTest.test_ignore_PYTHONPATH�sB��"�����5�<�<�T�B�B�*.�	�	0�	0�	0�	0�	0rc�4�|�dd���dS)Nz!sys.flags.hash_randomization == 1r�r5�r�rs r�test_ignore_PYTHONHASHSEEDz0IgnoreEnvironmentTest.test_ignore_PYTHONHASHSEED�s/�����B�.1�	�	3�	3�	3�	3�	3rc�@�d}|�|ddddd���dS)Nz�
            (sys.flags.debug == sys.flags.optimize ==
             sys.flags.dont_write_bytecode ==
             sys.flags.verbose == sys.flags.safe_path == 0)
        r�)r_r`rarb�PYTHONSAFEPATHr�)r�expected_outcomes  r�test_sys_flags_not_setz,IgnoreEnvironmentTest.test_sys_flags_not_set�sE����
	
������$'���
	�	
�	
�	
�	
�	
rN)r�r�r�r�r�r�r�r�rrr�r��sP������>�>�>�0�0�0�
3�3�3�
�
�
�
�
rr�c� �eZdZd�Zd�Zd�ZdS)�SyntaxErrorTestsc��tjtjdg|tjtj���}|�|jd��|�|jd��|�d|j��dS)N�-)�inputrcrdrs
SyntaxError)	rVr�rErUrfr�rrdr+)rrrr�s   r�check_stringzSyntaxErrorTests.check_string�s|���~�s�~�s�3�4�%/�_�Z�_�N�N�N�����D�O�Q�/�/�/����D�K��.�.�.��
�
�&���4�4�4�4�4rc�0�|�d��dS)Ns(1+2+3�r�rs r�test_tokenizer_error_with_stdinz0SyntaxErrorTests.test_tokenizer_error_with_stdin�s�����)�$�$�$�$�$rc�0�|�d��dS)Ns'\u1f'r�rs r�*test_decoding_error_at_the_end_of_the_linez;SyntaxErrorTests.test_decoding_error_at_the_end_of_the_line�s�����*�%�%�%�%�%rN)r�r�r�r�r�r�r�rrr�r��sA������5�5�5�%�%�%�&�&�&�&�&rr�c�,�tj��dSr)r�
reap_childrenr�rr�tearDownModuler��s��������r�__main__)r�rVrErr�r�r�r�test.supportr�test.support.script_helperrrrrr	�has_subprocess_support�SkipTest�hasattrrpr�TestCaserr�r�r�r�r�rZr�rr�<module>r�s���

�	�	�	�����
�
�
�
�������������������"�"�"�"�"�"���������������
�%�?�
�(�
�=�
>�
>�>��7�3�*�+�+�����h
5�h
5�h
5�h
5�h
5�(�#�h
5�h
5�h
5�V���1�1�3�3�I�K�K�!
�!
�!
�!
�!
�H�-�!
�!
�K�K�!
�H&�&�&�&�&�x�(�&�&�&�����z����H�M�O�O�O�O�O��r