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

�Ke(���^�ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
ZddlZddlZddlmZmZ	ddlmZddlmZe��dZn#eef$rdZYnwxYwddlmZddlmZdd	lmZdd
lmZddlm Z d�Z!d
�Z"d�Z#Gd�d��Z$Gd�de$ej%e d���Z&Gd�de$ej%e d���Z'ej(ej)d��Gd�dej%����Z*Gd�d��Z+Gd�de+ej%e d���Z,Gd�de+ej%e d���Z-eje.ed��d ��Gd!�d"����Z/Gd#�d$e/ej%e d���Z0Gd%�d&e/ej%e d���Z1e2d'krej3��dSdS)(�N)�mock�
skipUnless)�ProcessPoolExecutor)�_check_system_limitsTF)�support)�	os_helper)�
script_helper)�without_source_date_epoch)�SourceDateEpochTestMetac�L�|sd}tj�||���S)N���optimization)�	importlib�util�cache_from_source)�script�opts  �>/usr/local/apps/python3/lib/python3.11/test/test_compileall.py�get_pycr#s*�������>�+�+�F��+�E�E�E�c� ���fd�dD��S)Nc�0��g|]}t�|����S�)r)�.0rrs  �r�
<listcomp>zget_pycs.<locals>.<listcomp>+s#���6�6�6�S�G�F�C� � �6�6�6r�r��r�rs`r�get_pycsr!*s���6�6�6�6�I�6�6�6�6rc�r�tj|��j}tj|��j}||kS)z8Returns True if two files have the same inode (hardlink))�os�stat�st_ino)�	filename1�	filename2�inode1�inode2s    r�is_hardlinkr*.s1��
�W�Y�
�
�
&�F�
�W�Y�
�
�
&�F��V��rc��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�Zeed��ejd��d�����Zd�Zeed��ejd��d�����Zeed��ejd��ejd��d�������Zeed��ejdd���ejd��d�������Z d �Z!d!d"�d#�Z"d$�Z#eed��d%���Z$d&�Z%eed��d'���Z&d(�Z'd)�Z(d*�Z)d+�Z*d,�Z+e,j-d-���Z.dS).�CompileallTestsBasec�`�tj��|_tj�|jd��|_tj�	|j��|_
t|jdd���5}|�d��ddd��n#1swxYwYtj�|jd��|_
tj�	|j
��|_tj|j|j
��tj�|jd��|_tj|j��tj�|jd��|_tj|j|j��dS)	N�_test.py�w�utf-8��encodingzx = 123
z	_test2.py�_subdirz	_test3.py)�tempfile�mkdtemp�	directoryr#�path�join�source_pathrrr�bc_path�open�write�source_path2�bc_path2�shutil�copyfile�subdirectory�mkdir�source_path3��self�files  r�setUpzCompileallTestsBase.setUp7st��!�)�+�+����7�<�<���
�C�C��� �~�7�7��8H�I�I���
�$�"�C�'�
:�
:�
:�	$�d��J�J�{�#�#�#�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$�	$����	$�	$�	$�	$��G�L�L����E�E���!��8�8��9J�K�K��
����(�$�*;�<�<�<��G�L�L����C�C���
���"�#�#�#��G�L�L��):�K�H�H������(�$�*;�<�<�<�<�<s�B%�%B)�,B)c�8�tj|j��dS�N�r?�rmtreer6�rEs r�tearDownzCompileallTestsBase.tearDownE����
�d�n�%�%�%�%�%rc���tj�|jd��|_t|jdd���5}|�d��ddd��dS#1swxYwYdS)Nz_test_bad.pyr/r0r1zx (
)r#r7r8r6�bad_source_pathr;r<rDs  r�add_bad_source_filez'CompileallTestsBase.add_bad_source_fileHs���!�w�|�|�D�N�N�K�K���
�$�&��g�
>�
>�
>�	 �$��J�J�w����	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 �	 ����	 �	 �	 �	 �	 �	 s�A%�%A)�,A)c�6�t|jd��5}|�d��}ddd��n#1swxYwYtt	j|j��j��}tj	dtjjd|dz��}||fS)N�rb��<4sLLr���)
r;r:�read�intr#r$r9�st_mtime�struct�packrr�MAGIC_NUMBER)rErF�data�mtime�compares     r�timestamp_metadataz&CompileallTestsBase.timestamp_metadataMs���
�$�,��
%�
%�	!���9�9�R�=�=�D�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!�	!����	!�	!�	!�	!��B�G�D�,�-�-�6�7�7���+�g�y�~�'B�A�#�k�1�3�3���W�}�s�8�<�<c�j�	tj|jd��n,#ttf$r|�d��YnwxYwt
jtj	����5|�
tj|j����ddd��dS#1swxYwYdS)N)rVrVz0filesystem doesn't support timestamps near 2**32�
r#�utimer9�
OverflowError�OSError�skipTest�
contextlib�redirect_stdout�io�StringIO�
assertTrue�
compileall�compile_filerLs r� test_year_2038_mtime_compilationz4CompileallTestsBase.test_year_2038_mtime_compilationUs
��	N��H�T�%�'=�>�>�>�>���w�'�	N�	N�	N��M�M�L�M�M�M�M�M�	N����
�
'���
�
�
6�
6�	G�	G��O�O�J�3�D�4D�E�E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	G�!��&A�A�.-B(�(B,�/B,c�j�	tj|jd��n,#ttf$r|�d��YnwxYwt
jtj	����5|�
tj|j����ddd��dS#1swxYwYdS)N)� rqz+filesystem doesn't support large timestampsrbrLs r�test_larger_than_32_bit_timesz1CompileallTestsBase.test_larger_than_32_bit_times_s��	I��H�T�%�~�6�6�6�6���w�'�	I�	I�	I��M�M�G�H�H�H�H�H�	I����
�
'���
�
�
6�
6�	G�	G��O�O�J�3�D�4D�E�E�F�F�F�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Groc���tj�d��rtjd���tj|j��|j|�	���t|jd��5}|���t|��d�}ddd��n#1swxYwYt|jd��5}|�|��|�|��ddd��n#1swxYwY|j|�	���t!j|jdd���|j|�	���dS)	zOCheck that compileall recreates bytecode when the new metadata is
        used.�SOURCE_DATE_EPOCHzSOURCE_DATE_EPOCH is setrSN�wbFT��force�quiet)r#�environ�get�unittest�SkipTest�
py_compile�compiler9�assertEqualr`r;r:rW�lenr<�assertNotEqualrl�compile_dirr6rk)rE�metadatarF�bcs    r�recreation_checkz$CompileallTestsBase.recreation_checkis����:�>�>�-�.�.�	@��#�$>�?�?�?���4�+�,�,�,����$�1�1�3�3�4�4�
�$�,��
%�
%�	-�������S��]�]�^�^�,�B�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-�	-����	-�	-�	-�	-�
�$�,��
%�
%�	���J�J�x� � � ��J�J�r�N�N�N�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	���T�4�4�6�6�7�7���t�~�U�$�G�G�G�G�����0�0�2�2�3�3�3�3s$�>*B4�4B8�;B8�+D�D�Dc�x�|�tjdtjjdd����dS)NrUrr)r�rZr[rrr\rLs r�
test_mtimezCompileallTestsBase.test_mtimeys@�����f�k�'�9�>�3N�*+�Q�0�0�	1�	1�	1�	1�	1rc�0�|�d��dS)Ns)r�rLs r�test_magic_numberz%CompileallTestsBase.test_magic_number~s�����k�*�*�*�*�*rc��|j|jfD]}	tj|���#Y�xYw|�tj|jdd�����|�tj�	|j��o$tj�	|j����tj|j��|�tj
|jdd�����|�tj�	|j��o#tj�	|j����tj|j��tj|j��|���|�
tj|jdd�����|�
tj
|jdd�����dS)NFTrvr)r:r>r#�unlinkrkrlrmr9r7�isfiler�r6rQ�assertFalserP)rE�fns  r�test_compile_filesz&CompileallTestsBase.test_compile_files�s����<���/�	�	�B�
��	�"�
�
�
�
��
���������
�/��0@�6;�4�I�I�I�	J�	J�	J��������t�|�4�4�:��G�N�N�4�=�9�9�9�	;�	;�	;�
�	�$�,�������
�.�t�~�U�59�;�;�;�	<�	<�	<��������t�|�4�4�6�����t�}�5�5�	7�	7�	7�
�	�$�,����
�	�$�-� � � �� � �"�"�"�����0��1E�7<�A�G�G�G�	H�	H�	H�����/���6;�1�F�F�F�	G�	G�	G�	G�	Gs�'�+c��|�tj�|j����tj��5}|�tj	tj|j������ddd��n#1swxYwY|�
|���d��|�tj�|j����dS)Nz&Compiling ([^WindowsPath|PosixPath].*))r�r#r7r�r:r�captured_stdoutrkrlrm�pathlib�Pathr9�assertRegex�getvalue)rE�stdouts  r�test_compile_file_pathlikez.CompileallTestsBase.test_compile_file_pathlike�s
�����������5�5�6�6�6�
�
$�
&�
&�	U�&��O�O�J�3�G�L��AQ�4R�4R�S�S�T�T�T�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U�	U����	U�	U�	U�	U�������*�*�,U�V�V�V��������t�|�4�4�5�5�5�5�5s�?B�B�Bc��|�tj�|j����|�t
jtj	|j
��tj	d��d�����|�tj�|j����dS)N�	ddir_pathr)�ddirrx�r�r#r7r�r:rkrlrmr�r�r9rLs r�test_compile_file_pathlike_ddirz3CompileallTestsBase.test_compile_file_pathlike_ddir�s������������5�5�6�6�6����
�/���T�=M�0N�0N�5<�\�+�5N�5N�67�9�9�9�	:�	:�	:�	
�������t�|�4�4�5�5�5�5�5rc��|�tj�|j����|�t
jtj	|j
��tj	d��d�����|�tj�|j����dS�N�
stripdir_pathr)�stripdirrxr�rLs r�#test_compile_file_pathlike_stripdirz7CompileallTestsBase.test_compile_file_pathlike_stripdir�s������������5�5�6�6�6����
�/���T�=M�0N�0N�9@��o�9V�9V�67�9�9�9�	:�	:�	:�	
�������t�|�4�4�5�5�5�5�5rc��|�tj�|j����|�t
jtj	|j
��tj	d��d�����|�tj�|j����dS�N�prependdir_pathr)�
prependdirrxr�rLs r�%test_compile_file_pathlike_prependdirz9CompileallTestsBase.test_compile_file_pathlike_prependdir�s������������5�5�6�6�6����
�/���T�=M�0N�0N�;B�<�HY�;Z�;Z�67�9�9�9�	:�	:�	:�	
�������t�|�4�4�5�5�5�5�5rc���tjj�|jg���5|�t
jd�����ddd��n#1swxYwYtjj�|jg���5|���|�	t
jddd�����ddd��dS#1swxYwYdS)N�r7r�rxFT)�skip_curdirrwrx)
�test�test_importlibr�import_stater6rkrl�compile_pathrQr�rLs r�test_compile_pathz%CompileallTestsBase.test_compile_path�s���
�
 �
%�
2�
2���8H�
2�
I�
I�	>�	>��O�O�J�3�!�<�<�<�=�=�=�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>��
 �
%�
2�
2���8H�
2�
I�
I�	K�	K��$�$�&�&�&����Z�4��;?�q�J�J�J�
K�
K�
K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K�	K����	K�	K�	K�	K�	K�	Ks#�)A!�!A%�(A%�?C#�#C'�*C'c���tj�|jd��}tj�|d��}tj|��t|d��5	ddd��n#1swxYwYt
j|��|�tj�	tj�|d������dS)Nr]rFru�__pycache__)
r#r7r8r6rBr;rlrmr��exists)rE�data_dir�	data_files   r�test_no_pycache_in_non_packagez2CompileallTestsBase.test_no_pycache_in_non_package�s����7�<�<����7�7���G�L�L��6�2�2�	�
������
�)�T�
"�
"�	�	��	�	�	�	�	�	�	�	�	�	�	����	�	�	�	���	�*�*�*������������X�}�(M�(M�N�N�O�O�O�O�Os�*A8�8A<�?A<c��|���tjtj����5|�t
j|j����ddd��dS#1swxYwYdSrI)	rQrgrhrirjr�rlrmrPrLs r�#test_compile_file_encoding_fallbackz7CompileallTestsBase.test_compile_file_encoding_fallback�s���� � �"�"�"�
�
'���
�
�
6�
6�	L�	L����Z�4�T�5I�J�J�K�K�K�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L�	L����	L�	L�	L�	L�	L�	Ls�-A4�4A8�;A8c�X�d\}}tj|jd|���tj�|j|���}|�tj	�
|����tj�|j|���}|�tj	�
|����tj�|j|���}|�tj	�
|����dS)NT)rr)rr
�rx�optimizer)
rlr�r6rrrr9rkr#r7r�r=rC)rEr�r�cached�cached2�cached3s      r�
test_optimizez!CompileallTestsBase.test_optimize�s����
��#���t�~�T�H�M�M�M�M���1�1�$�2B�?B�2�D�D���������v�.�.�/�/�/��.�2�2�4�3D�@C�3�E�E���������w�/�/�0�0�0��.�2�2�4�3D�@C�3�E�E���������w�/�/�0�0�0�0�0rc��|�tj�|j����tj��5}tjtj
|j����ddd��n#1swxYwY|����
��d}|�|d��|�tj�|j����dS)Nrz$Listing ([^WindowsPath|PosixPath].*))r�r#r7r�r:rr�rlr�r�r�r6r��
splitlinesr�rk)rEr��lines   r�test_compile_dir_pathlikez-CompileallTestsBase.test_compile_dir_pathlike�s�����������5�5�6�6�6�
�
$�
&�
&�	A�&��"�7�<���#?�#?�@�@�@�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A�	A����	A�	A�	A�	A���� � �+�+�-�-�a�0������F�G�G�G��������t�|�4�4�5�5�5�5�5s�,B�B�
Bc��|�tj�|j����|�t
jtj	|j
��tj	d��d�����|�tj�|j����dSr��r�r#r7r�r:rkrlr�r�r�r6rLs r�"test_compile_dir_pathlike_stripdirz6CompileallTestsBase.test_compile_dir_pathlike_stripdir�s������������5�5�6�6�6����
�.�w�|�D�N�/K�/K�8?��_�8U�8U�56�8�8�8�	9�	9�	9�	
�������t�|�4�4�5�5�5�5�5rc��|�tj�|j����|�t
jtj	|j
��tj	d��d�����|�tj�|j����dSr�r�rLs r�$test_compile_dir_pathlike_prependdirz8CompileallTestsBase.test_compile_dir_pathlike_prependdir�s������������5�5�6�6�6����
�.�w�|�D�N�/K�/K�:A�,�GX�:Y�:Y�56�8�8�8�	9�	9�	9�	
�������t�|�4�4�5�5�5�5�5r�requires multiprocessingz&concurrent.futures.ProcessPoolExecutorc�r�tj|jdd���|�|j��dS�NT��rx�workers�rlr�r6rk�called�rE�	pool_mocks  r�test_compile_pool_calledz,CompileallTestsBase.test_compile_pool_called�s9��	��t�~�T�1�E�E�E�E����	�(�)�)�)�)�)rc��|�td��5tj|jd���ddd��dS#1swxYwYdS)Nz%workers must be greater or equal to 0���)r�)�assertRaisesRegex�
ValueErrorrlr�r6rLs r�!test_compile_workers_non_positivez5CompileallTestsBase.test_compile_workers_non_positives���
�
#�
#�J�$K�M�M�	?�	?��"�4�>�2�>�>�>�>�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?�	?����	?�	?�	?�	?�	?�	?s�A�A	�A	c��tj|jdd���|�|jddd��dS)NTrr�r�max_workers)rlr�r6r�	call_argsr�s  r�test_compile_workers_cpu_countz2CompileallTestsBase.test_compile_workers_cpu_countsG��	��t�~�T�1�E�E�E�E�����,�Q�/�
�>��E�E�E�E�Erzcompileall.compile_filec��tj|jd���|�|j��|�|j��dS)NTr�)rlr�r6r�r�rk)rE�compile_file_mockr�s   r�test_compile_one_workerz+CompileallTestsBase.test_compile_one_workersO��	��t�~�T�:�:�:�:�����)�*�*�*����)�0�1�1�1�1�1rN��newc�r�tj|jdd���|�|j��dSr�r�)rEr�s  r�$test_compile_missing_multiprocessingz8CompileallTestsBase.test_compile_missing_multiprocessings:��	��t�~�T�1�E�E�E�E����)�0�1�1�1�1�1rc��d}|j}td|dz��D]s}tj�|d|����}tj�|d��}tj|��t
j|j|���ttj
�|��}tj
|jd|dz
���|�tj�|����tj
|jd|���|�tj�|����dS)N�r�dir_z	script.pyT)rx�	maxlevels)r6�ranger#r7r8rBr?r@r9rrrrlr�r�r�rk)rE�depthr7�i�source�pyc_filenames      r�test_compile_dir_maxlevelsz.CompileallTestsBase.test_compile_dir_maxlevelss�����~���q�%�!�)�$�$�	6�	6�A��7�<�<��j�Q�j�j�1�1�D��W�\�\�$��4�4�F��H�T�N�N�N��O�D�,�f�5�5�5�5� �~�7�7��?�?����t�~�T�U�Q�Y�O�O�O�O���������5�5�6�6�6���t�~�T�U�K�K�K�K��������|�4�4�5�5�5�5�5rT)�parallelc��ddg}|j}g}|D]u}tj�||��}tj|��tj|dd��|�tj|dd�����vtj	|jd||rdnd	�
��|�
|��|D�]}|�
|�|j��|��tj
�|��}|t|jtjz��d�}	tj|��\}
}
}tj�||	��}t$jj
�|��}
|�|
j|��|�d|�d�tj|������dS)
z@Recursive compile_dir ddir must contain package paths; bpo39769.r��foo�__init__r
�modzdef fn(): 1/0
fn()
Trr)rxr�r�N�")r6r#r7r8rBr	�make_script�appendrlr�rk�
startswithrrrr��sep�assert_python_failurer�r��get_code_from_pycr�co_filename�assertIn�fsdecode)rEr�r��fullpathr7�mods�subdirr��modcode�modpath�_�err�expected_in�mod_code_objs              r�_test_ddir_onlyz#CompileallTestsBase._test_ddir_only+s����E�?���~�����	L�	L�F��7�<�<��f�-�-�D��H�T�N�N�N��%�d�J��;�;�;��K�K�
�1�$��2I�K�K�
L�
L�
L�
L�����d��%�,���1�	.�	.�	.�	.�	
��������	@�	@�C��O�O�C�N�N�4�>�:�:�C�@�@�@��n�6�6�s�;�;�G��#�d�n�R�V�3�4�4�5�5�6�G�%�;�G�D�D�I�A�q�#��'�,�,�t�W�5�5�K��.�3�E�E�g�N�N�L����\�5�{�C�C�C��M�M�,�k�,�,�,�b�k�#�.>�.>�?�?�?�?�	@�	@rc�0�|�dd���S)�=Recursive compile_dir ddir= contains package paths; bpo39769.�
<a prefix>F�r�r��rrLs r�test_ddir_only_one_workerz-CompileallTestsBase.test_ddir_only_one_workerDs���#�#���#�F�F�Frc�0�|�dd���S)rrTr	r
rLs r�test_ddir_multiple_workersz.CompileallTestsBase.test_ddir_multiple_workersHs���#�#���#�E�E�Erc�0�|�dd���S)�?Recursive compile_dir ddir='' contains package paths; bpo39769.r
Fr	r
rLs r�test_ddir_empty_only_one_workerz3CompileallTestsBase.test_ddir_empty_only_one_workerMs���#�#��e�#�<�<�<rc�0�|�dd���S)rr
Tr	r
rLs r� test_ddir_empty_multiple_workersz4CompileallTestsBase.test_ddir_empty_multiple_workersQs���#�#��d�#�;�;�;rc��gd�}tjj|jg|�R�}tj|��tj|dd��}tj�	|��}tjj|jg|dd��R�}tj|d|���tj|��\}}}tjj|dd��}	|�
|	t|tj�������|�|t|tj�������dS)N�r��build�realr7r��1 / 0rT)rxr�r1�r#r7r8r6�makedirsr	r�rrrrlr�r�r��str�sys�getdefaultencoding�assertNotIn)
rEr�r7rr�r��rc�outrrs
          r�test_strip_onlyz#CompileallTestsBase.test_strip_onlyVs:��4�4�4���w�|�D�N�6�X�6�6�6��
��D�����*�4���A�A��
�^�
-�
-�f�
5�
5���7�<���>��"�1�"��>�>�>����t�4�(�C�C�C�C�$�:�2�>�>���C���g�l�H�Q�R�R�L�1���
�
����c�4�6�6�7�7�7�	
�	
�	
�	
������c�4�6�6�7�7�7�	
�	
�	
�	
�	
rc���gd�}tjj|jg|�R�}tj|��tj|dd��}tj�	|��}d}tj|d|���tj|��\}}}tjj||jg|�R�}	|�
|	t|tj�������dS)Nrr�r�/fooT)rxr�r1)r#r7r8r6rr	r�rrrrlr�r�r�rrr)
rEr�r7rr�r�rrrrs
          r�test_prepend_onlyz%CompileallTestsBase.test_prepend_onlyis���4�4�4���w�|�D�N�6�X�6�6�6��
��D�����*�4���A�A��
�^�
-�
-�f�
5�
5���
���t�4�J�G�G�G�G�$�:�2�>�>���C���g�l�:�t�~�I��I�I�I���
�
����c�4�6�6�7�7�7�	
�	
�	
�	
�	
rc��gd�}tjj|jg|�R�}tj|��tj|dd��}tj�	|��}tjj|jg|dd��R�}d}tj|d||���tj|��\}}}	tjj|g|dd��R�}
|�
|
t|	tj�������|�|t|	tj�������dS)	Nrr�rrr"T)rxr�r�r1r�rEr�r7rr�r�r�rrrrs           r�test_strip_and_prependz*CompileallTestsBase.test_strip_and_prependxsY��4�4�4���w�|�D�N�6�X�6�6�6��
��D�����*�4���A�A��
�^�
-�
-�f�
5�
5���7�<���>��"�1�"��>�>�>���
���t�4�(0�Z�	I�	I�	I�	I�$�:�2�>�>���C���g�l�:�=������=�=�=���
�
����c�4�6�6�7�7�7�	
�	
�	
�	
������c�4�6�6�7�7�7�	
�	
�	
�	
�	
rc�2�gd�}tjj|jg|�R�}tj|��tj|dd��|�t��5tj
|dddd���ddd��dS#1swxYwYdS)N)r�rrr7r�r�rTz/barr")rxr�r�r�)r#r7r8r6rr	r��assertRaisesr�rlr�)rEr�r7s   r�test_strip_prepend_and_ddirz/CompileallTestsBase.test_strip_prepend_and_ddir�s��<�<�<���w�|�D�N�6�X�6�6�6��
��D�����!�$���8�8�8�
�
�
�z�
*�
*�	G�	G��"�4�t�&�,2�v�
G�
G�
G�
G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G�	G����	G�	G�	G�	G�	G�	Gs�%B�B�Bc���tj|jdd��}g}dD]6}|�tj�||������7ddgddgddggd�g}|D]�}tj|d	|�
��|D]e}|�	tj�||����	tj
||���V#t$rY�bwxYw��dS)N�test_optimization�a = 0�r
rrr�rrrrrTr�)r	r�r6r�rrrrlrmrkr#r7r�r��	Exception)rErr��	opt_level�test_combinations�opt_combinations      r�!test_multiple_optimization_levelsz5CompileallTestsBase.test_multiple_optimization_levels�sB���*�4�>�+>�+2�4�4����$�	P�	P�I��I�I�i�n�6�6�v�DM�7�O�O�
P�
P�
P�
P���V�a��V�a��V�Y�Y�Y�?��0�	�	�O��#�F�$�-<�
>�
>�
>�
>�,�
�
�	��������r�)�}� =� =�>�>�>���I�b��m�,�,�,�,�� �����D�����	
�	�	s�=C�
C%�$C%c��tj�|jddd��}tj�|jddd��}tj�|jddd��}tj|��tj|��tj|��tj|dd��}tj|dd��}tj�|d	��}tj�|d
��}tj||��tj||��tj	�
|��}tj	�
|��}	tj|d|���|�
tj�|����|�tj�|	����dS)
Nr��dir�allowed�symlinks�
prohibited�test_allowedr,�test_prohibited�test_allowed.py�test_prohibited.pyT)rx�
limit_sl_dest)r#r7r8r6rr	r��symlinkrrrrlr�rkr�r��
rE�allowed_path�
symlinks_path�prohibited_path�allowed_script�prohibited_script�allowed_symlink�prohibited_symlink�
allowed_bc�
prohibited_bcs
          r�test_ignore_symlink_destinationz3CompileallTestsBase.test_ignore_symlink_destination�s����w�|�|�D�N�F�E�9�M�M������T�^�V�U�J�O�O�
��'�,�,�t�~�v�u�l�S�S��
��L�!�!�!�
��M�"�"�"�
��O�$�$�$�'�2�<��QX�Y�Y��)�5�o�GX�Za�b�b���'�,�,�}�6G�H�H���W�\�\�-�9M�N�N��
�
�>�?�3�3�3�
�
�$�&8�9�9�9��^�5�5�o�F�F�
�!��8�8�9K�L�L�
���}�D��U�U�U�U��������z�2�2�3�3�3��������
�6�6�7�7�7�7�7r)/�__name__�
__module__�__qualname__rGrMrQr`rnrrr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�_have_multiprocessingr�patchr�r�r�r�r�r�rrr
rrr r#r&r)r2r�skip_unless_symlinkrHrrrr,r,5s�������=�=�=�&�&�&� � � �
���G�G�G�G�G�G�4�4�4� 1�1�1�
+�+�+�G�G�G�26�6�6�6�6�6�6�6�6�6�6�6�K�K�K�
P�
P�
P�L�L�L�
1�
1�
1�6�6�6�6�6�6�6�6�6��Z�%�'A�B�B��T�Z�8�9�9�*�*�:�9�C�B�*�?�?�?�
�Z�%�'A�B�B��T�Z�8�9�9�F�F�:�9�C�B�F��Z�%�'A�B�B��T�Z�8�9�9��T�Z�)�*�*�2�2�+�*�:�9�C�B�2�
�Z�%�'A�B�B��T�Z�8�d�C�C�C��T�Z�)�*�*�2�2�+�*�D�C�C�B�2�6�6�6�"15�@�@�@�@�@�2G�G�G��Z�%�'A�B�B�F�F�C�B�F�=�=�=��Z�%�'A�B�B�<�<�C�B�<�
�
�
�&

�

�

�
�
�
�*G�G�G����&�"�8�8�#�"�8�8�8rr,c��eZdZdS)�CompileallTestsWithSourceEpochN�rIrJrKrrrrPrP��������	�DrrP)�	metaclass�source_date_epochc��eZdZdS)�!CompileallTestsWithoutSourceEpochNrQrrrrVrV�rRrrVz tempdir is not encodable on WASIc�$�eZdZdZd�Zd�Zd�ZdS)�EncodingTestzTIssue 6716: compileall should escape source code when printing errors
    to stdout.c�>�tj��|_tj�|jd��|_t|jdd���5}|�d��|�d��ddd��dS#1swxYwYdS)Nr.r/r0r1z# -*- coding: utf-8 -*-
u
print u"€"
)	r4r5r6r#r7r8r9r;r<rDs  rrGzEncodingTest.setUp�s���!�)�+�+����7�<�<���
�C�C���
�$�"�C�'�
:�
:�
:�	,�d��J�J�2�3�3�3��J�J�*�+�+�+�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,�	,�	,s�+B�B�Bc�8�tj|j��dSrIrJrLs rrMzEncodingTest.tearDown�rNrc���	tj}tjtj��d���t_tj|j��|t_dS#|t_wxYw)N�asciir1)rr�ri�
TextIOWrapper�BytesIOrlr�r6)rE�orig_stdouts  r�
test_errorzEncodingTest.test_error�s\��	%��*�K��)�"�*�,�,��H�H�H�C�J��"�4�>�2�2�2�$�C�J�J�J���C�J�$�$�$�$s�AA&�&A4N)rIrJrK�__doc__rGrMr`rrrrXrX�sK��������,�,�,�&�&�&�%�%�%�%�%rrXc��eZdZdZd�Zejd���Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
ed
���Zd�Zdd
gfdddgfdddgffD]\ZZZeefd�Zee��dez<�d�Zd�Zed���Zd�Zd�Zejd���Zd�Zd�Zd�Z d�Z!d �Z"d!�Z#d"�Z$d#�Z%d$�Z&d%�Z'd&�Z(d'�Z)d(�Z*e+e,d)��d*���Z-e.j/d+��d,���Z0d-�Z1d.�Z2ejd/���Z3d0�Z4d1�Z5d2S)3�CommandLineTestsBasezTest compileall's CLI.c���tj��|_|�tj|j��tj�|jd��|_	t
j
|j	��tj�|j	d��|_tj
|j	dd��|_tj
|j	dd��|_dS)Nr�r�r�r
�bar)r4r5r6�
addCleanuprrKr#r7r8�pkgdirrB�pkgdir_cachedirr	r��initfn�barfnrLs rrGzCommandLineTestsBase.setUp�s���!�)�+�+������	�(�$�.�9�9�9��g�l�l�4�>�5�9�9���
�������!�w�|�|�D�K��G�G���#�/���Z��L�L���"�.�t�{�E�2�F�F��
�
�
rc#��K�tj}tj�|jd��}	|t_|j|d�V�|t_dS#|t_wxYw)z&Adjust and restore sys.pycache_prefix.�
__testcache__)�
PYTHONPATH�PYTHONPYCACHEPREFIXN)r�pycache_prefixr#r7r8r6)rE�
old_prefix�
new_prefixs   r�temporary_pycache_prefixz-CommandLineTestsBase.temporary_pycache_prefix�sy�����'�
��W�\�\�$�.�/�B�B�
�	,�!+�C��"�n�'1���
�
�
�
",�C������C��+�+�+�+s�A�A)c�<�gtj���d�d�d�|�S)Nz-S�-mrl)r�!optim_args_from_interpreter_flags)rE�argss  r�
_get_run_argsz"CommandLineTestsBase._get_run_argss<����:�<�<������(����	rc��tj|�|��i|�ddi��\}}}|�d|��|S)N�PYTHONIOENCODINGr0r)r	�assert_python_okrwr�rErv�env_varsrrrs      r�assertRunOKz CommandLineTestsBase.assertRunOKsb��$�5��,�,�T�2�2�3�6>�3�3�*1�3�3�3���C��	
����c�"�"�"��
rc�d�tj|�|��i|�ddi��\}}}|||fS)Nryr0)r	r�rwr{s      r�assertRunNotOKz#CommandLineTestsBase.assertRunNotOKsS��$�:��+�+�D�1�1�2�5=�2�2�)0�2�2�2���C���3��|�rc��tj�|��}|�tj�|����dSrI)rrrrkr#r7r��rEr�r7s   r�assertCompiledz#CommandLineTestsBase.assertCompileds=���~�/�/��3�3���������t�,�,�-�-�-�-�-rc��tj�|��}|�tj�|����dSrI)rrrr�r#r7r�r�s   r�assertNotCompiledz&CommandLineTestsBase.assertNotCompileds?���~�/�/��3�3����������-�-�.�.�.�.�.rc�B�tj|jdd��}|���5}|jdi|��|�|��|�|j��|�|j��ddd��dS#1swxYwYdS)N�bazr
r)	r	r�r6rrr}r�r�rirj)rE�bazfn�envs   r�test_no_args_compiles_pathz/CommandLineTestsBase.test_no_args_compiles_path s����)�$�.�%��D�D��
�
*�
*�
,�
,�	/���D��#�#�s�#�#�#�����&�&�&��"�"�4�;�/�/�/��"�"�4�:�.�.�.�		/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/�	/����	/�	/�	/�	/�	/�	/s�AB�B�Bc�h�tj|jdd��}|���5}|jdi|��t
j�|��}ddd��n#1swxYwYtj	|tj
��dz
fdz��tj|��j}|jdi|��tj|��j}|�
||��|jdi|��tj|��j}|�||��dS)Nr�r
�<r�-fr)r�)r	r�r6rrr}rrrr#rc�timer$rYrr�)rEr�r��pycpathr^�mtime2s      r� test_no_args_respects_force_flagz5CommandLineTestsBase.test_no_args_respects_force_flag)sj���)�$�.�%��D�D��
�
*�
*�
,�
,�	>���D��#�#�s�#�#�#��n�6�6�u�=�=�G�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>�	>����	>�	>�	>�	>�	���4�9�;�;�r�>�+�A�-�.�.�.���� � �)�������3�������!�!�*�������'�'�'����%�%��%�%�%����!�!�*�����E�6�*�*�*�*�*s�-A)�)A-�0A-c� �tj|jdd��|���5}|jdi|��}ddd��n#1swxYwY|�d|��|jdi|��}|�d|��dS)Nr�r
sListing �-qr)r�)r	r�r6rrr}r�r)rEr��noisyrxs    r� test_no_args_respects_quiet_flagz5CommandLineTestsBase.test_no_args_respects_quiet_flag;s����!�$�.�%��<�<�<�
�
*�
*�
,�
,�	,��$�D�$�+�+�s�+�+�E�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,�	,����	,�	,�	,�	,��
�
�k�5�)�)�)� �� �-�-��-�-������e�,�,�,�,�,s�A
�
A�A�normal�pycr�z	opt-1.pyc�-O�doubleoptimizez	opt-2.pycz-OOc����tj|ddd|jgz�|�tj�|j����t�fd�dD����}|�	tt	j
|j����|��|��fd�t	j
|j��D����dS)Nrtrlr�c3�b�K�|])}|�tjj���V��*dSrI)�formatr�implementation�	cache_tag)r�base�exts  �r�	<genexpr>z)CommandLineTestsBase.f.<locals>.<genexpr>OsS�����K�K�"&�#�k�k�#�*<�*F��L�L�K�K�K�K�K�Kr)z__init__.{}.{}z	bar.{}.{}c�>��g|]}|�����|��Sr)�endswith)rr�r�s  �rrz*CommandLineTestsBase.f.<locals>.<listcomp>Ss9���3�3�3�R�!#���S�!1�!1�3�b�3�3�3r)r	rzrgrkr#r7r�rh�sortedr�listdirr�)rEr��switch�expecteds `  r�fzCommandLineTestsBase.fJs	����*�V��|�T�4�;�7�.8�
:�
:�
�O�O�B�G�N�N�4�+?�@�@�A�A�A��K�K�K�K�*I�K�K�K�K�K�H����V�B�J�t�/C�$D�$D�E�E�x�P�P�P����3�3�3�3�2�:�d�k�+B�+B�3�3�3�
4�
4�
4�
4�
4r�test_pep3147_paths_c�B�|�dd|j��|�tj�|j����tgd���}|�ttj	|j����|��dS)Nz-br�)�__init__.pyz__init__.pyczbar.pyzbar.pyc)
r}rgr�r#r7r�rhr�rr�)rEr�s  r�test_legacy_pathsz&CommandLineTestsBase.test_legacy_pathsWs���	
����t�T�[�1�1�1���������(<�=�=�>�>�>��&�&�&�'�'�������
�4�;� 7� 7�8�8�(�C�C�C�C�Crc�`�|�d|j��|�tj�|j����tj�|jd��}|�tj�|����|�d|j��|�tj�|j����|�tj�|����dS)Nr�r�)	r}rgrkr#r7r�rhr8r�)rE�
cachecachedirs  r�test_multiple_runsz'CommandLineTestsBase.test_multiple_runsas���	
����t�{�+�+�+��������t�';�<�<�=�=�=�����T�%9�=�I�I�
��������
�6�6�7�7�7�����t�{�+�+�+��������t�';�<�<�=�=�=��������
�6�6�7�7�7�7�7rc�:�|�d|j��tj�|j��}t
j|tj��dz
fdz��t
j	|��j
}|�d|j��t
j	|��j
}|�||��|�dd|j��t
j	|��j
}|�||��dS)Nr�r�rr�)
r}rgrrrrjr#rcr�r$rYrr�)rEr�r^r�s    r�
test_forcezCommandLineTestsBase.test_forcens�������t�{�+�+�+��.�2�2�4�:�>�>��
���4�9�;�;�r�>�+�A�-�.�.�.���� � �)������t�{�+�+�+����!�!�*�������'�'�'�����t�T�[�1�1�1����!�!�*�����E�6�*�*�*�*�*rc�\�tj�|jd��}tj|��tj|dd��}tj|dd��}|�dd|j��|�|��|�	tj�
tj�|d������|�d|j��|�|��|�|��dS)N�spamr�r
�hamr�z-lr�)r#r7r8rgrBr	r�r}r�r�r�r�)rE�
subpackage�	subinitfn�hamfns    r�test_recursion_controlz+CommandLineTestsBase.test_recursion_control~s����W�\�\�$�+�v�6�6�
�
������!�-�j�*�b�I�I�	��)�*�e�R�@�@������t�T�[�1�1�1����y�)�)�)������������Z��(O�(O�P�P�Q�Q�Q�����t�{�+�+�+����I�&�&�&����E�"�"�"�"�"rc�D�tj�|jd��}tj�|d��}tj�|d��}|||fD]}t	j|���tj�|d��}t	j|dd��}t	j|dd��}t	j|dd��}|�dd|j��|�|��|�	tj�
tj�|d	������|�dd
|j��|�|��|�|��|�|��|�dd|j��|�|��|�|��|�|��|�|��|�dd|j��|�|��|�|��|�|��|�|��dS)
Nr�r��eggsr�r
�eggr�z-r 0r�z-r 1z-r 2z-r 5)r#r7r8rgr	�make_pkgr�r}r�r�r�r�)	rEr��subpackage2�subpackage3�pkgr�r��spamfn�eggfns	         r�test_recursion_limitz)CommandLineTestsBase.test_recursion_limit�sZ���W�\�\�$�+�v�6�6�
��g�l�l�:�u�5�5���g�l�l�;��7�7����[�9�	(�	(�C��"�3�'�'�'�'��G�L�L��]�;�;�	��)�*�e�R�@�@���*�;���C�C���)�+�u�b�A�A������v�t�{�3�3�3����y�)�)�)�����G�N�N�2�7�<�<�
�M�B�B�C�C�	E�	E�	E�	
����v�t�{�3�3�3����I�&�&�&����E�"�"�"����v�&�&�&�����v�t�{�3�3�3����I�&�&�&����E�"�"�"����F�#�#�#����u�%�%�%�����v�t�{�3�3�3����I�&�&�&����E�"�"�"����F�#�#�#����E�"�"�"�"�"rc	���tj�|jd��}t	j|��tjdtj�|d����tjdtj�|d����|�d|j��|�tj�|jdddd����dS)Nr��.�evil�evil2r�r�)	r#r7r8rgr	r�r=r}r�)rEr�s  r�test_symlink_loopz&CommandLineTestsBase.test_symlink_loop�s���
�g�l�l�4�;��/�/����s�#�#�#�
�
�3�����S�&�1�1�2�2�2�
�
�3�����S�'�2�2�3�3�3�����t�{�+�+�+����B�G�L�L��K����-�
�
�	�	�	�	�	rc���|�|j��}|�d|j��}|�d|��|�d|��dS)Nr�r)r}rgr�r)rEr�rxs   r�
test_quietzCommandLineTestsBase.test_quiet�s`��� � ���-�-��� � ��t�{�3�3�����C��'�'�'�����e�$�$�$�$�$rc��tj|jdd��|�d|j��\}}}|�d|j��\}}}|�d|��|�d|��dS)N�crunchyfrog�
bad(syntaxr�z-qqr)r	r�rgrr�r)rErrx�silents    r�test_silentz CommandLineTestsBase.test_silent�s����!�$�+�}�l�K�K�K��)�)�$���<�<���5�!��*�*�5�$�+�>�>���6�1����C��'�'�'�����f�%�%�%�%�%rc��|�ddd|j��|�|j��|�|j��dS)Nr�z-xz
ba[^\\/]*$)r}rgr�rjr�rirLs r�test_regexpz CommandLineTestsBase.test_regexp�sP������t�]�D�K�@�@�@����t�z�*�*�*����D�K�(�(�(�(�(rc���tj�|jd��}tj|��tj|dd��}tj|dd��}|�d|j|��|�	|j
��|�	|j��|�	|��|�	|��dS)N�foo2r�r
�bar2r�)r#r7r8r6rBr	r�r}rgr�rirj)rE�pkgdir2�init2fn�bar2fns    r�test_multiple_dirsz'CommandLineTestsBase.test_multiple_dirs�s����'�,�,�t�~�v�6�6��
�������+�G�Z��D�D���*�7�F�B�?�?������t�{�G�4�4�4����D�K�(�(�(����D�J�'�'�'����G�$�$�$����F�#�#�#�#�#rc��tj|jdd��|�ddd|j��\}}}|�|d��dS)Nr�r�r��-d�dinsdale�File "dinsdale)r	r�rgrr��rErrrs    r�test_d_compile_errorz)CommandLineTestsBase.test_d_compile_error�sW���!�$�+�}�l�K�K�K��*�*�4��z�4�;�O�O���C������/�0�0�0�0�0rc���tj|jdd��}|�ddd|j��tj|jdd��}tj�|��}tj|tj	�
|jd����tj|��tj|d	�
��\}}}|�
|d��dS)Nr�zraise Exceptionr�r�r��bingz
import bazzbaz.pycF)�
__isolatedr�)r	r�rgr}rrrr#�renamer7r8�remover�r�)rEr�r�r�rrrs       r�test_d_runtime_errorz)CommandLineTestsBase.test_d_runtime_error�s����)�$�+�u�>O�P�P������t�Z���=�=�=�
�
&�t�{�F�L�
I�
I���n�.�.�u�5�5��
�	�#�r�w�|�|�D�K��;�;�<�<�<�
�	�%����$�:�2�%�P�P�P���C������/�0�0�0�0�0rc��|�dtj�|jd��|j��\}}}|�|d��|�|d��|�tj�	tj�|j
������dS)N�-i�
nosuchfilesrror.*nosuchfiles	Traceback)rr#r7r8r6rgr��assertNotRegexr�r�rrrrhr�s    r�test_include_bad_filez*CommandLineTestsBase.test_include_bad_file�s����*�*��"�'�,�,�t�~�|�<�<�d�k�K�K���C������1�2�2�2����C��.�.�.��������	��(H�(H�,0�,@�)B�)B�C�C�	D�	D�	D�	D�	Drc��tj|jdd��}tj|jdd��}tj|jdd��}tj|jdd��}ttj�|jd��dd�	��5}|�tj�|jd
��tj	z��|�tj�|jd��tj	z��ddd��n#1swxYwY|�
dtj�|jd��|��|�|��|�|��|�|��|�|��dS)
N�f1r
�f2�f3�f4�l1r/r0r1�f1.py�f2.pyr�)
r	r�rgr;r#r7r8r6r<�linesepr}r�r��rEr�r�r�r�r�s      r�test_include_file_with_argz/CommandLineTestsBase.test_include_file_with_arg�s���
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�"�'�,�,�t�~�t�4�4�c�G�
L�
L�
L�	D�PR��H�H�R�W�\�\�$�+�w�7�7��
�B�C�C�C��H�H�R�W�\�\�$�+�w�7�7��
�B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�	
����r�w�|�|�D�N�D�A�A�2�F�F�F����B�������B�������r�"�"�"����B�����s�"BD9�9D=�D=c��tj|jdd��}tj|jdd��}tj|jdd��}tj|jdd��}ttj�|jd��dd�	��5}|�tj�|jd
��tj	z��ddd��n#1swxYwY|�
dtj�|jd����|�|��|�|��|�|��|�|��dS)Nr�r
r�r�r�r�r/r0r1r�r�)
r	r�rgr;r#r7r8r6r<r�r}r�r�r�s      r�test_include_file_no_argz-CommandLineTestsBase.test_include_file_no_arg�s���
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�"�'�,�,�t�~�t�4�4�c�G�
L�
L�
L�	D�PR��H�H�R�W�\�\�$�+�w�7�7��
�B�C�C�C�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D�	D����	D�	D�	D�	D�����r�w�|�|�D�N�D�A�A�B�B�B����r�"�"�"����B�������r�"�"�"����r�"�"�"�"�"s�"AC4�4C8�;C8c�n�tj|jdd��}tj|jdd��}tj|jdd��}tj|jdd��}tj|�d��ddgz�}|j�|tjz�	d	����tj
|��|�|��|�|��|�|��|�|��dS)
Nr�r
r�r�r�rr��-r\)
r	r�rg�spawn_pythonrw�stdinr<r#r��encode�kill_pythonr�r�)rEr�r�r�r��ps      r�test_include_on_stdinz*CommandLineTestsBase.test_include_on_stdin	s
��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=��
�
&�t�{�D�"�
=�
=���&��);�);�B�)?�)?�4��+�)M�O��	��
�
�r�"�*�}�,�,�W�5�5�6�6�6��!�!�$�$�$����r�"�"�"����r�"�"�"����B�������r�"�"�"�"�"rc�F�tj|jdd��}|�d|j||j��\}}}|�|d��|�|��|�|j��|�|j��dS)Nr�zsyntax(errorr�srror)	r	r�rgrrirjr�r�r�)rE�bingfnrrrs     r�!test_compiles_as_much_as_possiblez6CommandLineTestsBase.test_compiles_as_much_as_possibles����*�4�;���O�O���*�*�<���+1�4�:�?�?���C������g�&�&�&����v�&�&�&����D�K�(�(�(����D�J�'�'�'�'�'rc�\�|�d��}|�|d��dS)N�badfilenamesCan't list 'badfilename')r}r�)rErs  r�!test_invalid_arg_produces_messagez6CommandLineTestsBase.test_invalid_arg_produces_messages2�����}�-�-������9�:�:�:�:�:rc��tj|jdd��tj�tj�|jd����}|�	d|j��t|d��5}|���}ddd��n#1swxYwY|�t�|dd�d��d	��|�	d
|j��t|d��5}|���}ddd��n#1swxYwY|�t�|dd�d��d��dS)Nr�r
r�z --invalidation-mode=checked-hashrS���littler�z"--invalidation-mode=unchecked-hashr)r	r�rgrrrr#r7r8r}r;rWrrX�
from_bytes)rEr��fpr]s    r�test_pyc_invalidation_modez/CommandLineTestsBase.test_pyc_invalidation_mode#s����!�$�+�t�R�8�8�8��n�.�.��G�L�L���g�.�.�0�0�����;�T�[�I�I�I�
�#�t�_�_�	���7�7�9�9�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������Q�q�S�	�8�<�<�d�C�C�C����=�t�{�K�K�K�
�#�t�_�_�	���7�7�9�9�D�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	��������Q�q�S�	�8�<�<�d�C�C�C�C�Cs$�	B*�*B.�1B.�D8�8D<�?D<r�c��tj|jdd��}g}td��D]�}tj�|jd�|����}t	j|��tj|dd��}|�	tj|dd������|�
|jdd��|�|��|D]}|�|���dS)Nr�r
r�zfoo{}r�z-j�0)r	r�r6r�r#r7r8r�rBr�r}r�)rEr��files�suffixrgr�rFs       r�test_workersz!CommandLineTestsBase.test_workers0s����*�4�>�6�2�F�F�����A�h�h�	H�	H�F��W�\�\�$�.�'�.�.��2H�2H�I�I�F��H�V�����*�6�:�r�B�B�B��L�L��2�6�6�2�F�F�G�G�G�G�������s�3�3�3����F�#�#�#��	&�	&�D�����%�%�%�%�	&�	&rzcompileall.compile_dirc�0�tjdtj|jdg���5tj��|�|j��|�	|j
ddd��ddd��dS#1swxYwYdS)Nzsys.argvz-j0r�r�r�r)rrMr�
executabler6rl�mainrkr�rr�)rEr�s  r�test_workers_available_coresz1CommandLineTestsBase.test_workers_available_cores?s���
�Z�
� �^�T�^�U�C�E�E�E�	F�	F��O�����O�O�K�.�/�/�/����[�2�2�6�y�A�1�E�E�E�		F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F�	F����	F�	F�	F�	F�	F�	Fs�AB�B�Bc��gd�}tjj|jg|�R�}tj|��tj|dd��}tj�	|��}tjj|jg|dd��R�}d}|�
d|d||��tj|��\}}}	tjj|g|dd��R�}
|�|
t|	tj�������|�|t|	tj�������dS)	Nrr�rrr"z-sz-pr1)r#r7r8r6rr	r�rrrr}r�r�rrrrr%s           rr&z+CommandLineTestsBase.test_strip_and_prependGsN��4�4�4���w�|�D�N�6�X�6�6�6��
��D�����*�4���A�A��
�^�
-�
-�f�
5�
5���7�<���>��"�1�"��>�>�>���
�����x��z�4�@�@�@�$�:�2�>�>���C���g�l�:�=������=�=�=���
�
����c�4�6�6�7�7�7�	
�	
�	
�	
������c�4�6�6�7�7�7�	
�	
�	
�	
�	
rc
�Z�tj�|jd��}tj|��tj|dd��}g}dD]6}|�tj	�
||������7ddgddgddggd	�g}|D]�}|j|gd
�|D���R�|D]r}|�tj�
|t|������	tj||���c#t $rY�owxYw��dS)N�
optimizationsr+r,r-rr�1�2)rrrc3�:K�|]}dt|��zV��dS)z-oN)r)r�ns  rr�zICommandLineTestsBase.test_multiple_optimization_levels.<locals>.<genexpr>js,����$L�$L�q�T�C��F�F�]�$L�$L�$L�$L�$L�$Lr)r#r7r8r6rr	r�r�rrrr}rkr�rXr�r.)rEr7rr�r/r0r1s       rr2z6CommandLineTestsBase.test_multiple_optimization_levels[s~���w�|�|�D�N�O�<�<��
��D�����*�4�+>�+2�4�4����$�	P�	P�I��I�I�i�n�6�6�v�DM�7�O�O�
P�
P�
P�
P�!�3�Z�!�3�Z�!�3�Z�,�_�_�.�� 1�	�	�O��D��T�M�$L�$L�O�$L�$L�$L�M�M�M�M�,�
�
�	��������r�#�i�.�.�/A� B� B�C�C�C���I�b��m�,�,�,�,�� �����D�����	
�	�	s�?D�
D'�&D'c��tj�|jddd��}tj�|jddd��}tj�|jddd��}tj|��tj|��tj|��tj|dd��}tj|dd��}tj�|d	��}tj�|d
��}tj||��tj||��tj	�
|��}tj	�
|��}	|�|d|��|�tj�
|����|�tj�
|	����dS)Nr�r4r5r6r7r8r,r9r:r;z-e)r#r7r8r6rr	r�r=rrrr}rkr�r�r>s
          rrHz4CommandLineTestsBase.test_ignore_symlink_destinationrs����w�|�|�D�N�F�E�9�M�M������T�^�V�U�J�O�O�
��'�,�,�t�~�v�u�l�S�S��
��L�!�!�!�
��M�"�"�"�
��O�$�$�$�'�2�<��QX�Y�Y��)�5�o�GX�Za�b�b���'�,�,�}�6G�H�H���W�\�\�-�9M�N�N��
�
�>�?�3�3�3�
�
�$�&8�9�9�9��^�5�5�o�F�F�
�!��8�8�9K�L�L�
������l�;�;�;��������z�2�2�3�3�3��������
�6�6�7�7�7�7�7rc�>�|�|jdd��dS)N�-o 1�--hardlink-dupes)rr6rLs r�test_hardlink_bad_argsz+CommandLineTestsBase.test_hardlink_bad_args�s%��	
���D�N�F�4F�G�G�G�G�Grc
��dD�]:}tj��5}|�|���5tj|dd��}t|��}gd�}|r|�d��|j|g|�R�|�t|d|d��|��|�t|d|d	��|��|�t|d|d	��|��ddd��n#1swxYwYddd��n#1swxYwY��<dS)
N)TF��deduprr,)r�z-o 0rz-o 2rrrr)
r4�TemporaryDirectory�subTestr	r�r!r�r}rr*)rEr!r7r�pycsrvs      r�
test_hardlinkz"CommandLineTestsBase.test_hardlink�s���#�
	K�
	K�E��,�.�.�
K�$��\�\��\�.�.�K�K�*�6�t�X�w�O�O�F�#�F�+�+�D�9�9�9�D��8����$6�7�7�7�$�D�$�T�1�D�1�1�1�1��$�$�[��a��$�q�'�%B�%B�E�J�J�J��$�$�[��a��$�q�'�%B�%B�E�J�J�J��$�$�[��a��$�q�'�%B�%B�E�J�J�J�K�K�K�K�K�K�K�K�K�K�K����K�K�K�K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K�
K����
K�
K�
K�
K��
	K�
	Ks5�D2�CD�D2�D�D2�"D�#D2�2D6	�9D6	N)6rIrJrKrarGrg�contextmanagerrrrwr}rr�r�r�r
r�r��namer�r�r��localsr�r�r�r�r�rrNr�r�r�r�r�r�r�r�r�r�r�r�rr	rrLrrrMrr&r2rHrr%rrrrcrc�s@������ � �G�G�G���,�,���,����
������.�.�.�/�/�/�/�/�/��+�+���+�"-�-�-�
�5�"��	�[�4�&�)�	�;���0��3�3���c�6�
�F�
	4�
	4�
	4�
	4�23�����&��-�.�.�D�D�D�8�8�8��
+�
+���
+�
#�
#�
#� #� #� #�D�"���#�"��%�%�%�&�&�&�)�)�)�
	$�	$�	$�1�1�1�
1�1�1�D�D�D� � � �#�#�#�#�#�#�(�(�(�;�;�;�D�D�D��Z�%�'A�B�B�&�&�C�B�&��T�Z�(�)�)�F�F�*�)�F�
�
�
�(���.�"�8�8�#�"�8�0H�H�H�
K�K�K�K�Krrcc��eZdZdS)�CommandLineTestsWithSourceEpochNrQrrrr*r*�rRrr*c��eZdZdS)�CommandLineTestsNoSourceEpochNrQrrrr,r,�rRrr,�linkzrequires os.linkc��eZdZd�Zejd���Zdd�Zdddd�d	�Zd
�Z	dd�Z
d�Zd
�Zdd�Z
d�Zd�Zd�Zd�Zd�ZdS)�HardlinkDedupTestsBasec��d|_dSrIr�rLs rrGzHardlinkDedupTestsBase.setUp�s
����	�	�	rc#�K�tj��5}||_|V�d|_ddd��dS#1swxYwYdSrI)r4r"r7)rEr7s  r�temporary_directoryz*HardlinkDedupTestsBase.temporary_directory�s�����
�
(�
*�
*�	�d��D�I��J�J�J��D�I�	�	�	�	�	�	�	�	�	�	�	�	����	�	�	�	�	�	s�6�:�:rc�8�tj|j||��SrI)r	r�r7)rE�coder's   rr�z"HardlinkDedupTestsBase.make_script�s���(���D�$�?�?�?rTrF)r!r�rwc�B�tj|jd|||���dS)NT)rxr��hardlink_dupesrw)rlr�r7)rEr!r�rws    rr�z"HardlinkDedupTestsBase.compile_dir�s9����t�y��x�.3�5�	B�	B�	B�	B�	B�	Brc���|���5|�d��|�t��5t	j|jddd���ddd��n#1swxYwY|�t��5t	j|jdddgd���ddd��n#1swxYwYddd��dS#1swxYwYdS)N�passTr)rxr�r6)r2r�r(r�rlr�r7rLs r�
test_bad_argsz$HardlinkDedupTestsBase.test_bad_args�s����
%�
%�
'�
'�		<�		<����V�$�$�$��"�"�:�.�.�
<�
<��&�t�y��q�6:�<�<�<�<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<��"�"�:�.�.�
<�
<��&�t�y���1�v�6:�<�<�<�<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<�
<����
<�
<�
<�
<�		<�		<�		<�		<�		<�		<�		<�		<�		<�		<�		<�		<����		<�		<�		<�		<�		<�		<sY�0C�A/�#C�/A3	�3C�6A3	�7C� C�4C�C	�C�C	�C�C�Cc��g}|r|�d��|�d��|r|�d��d�|��S)Nz'module docstring'zx = 1z
assert x == 1�
)r�r8)rE�	docstring�	assertion�liness    r�create_codez"HardlinkDedupTestsBase.create_code�s`�����	/��L�L�-�.�.�.�
���W�����	*��L�L��)�)�)��y�y����rc#�ZK�dD]%}dD] }|�||���}|||fV��!�&dS)N)FT�r<r=)r?)rEr<r=r4s    r�
iter_codesz!HardlinkDedupTestsBase.iter_codes�sa����&�	3�	3�I�*�
3�
3�	��'�'�)�y�'�Q�Q���Y�	�2�2�2�2�2�
3�	3�	3rc
��|���D�])\}}}|�||���5|���5|�|��}t	|��}|�d���|�t|d|d����|�t|d|d����|�t|d|d����ddd��n#1swxYwYddd��n#1swxYwY��+dS)NrAFr rrr)rBr#r2r�r!r�r�r*)rEr4r<r=rr$s      r�
test_disabledz$HardlinkDedupTestsBase.test_disabled�s���*.�/�/�*;�*;�	D�	D�&�D�)�Y����	�Y��G�G�
D�
D��-�-�/�/�D�D�!�-�-�d�3�3�F�#�F�+�+�D��$�$�5�$�1�1�1��$�$�[��a��$�q�'�%B�%B�C�C�C��$�$�[��a��$�q�'�%B�%B�C�C�C��$�$�[��a��$�q�'�%B�%B�C�C�C�
D�D�D�D�D�D�D�D�D�D�D����D�D�D�D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D�
D����
D�
D�
D�
D��	D�	Ds6�D3�CD�D3�D � D3�#D �$D3�3D7	�:D7	c�P�t|��}|�t|d|d��|��|�t|d|d��|o|��|�t|d|d��|��dS)Nrrr)r!rr*)rErr<r=r$s     r�check_hardlinksz&HardlinkDedupTestsBase.check_hardlinks�s������������T�!�W�d�1�g�6�6�&��	(�	(�	(�����T�!�W�d�1�g�6�6�&��8�y�=�	:�	:�	:�����T�!�W�d�1�g�6�6�&��	(�	(�	(�	(�	(rc�r�|���D]�\}}}|�||���5|���5|�|��}|���|�|||��ddd��n#1swxYwYddd��n#1swxYwY��dS)NrA)rBr#r2r�r�rF)rEr4r<r=rs     rr%z$HardlinkDedupTestsBase.test_hardlink�sb��*.�/�/�*;�*;�	G�	G�&�D�)�Y����	�Y��G�G�
G�
G��-�-�/�/�G�G�!�-�-�d�3�3�F��$�$�&�&�&��(�(���I�F�F�F�G�G�G�G�G�G�G�G�G�G�G����G�G�G�G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G�
G����
G�
G�
G�
G��	G�	Gs6�B+�AB�B+�B�B+�B�B+�+B/	�2B/	c	���dD]�}|�|���5|���5|�|�����}|�|���t||d��}t||d��}|�t||����ddd��n#1swxYwYddd��n#1swxYwY��dS)N))rr)rr)rr)�opts�r�rr)r#r2r�r?r�rrkr*)rErIr�pyc1�pyc2s     r�test_only_two_levelsz+HardlinkDedupTestsBase.test_only_two_levelssf��,�		=�		=�D����4��(�(�
=�
=��-�-�/�/�=�=�"�-�-�d�.>�.>�.@�.@�A�A�F��$�$�d�$�3�3�3�"�6�4��7�3�3�D�"�6�4��7�3�3�D��O�O�K��d�$;�$;�<�<�<�=�=�=�=�=�=�=�=�=�=�=����=�=�=�=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=�
=����
=�
=�
=�
=��		=�		=s5�C �B
C	�=C �	C
�
C �C
�C � C$	�'C$	c�d�|���5|�|�����}|�gd����t	|d��}t	|d��}|�t
||����ddd��dS#1swxYwYdS)N)rrrrrJrr)r2r�r?r�rrkr*)rErrKrLs    r�test_duplicated_levelsz-HardlinkDedupTestsBase.test_duplicated_levelss����
%�
%�
'�
'�	5�	5��%�%�d�&6�&6�&8�&8�9�9�F����l�l�l��3�3�3��6�1�%�%�D��6�1�%�%�D��O�O�K��d�3�3�4�4�4�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5�	5����	5�	5�	5�	5�	5�	5s�BB%�%B)�,B)c�*�|���5|�d��}|���|�|��t	|��}tj|d��j}|�d��}|�ddgd���|�|tj|d��j��|�	t|d|d����|�|tj|d��j��|�tj|d|dd�����ddd��dS#1swxYwYdS)	Nr,r�print(0)rT)r�rwr��shallow)r2r�r�rFr!r#r$r%rrkr*r�r��filecmp�cmp�rErr$�inodes    r�test_recompilationz)HardlinkDedupTestsBase.test_recompilations����
%�
%�
'�
'�	J�	J��%�%�g�.�.�F�������� � ��(�(�(��F�#�#�D��G�D��G�$�$�+�E��%�%�j�1�1�F�
���q�!�f�D��9�9�9�
���U�B�G�D��G�$4�$4�$;�<�<�<��O�O�K��Q���a��9�9�:�:�:�����r�w�t�A�w�'7�'7�'>�?�?�?����W�[��a��$�q�'�4�H�H�H�I�I�I�)	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js�E&F�F�Fc�`�|���5|�|���d���}|���|�|��t|��}t
j|d��j}|�dd���}tj
dddd|j�	��|�|t
j|d��j��|�|t
j|d
��j��|�
t|d|d
����|�
tj|d|d
d�
����ddd��dS#1swxYwYdS)N�module)r'rrQr�z-cz
import moduleF)r�rmrrTrR)r2r�r?r�rFr!r#r$r%r	rzr7rr�r*rTrUrVs    r�test_importz"HardlinkDedupTestsBase.test_import7s����
%�
%�
'�
'�	J�	J��%�%�d�&6�&6�&8�&8�x�%�H�H�F�������� � ��(�(�(��F�#�#�D��G�D��G�$�$�+�E��%�%�j�x�%�@�@�F�
�*��d�O��$�)�
�
�
�
�

���U�B�G�D��G�$4�$4�$;�<�<�<����U�B�G�D��G�$4�$4�$;�<�<�<����[��a��$�q�'�:�:�;�;�;����W�[��a��$�q�'�4�H�H�H�I�I�I�-	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J�	J����	J�	J�	J�	J�	J�	Js�FF#�#F'�*F'Nr )FF)rIrJrKrGrgr&r2r�r�r9r?rBrDrFr%rMrOrXr[rrrr/r/�s/����������������@�@�@�@�$(�)�5�B�B�B�B�B�<�<�<� � � � �3�3�3�
D�
D�
D�(�(�(�(�G�G�G�=�=�=�
5�
5�
5�J�J�J�2J�J�J�J�Jrr/c��eZdZdS)�!HardlinkDedupTestsWithSourceEpochNrQrrrr]r]SrRrr]c��eZdZdS)�HardlinkDedupTestsNoSourceEpochNrQrrrr_r_ZrRrr_�__main__)4rlrgrT�importlib.utilrrir#r�r}r?rZrr4�test.test_importlib.utilr�r�r{rr�concurrent.futuresr�concurrent.futures.processrrL�NotImplementedError�ModuleNotFoundErrorr�test.supportrr	�test.test_py_compiler
rrr!r*r,�TestCaserPrV�skipIf�is_wasirXrcr*r,�hasattrr/r]r_rIrrrr�<module>rmsU������������������	�	�	�	�	�	�	�	���������
�
�
�
�
�
�
�
�
�
�
�
�����������������%�%�%�%�%�%�%�%�"�7�6�6�6�6�6�?�?�?�?�?�?������ �����0�1�"�"�"�!����"����������"�"�"�"�"�"�&�&�&�&�&�&�:�:�:�:�:�:�8�8�8�8�8�8�F�F�F�7�7�7����K8�K8�K8�K8�K8�K8�K8�K8�\	�	�	�	�	�%8�%-�%6�/F�7;�	�	�	�	�	�	�	�	�	�(;�(0�(9�2I�:?�	�	�	�	������"D�E�E�%�%�%�%�%�8�$�%�%�F�E�%�.xK�xK�xK�xK�xK�xK�xK�xK�v
	�	�	�	�	�&:�'/�'8�1H�9=�	�	�	�	�	�	�	�	�	�$8�%-�%6�/F�7<�	�	�	�	����W�W�R��(�(�*<�=�=�ZJ�ZJ�ZJ�ZJ�ZJ�ZJ�ZJ�>�=�ZJ�z	�	�	�	�	�(>�(0�(9�2I�:>�	�	�	�	�	�	�	�	�	�&<�&.�&7�0G�8=�	�	�	�	��z����H�M�O�O�O�O�O��s�A�	A+�*A+