o
    GXîh1¾  ã                   @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlZd dlZd dlZd dlZd dlmZmZ d dlmZ zd dlmZ eƒ  dZW n eyb   dZY nw d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ dd„ Z dd„ Z!dd„ Z"G dd„ dƒZ#G dd„ de#ej$eddZ%G dd„ de#ej$eddZ&G dd„ dej$ƒZ'G dd„ dƒZ(G dd„ de(ej$eddZ)G dd „ d e(ej$eddZ*G d!d"„ d"ƒZ+G d#d$„ d$e+ej$eddZ,G d%d&„ d&e+ej$eddZ-e.d'kre /¡  dS dS )(é    N)ÚmockÚ
skipUnless)ÚProcessPoolExecutor)Ú_check_system_limitsTF)Úsupport)Ú	os_helper)Úscript_helper)Úwithout_source_date_epoch)ÚSourceDateEpochTestMetac                 C   s   |sd}t jj| |dS )NÚ ©Úoptimization)Ú	importlibÚutilÚcache_from_source)ÚscriptÚopt© r   ú>/opt/python-3.10.19/usr/lib/python3.10/test/test_compileall.pyÚget_pyc#   s   r   c                    s   ‡ fdd„dD ƒS )Nc                    s   g | ]}t ˆ |ƒ‘qS r   )r   )Ú.0r   ©r   r   r   Ú
<listcomp>+   s    zget_pycs.<locals>.<listcomp>©r   é   é   r   r   r   r   r   Úget_pycs*   s   r   c                 C   s    t  | ¡j}t  |¡j}||kS )z8Returns True if two files have the same inode (hardlink))ÚosÚstatÚst_ino)Z	filename1Ú	filename2Zinode1Zinode2r   r   r   Úis_hardlink.   s   r!   c                   @   s¦  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)d*„ Zeed+ƒe d,¡d-d.„ ƒƒZd/d0„ Zeed+ƒe d,¡d1d2„ ƒƒZeed+ƒe d,¡e d3¡d4d5„ ƒƒƒZejd,d6d7e d3¡d8d9„ ƒƒZ d:d;„ Z!d<d=œd>d?„Z"d@dA„ Z#dBdC„ Z$dDdE„ Z%dFdG„ Z&dHdI„ Z'dJdK„ Z(dLdM„ Z)dNdO„ Z*dPdQ„ Z+e,j-dRdS„ ƒZ.d6S )TÚCompileallTestsBasec                 C   sÜ   t  ¡ | _tj | jd¡| _tj 	| j¡| _
t| jddd}| d¡ W d   ƒ n1 s.w   Y  tj | jd¡| _tj 	| j¡| _t | j| j¡ tj | jd¡| _t | j¡ tj | jd¡| _t | j| j¡ d S )	Nú_test.pyÚwúutf-8©Úencodingzx = 123
z	_test2.pyZ_subdirz	_test3.py)ÚtempfileÚmkdtempÚ	directoryr   ÚpathÚjoinÚsource_pathr   r   r   Úbc_pathÚopenÚwriteÚsource_path2Úbc_path2ÚshutilÚcopyfileZsubdirectoryÚmkdirÚsource_path3©ÚselfÚfiler   r   r   ÚsetUp7   s   
ÿzCompileallTestsBase.setUpc                 C   ó   t  | j¡ d S ©N©r3   Úrmtreer*   ©r8   r   r   r   ÚtearDownE   ó   zCompileallTestsBase.tearDownc                 C   sR   t j | jd¡| _t| jddd}| d¡ W d   ƒ d S 1 s"w   Y  d S )Nz_test_bad.pyr$   r%   r&   zx (
)r   r+   r,   r*   Úbad_source_pathr/   r0   r7   r   r   r   Úadd_bad_source_fileH   s   "ÿz'CompileallTestsBase.add_bad_source_filec                 C   sh   t | jdƒ}| d¡}W d   ƒ n1 sw   Y  tt | j¡jƒ}t 	dt
jjd|d@ ¡}||fS )NÚrbé   ú<4sLLr   ì   ÿÿ )r/   r.   ÚreadÚintr   r   r-   Úst_mtimeÚstructÚpackr   r   ÚMAGIC_NUMBER)r8   r9   ÚdataÚmtimeZcomparer   r   r   Útimestamp_metadataM   s   ÿÿz&CompileallTestsBase.timestamp_metadatac              	   C   óz   z	t  | jd¡ W n ttfy   |  d¡ Y nw t t 	¡ ¡ |  
t | j¡¡ W d   ƒ d S 1 s6w   Y  d S )N)rG   rG   z0filesystem doesn't support timestamps near 2**32©r   Úutimer-   ÚOverflowErrorÚOSErrorZskipTestÚ
contextlibÚredirect_stdoutÚioÚStringIOÚ
assertTrueÚ
compileallÚcompile_filer?   r   r   r   Ú test_year_2038_mtime_compilationU   ó   ÿ"ÿz4CompileallTestsBase.test_year_2038_mtime_compilationc              	   C   rQ   )N)ì         r_   z+filesystem doesn't support large timestampsrR   r?   r   r   r   Útest_larger_than_32_bit_times_   r^   z1CompileallTestsBase.test_larger_than_32_bit_timesc                 C   sâ   t j d¡rt d¡‚t | j¡ | j|  	¡ Ž  t
| jdƒ}| ¡ t|ƒd… }W d  ƒ n1 s3w   Y  t
| jdƒ}| |¡ | |¡ W d  ƒ n1 sSw   Y  | j|  	¡ Ž  tj| jddd | j|  	¡ Ž  dS )	zOCheck that compileall recreates bytecode when the new metadata is
        used.ÚSOURCE_DATE_EPOCHzSOURCE_DATE_EPOCH is setrD   NÚwbFT©ÚforceÚquiet)r   ÚenvironÚgetÚunittestZSkipTestÚ
py_compileÚcompiler-   ÚassertEqualrP   r/   r.   rH   Úlenr0   ÚassertNotEqualr[   Úcompile_dirr*   rZ   )r8   Zmetadatar9   Úbcr   r   r   Úrecreation_checki   s   
ÿ
þz$CompileallTestsBase.recreation_checkc                 C   s   |   t dtjjdd¡¡ d S )NrF   r   r   )rp   rK   rL   r   r   rM   r?   r   r   r   Ú
test_mtimey   s   
ÿzCompileallTestsBase.test_mtimec                 C   s   |   d¡ d S )Ns       )rp   r?   r   r   r   Útest_magic_number~   ó   z%CompileallTestsBase.test_magic_numberc                 C   s   | j | jfD ]}zt |¡ W q   Y q|  tj| jddd¡ |  tj 	| j ¡o1tj 	| j¡ ¡ t | j ¡ |  tj
| jddd¡ |  tj 	| j ¡oTtj 	| j¡¡ t | j ¡ t | j¡ |  ¡  |  tj| jddd¡ |  tj
| jddd¡ d S )NFTrc   r   )r.   r2   r   ÚunlinkrZ   r[   r\   r-   r+   Úisfilern   r*   rC   ÚassertFalserB   )r8   Úfnr   r   r   Útest_compile_files‚   s6   ÿÿÿÿÿÿz&CompileallTestsBase.test_compile_filesc                 C   s|   |   tj | j¡¡ t ¡ }|  t 	t
 | j¡¡¡ W d   ƒ n1 s%w   Y  |  | ¡ d¡ |  tj | j¡¡ d S )Nz&Compiling ([^WindowsPath|PosixPath].*))rv   r   r+   ru   r.   r   Úcaptured_stdoutrZ   r[   r\   ÚpathlibÚPathr-   ÚassertRegexÚgetvalue)r8   Ústdoutr   r   r   Útest_compile_file_pathlike›   s   
ÿz.CompileallTestsBase.test_compile_file_pathlikec                 C   óP   |   tj | j¡¡ |  tjt 	| j
¡t 	d¡dd¡ |  tj | j¡¡ d S )NZ	ddir_pathr   )Úddirre   ©rv   r   r+   ru   r.   rZ   r[   r\   rz   r{   r-   r?   r   r   r   Útest_compile_file_pathlike_ddir£   ó   þz3CompileallTestsBase.test_compile_file_pathlike_ddirc                 C   r€   ©NZstripdir_pathr   )Ústripdirre   r‚   r?   r   r   r   Ú#test_compile_file_pathlike_stripdirª   r„   z7CompileallTestsBase.test_compile_file_pathlike_stripdirc                 C   r€   ©NZprependdir_pathr   )Ú
prependdirre   r‚   r?   r   r   r   Ú%test_compile_file_pathlike_prependdir±   r„   z9CompileallTestsBase.test_compile_file_pathlike_prependdirc                 C   sž   t jjj| jgd |  tjdd¡ W d   ƒ n1 sw   Y  t jjj| jgd |  ¡  |  	tjdddd¡ W d   ƒ d S 1 sHw   Y  d S )N©r+   r   ©re   FT)Úskip_curdirrd   re   )
ÚtestÚtest_importlibr   Zimport_stater*   rZ   r[   Úcompile_pathrC   rv   r?   r   r   r   Útest_compile_path¸   s   ÿ

ÿ"þz%CompileallTestsBase.test_compile_pathc                 C   s|   t j | jd¡}t j |d¡}t  |¡ t|dƒ W d   ƒ n1 s$w   Y  t |¡ |  t j 	t j |d¡¡¡ d S )NrN   r9   rb   Ú__pycache__)
r   r+   r,   r*   r5   r/   r[   r\   rv   Úexists)r8   Zdata_dirZ	data_filer   r   r   Útest_no_pycache_in_non_packageÁ   s   
ÿ
 z2CompileallTestsBase.test_no_pycache_in_non_packagec                 C   sN   |   ¡  t t ¡ ¡ |  t | j¡¡ W d   ƒ d S 1 s w   Y  d S r<   )	rC   rV   rW   rX   rY   rv   r[   r\   rB   r?   r   r   r   Ú#test_compile_file_encoding_fallbackÎ   s   "ÿz7CompileallTestsBase.test_compile_file_encoding_fallbackc                 C   sŠ   d\}}t j| jd|d tjj| j|d}|  tj	 
|¡¡ tjj| j|d}|  tj	 
|¡¡ tjj| j|d}|  tj	 
|¡¡ d S )NF)r   r   )r   r   T©re   Úoptimizer   )r[   rn   r*   r   r   r   r-   rZ   r   r+   ru   r1   r6   )r8   r—   r   ÚcachedZcached2Zcached3r   r   r   Útest_optimizeÕ   s   
ÿ
ÿ
ÿz!CompileallTestsBase.test_optimizec                 C   s‚   |   tj | j¡¡ t ¡ }t t	 
| j¡¡ W d   ƒ n1 s"w   Y  | ¡  ¡ d }|  |d¡ |  tj | j¡¡ d S )Nr   z$Listing ([^WindowsPath|PosixPath].*))rv   r   r+   ru   r.   r   ry   r[   rn   rz   r{   r*   r}   Ú
splitlinesr|   rZ   )r8   r~   Úliner   r   r   Útest_compile_dir_pathlikeä   s   
ÿz-CompileallTestsBase.test_compile_dir_pathlikec                 C   r€   r…   ©rv   r   r+   ru   r.   rZ   r[   rn   rz   r{   r*   r?   r   r   r   Ú"test_compile_dir_pathlike_stripdirì   r„   z6CompileallTestsBase.test_compile_dir_pathlike_stripdirc                 C   r€   rˆ   r   r?   r   r   r   Ú$test_compile_dir_pathlike_prependdiró   r„   z8CompileallTestsBase.test_compile_dir_pathlike_prependdirúrequires multiprocessingz&concurrent.futures.ProcessPoolExecutorc                 C   ó"   t j| jddd |  |j¡ d S ©NTé   ©re   Úworkers©r[   rn   r*   rZ   Úcalled©r8   Ú	pool_mockr   r   r   Útest_compile_pool_calledú   ó   z,CompileallTestsBase.test_compile_pool_calledc                 C   sB   |   td¡ tj| jdd W d   ƒ d S 1 sw   Y  d S )Nz%workers must be greater or equal to 0éÿÿÿÿ)r¥   )ZassertRaisesRegexÚ
ValueErrorr[   rn   r*   r?   r   r   r   Ú!test_compile_workers_non_positive   s
   ÿ"þz5CompileallTestsBase.test_compile_workers_non_positivec                 C   s,   t j| jddd |  |jd d d ¡ d S )NTr   r¤   r   Úmax_workers)r[   rn   r*   rk   Ú	call_argsr¨   r   r   r   Útest_compile_workers_cpu_count  s   z2CompileallTestsBase.test_compile_workers_cpu_countzcompileall.compile_filec                 C   s,   t j| jdd |  |j¡ |  |j¡ d S )NTrŒ   )r[   rn   r*   rv   r§   rZ   )r8   Úcompile_file_mockr©   r   r   r   Útest_compile_one_worker  s   z+CompileallTestsBase.test_compile_one_workerN©Únewc                 C   r¡   r¢   r¦   )r8   r²   r   r   r   Ú$test_compile_missing_multiprocessing  r«   z8CompileallTestsBase.test_compile_missing_multiprocessingc                 C   s´   d}| j }td|d ƒD ]}tj |d|› ¡}tj |d¡}t |¡ t | j|¡ qt	j
 |¡}tj| j d|d d |  tj |¡¡ tj| j d|d |  tj |¡¡ d S )Né   r   Zdir_z	script.pyT)re   Ú	maxlevels)r*   Úranger   r+   r,   r5   r3   r4   r-   r   r   r   r[   rn   rv   ru   rZ   )r8   Údepthr+   ÚiÚsourceZpyc_filenamer   r   r   Útest_compile_dir_maxlevels  s   
z.CompileallTestsBase.test_compile_dir_maxlevelsT)Úparallelc                C   s  ddg}| j }g }|D ]}tj ||¡}t |¡ t |dd¡ | t |dd¡¡ qtj	| j d||r5dnd	d
 |  
|¡ |D ]H}|  
| | j ¡|¡ tj |¡}|t| j tj ƒd… }	t |¡\}
}
}tj ||	¡}tjj |¡}|  |j|¡ |  d|› dt |¡¡ q@dS )z@Recursive compile_dir ddir must contain package paths; bpo39769.rŽ   ÚfooÚ__init__r   Úmodzdef fn(): 1/0
fn()
Tr   r   )re   r   r¥   Nú")r*   r   r+   r,   r5   r   Úmake_scriptÚappendr[   rn   rZ   Ú
startswithr   r   r   rl   ÚsepÚassert_python_failurerŽ   r   Zget_code_from_pycrk   Úco_filenameÚassertInÚfsdecode)r8   r   r¾   Úfullpathr+   ZmodsZsubdirrÁ   ZmodcodeÚmodpathÚ_ÚerrÚexpected_inZmod_code_objr   r   r   Ú_test_ddir_only*  s2   
ÿ
þ
øz#CompileallTestsBase._test_ddir_onlyc                 C   ó   | j dddS )ú=Recursive compile_dir ddir= contains package paths; bpo39769.ú
<a prefix>F©r   r¾   ©rÐ   r?   r   r   r   Útest_ddir_only_one_workerC  rs   z-CompileallTestsBase.test_ddir_only_one_workerc                 C   rÑ   )rÒ   rÓ   TrÔ   rÕ   r?   r   r   r   Útest_ddir_multiple_workersG  rs   z.CompileallTestsBase.test_ddir_multiple_workersc                 C   rÑ   )ú?Recursive compile_dir ddir='' contains package paths; bpo39769.r   FrÔ   rÕ   r?   r   r   r   Útest_ddir_empty_only_one_workerK  rs   z3CompileallTestsBase.test_ddir_empty_only_one_workerc                 C   rÑ   )rØ   r   TrÔ   rÕ   r?   r   r   r   Ú test_ddir_empty_multiple_workersO  rs   z4CompileallTestsBase.test_ddir_empty_multiple_workersc           
      C   sÈ   g d¢}t jj| jg|¢R Ž }t  |¡ t |dd¡}tj 	|¡}t jj| jg|d d… ¢R Ž }t
j|d|d t |¡\}}}t jj|dd … Ž }	|  |	t|t ¡ d¡ |  |t|t ¡ d¡ d S )N©rŽ   ÚbuildÚrealr+   rŽ   ú1 / 0r   T)re   r†   r&   ©r   r+   r,   r*   Úmakedirsr   rÃ   r   r   r   r[   rn   rÇ   rÉ   ÚstrÚsysÚgetdefaultencodingÚassertNotIn)
r8   rË   r+   r   ro   r†   ÚrcÚoutrÎ   rÏ   r   r   r   Útest_strip_onlyS  s"   
þþz#CompileallTestsBase.test_strip_onlyc           
      C   sš   g d¢}t jj| jg|¢R Ž }t  |¡ t |dd¡}tj 	|¡}d}t
j|d|d t |¡\}}}t jj|| jg|¢R Ž }	|  |	t|t ¡ d¡ d S )NrÛ   rŽ   rÞ   ú/fooT)re   r‰   r&   )r   r+   r,   r*   rà   r   rÃ   r   r   r   r[   rn   rÇ   rÉ   rá   râ   rã   )
r8   rË   r+   r   ro   r‰   rå   ræ   rÎ   rÏ   r   r   r   Útest_prepend_onlyf  s   
þz%CompileallTestsBase.test_prepend_onlyc                 C   sÖ   g d¢}t jj| jg|¢R Ž }t  |¡ t |dd¡}tj 	|¡}t jj| jg|d d… ¢R Ž }d}t
j|d||d t |¡\}}}	t jj|g|dd … ¢R Ž }
|  |
t|	t ¡ d¡ |  |t|	t ¡ d¡ d S )	NrÛ   rŽ   rÞ   r   rè   T)re   r†   r‰   r&   rß   ©r8   rË   r+   r   ro   r†   r‰   rå   ræ   rÎ   rÏ   r   r   r   Útest_strip_and_prependu  s(   
ÿþþz*CompileallTestsBase.test_strip_and_prependc                 C   sz   g d¢}t jj| jg|¢R Ž }t  |¡ t |dd¡ |  t¡ t	j
|ddddd W d   ƒ d S 1 s6w   Y  d S )N)rŽ   rÜ   rÝ   r+   r   rŽ   rÞ   Tz/barrè   )re   r   r†   r‰   )r   r+   r,   r*   rà   r   rÃ   ÚassertRaisesr­   r[   rn   )r8   rË   r+   r   r   r   Útest_strip_prepend_and_ddirŠ  s   

ÿ"ÿz/CompileallTestsBase.test_strip_prepend_and_ddirc              
   C   s²   t  | jdd¡}g }dD ]}| tjj||d¡ qddgddgddgg d¢g}|D ],}tj|d	|d
 |D ]}|  	t
j || ¡¡ z	t
 || ¡ W q6 tyU   Y q6w q*d S )NÚtest_optimizationúa = 0©r   r   r   r·   r   r   r   r   r   Tr–   )r   rÃ   r*   rÄ   r   r   r   r[   r\   rZ   r   r+   ru   rt   Ú	Exception)r8   r   ro   Ú	opt_levelÚtest_combinationsÚopt_combinationr   r   r   Ú!test_multiple_optimization_levels“  s.   þ
ÿÿÿüýz5CompileallTestsBase.test_multiple_optimization_levelsc           
      C   sú   t j | jddd¡}t j | jddd¡}t j | jddd¡}t  |¡ t  |¡ t  |¡ t |dd¡}t |dd¡}t j |d	¡}t j |d
¡}t  ||¡ t  ||¡ tj	 
|¡}tj	 
|¡}	tj|d|d |  t j |¡¡ |  t j |	¡¡ d S )NrŽ   ÚdirÚallowedÚsymlinksÚ
prohibitedÚtest_allowedrï   Útest_prohibitedútest_allowed.pyútest_prohibited.pyT)re   Úlimit_sl_dest)r   r+   r,   r*   rà   r   rÃ   Úsymlinkr   r   r   r[   rn   rZ   ru   rv   ©
r8   Zallowed_pathZsymlinks_pathZprohibited_pathZallowed_scriptZprohibited_scriptZallowed_symlinkZprohibited_symlinkZ
allowed_bcZprohibited_bcr   r   r   Útest_ignore_symlink_destination¦  s"   


z3CompileallTestsBase.test_ignore_symlink_destination)/Ú__name__Ú
__module__Ú__qualname__r:   r@   rC   rP   r]   r`   rp   rq   rr   rx   r   rƒ   r‡   rŠ   r‘   r”   r•   r™   rœ   rž   rŸ   r   Ú_have_multiprocessingr   Úpatchrª   r®   r±   r³   r¶   r½   rÐ   rÖ   r×   rÙ   rÚ   rç   ré   rë   rí   rõ   r   Úskip_unless_symlinkr  r   r   r   r   r"   5   sb    

		r"   c                   @   ó   e Zd ZdS )ÚCompileallTestsWithSourceEpochN©r  r  r  r   r   r   r   r	  À  ó    r	  )Ú	metaclassZsource_date_epochc                   @   r  )Ú!CompileallTestsWithoutSourceEpochNr
  r   r   r   r   r  Ç  r  r  c                   @   s(   e Zd ZdZdd„ Zdd„ Zdd„ ZdS )	ÚEncodingTestzTIssue 6716: compileall should escape source code when printing errors
    to stdout.c                 C   sf   t  ¡ | _tj | jd¡| _t| jddd}| d¡ | d¡ W d   ƒ d S 1 s,w   Y  d S )Nr#   r$   r%   r&   z# -*- coding: utf-8 -*-
u   print u"â‚¬"
)	r(   r)   r*   r   r+   r,   r-   r/   r0   r7   r   r   r   r:   Ò  s   

"þzEncodingTest.setUpc                 C   r;   r<   r=   r?   r   r   r   r@   Ù  rA   zEncodingTest.tearDownc                 C   s<   zt j}tjt ¡ ddt _t | j¡ W |t _d S |t _w )NÚasciir&   )râ   r~   rX   ÚTextIOWrapperÚBytesIOr[   rn   r*   )r8   Zorig_stdoutr   r   r   Ú
test_errorÜ  s
   zEncodingTest.test_errorN)r  r  r  Ú__doc__r:   r@   r  r   r   r   r   r  Î  s
    r  c                   @   s¦  e Zd ZdZdd„ Zejdd„ ƒZdd„ Zdd	„ Z	d
d„ Z
dd„ Zdd„ Zdd„ Zedd„ ƒZdd„ Zddg fdddgfdddgffD ]\ZZZeefdd„Zeeƒ d e < qCd!d"„ Zd#d$„ Zed%d&„ ƒZd'd(„ Zd)d*„ Zejd+d,„ ƒZd-d.„ Zd/d0„ Zd1d2„ Z d3d4„ Z!d5d6„ Z"d7d8„ Z#d9d:„ Z$d;d<„ Z%d=d>„ Z&d?d@„ Z'dAdB„ Z(dCdD„ Z)dEdF„ Z*e+e,dGƒdHdI„ ƒZ-e. /dJ¡dKdL„ ƒZ0dMdN„ Z1dOdP„ Z2ejdQdR„ ƒZ3dSdT„ Z4dUdV„ Z5dWS )XÚCommandLineTestsBasezTest compileall's CLI.c                 C   sr   t  ¡ | _|  tj| j¡ tj | jd¡| _	t 
| j	¡ tj | j	d¡| _t | j	dd¡| _t | j	dd¡| _d S )Nr¿   r’   rÀ   r   Zbar)r(   r)   r*   Z
addCleanupr   r>   r   r+   r,   Úpkgdirr5   Úpkgdir_cachedirr   rÃ   ÚinitfnÚbarfnr?   r   r   r   r:   è  s   
zCommandLineTestsBase.setUpc                 c   sB    t j}tj | jd¡}z|t _| j|dœV  W |t _dS |t _w )z&Adjust and restore sys.pycache_prefix.Z__testcache__)Ú
PYTHONPATHZPYTHONPYCACHEPREFIXN)râ   Úpycache_prefixr   r+   r,   r*   )r8   Z
old_prefixÚ
new_prefixr   r   r   Útemporary_pycache_prefixò  s   €
þz-CommandLineTestsBase.temporary_pycache_prefixc                 C   s   g t  ¡ ¢d‘d‘d‘|¢S )Nz-Sú-mr[   )r   Z!optim_args_from_interpreter_flags)r8   Úargsr   r   r   Ú_get_run_args   s   
ÿÿÿþz"CommandLineTestsBase._get_run_argsc                 O   s4   t j|  |¡i |¤ddi¤Ž\}}}|  d|¡ |S )NÚPYTHONIOENCODINGr%   ó    )r   Úassert_python_okr  rk   ©r8   r  Zenv_varsrå   ræ   rÎ   r   r   r   ÚassertRunOK  s   ÿÿþz CommandLineTestsBase.assertRunOKc                 O   s.   t j|  |¡i |¤ddi¤Ž\}}}|||fS )Nr   r%   )r   rÇ   r  r#  r   r   r   ÚassertRunNotOK  s   ÿÿþ
z#CommandLineTestsBase.assertRunNotOKc                 C   ó"   t j |¡}|  tj |¡¡ d S r<   )r   r   r   rZ   r   r+   r“   ©r8   rw   r+   r   r   r   ÚassertCompiled  ó   z#CommandLineTestsBase.assertCompiledc                 C   r&  r<   )r   r   r   rv   r   r+   r“   r'  r   r   r   ÚassertNotCompiled  r)  z&CommandLineTestsBase.assertNotCompiledc                 C   sp   t  | jdd¡}|  ¡ "}| jdi |¤Ž |  |¡ |  | j¡ |  | j¡ W d   ƒ d S 1 s1w   Y  d S )NÚbazr   r   )	r   rÃ   r*   r  r$  r(  r*  r  r  )r8   ÚbazfnÚenvr   r   r   Útest_no_args_compiles_path  s   

"üz/CommandLineTestsBase.test_no_args_compiles_pathc                 C   sÎ   t  | jdd¡}|  ¡ }| jdi |¤Ž tj |¡}W d   ƒ n1 s%w   Y  t 	|t
 
¡ d fd ¡ t |¡j}| jdi |¤Ž t |¡j}|  ||¡ | jdi |¤Ž t |¡j}|  ||¡ d S )Nr+  r   é<   r   ú-fr   )r0  )r   rÃ   r*   r  r$  r   r   r   r   rS   Útimer   rJ   rk   rm   )r8   r,  r-  ÚpycpathrO   Úmtime2r   r   r   Ú test_no_args_respects_force_flag#  s   
þz5CommandLineTestsBase.test_no_args_respects_force_flagc                 C   st   t  | jdd¡ |  ¡ }| jdi |¤Ž}W d   ƒ n1 sw   Y  |  d|¡ | jdi |¤Ž}|  d|¡ d S )Nr+  r   s   Listing ú-qr   )r5  )r   rÃ   r*   r  r$  rÉ   rä   )r8   r-  Únoisyre   r   r   r   Ú test_no_args_respects_quiet_flag5  s   
ÿz5CommandLineTestsBase.test_no_args_respects_quiet_flagZnormalÚpycr—   z	opt-1.pycú-OZdoubleoptimizez	opt-2.pycz-OOc                    s~   t j|ddd| jg Ž  |  tj | j¡¡ t‡ fdd„dD ƒƒ}|  	tt 
| j¡ƒ|¡ |  ‡ fdd„t 
| j¡D ƒ¡ d S )	Nr  r[   r5  c                 3   s     | ]}|  tjjˆ ¡V  qd S r<   )Úformatrâ   ÚimplementationÚ	cache_tag)r   Úbase©Úextr   r   Ú	<genexpr>I  s   € ÿz)CommandLineTestsBase.f.<locals>.<genexpr>)z__init__.{}.{}z	bar.{}.{}c                    s   g | ]	}|  ˆ ¡r|‘qS r   )Úendswith)r   rw   r>  r   r   r   M  s    
ÿz*CommandLineTestsBase.f.<locals>.<listcomp>)r   r"  r  rZ   r   r+   r“   r  Úsortedrk   Úlistdirrv   )r8   r?  ÚswitchÚexpectedr   r>  r   ÚfD  s   ÿÿ$zCommandLineTestsBase.fZtest_pep3147_paths_c                 C   sL   |   dd| j¡ |  tj | j¡¡ tg d¢ƒ}|  tt 	| j¡ƒ|¡ d S )Nz-br5  )ú__init__.pyz__init__.pyczbar.pyzbar.pyc)
r$  r  rv   r   r+   r“   r  rB  rk   rC  )r8   rE  r   r   r   Útest_legacy_pathsQ  s   z&CommandLineTestsBase.test_legacy_pathsc                 C   s|   |   d| j¡ |  tj | j¡¡ tj | jd¡}|  tj |¡¡ |   d| j¡ |  tj | j¡¡ |  tj |¡¡ d S )Nr5  r’   )	r$  r  rZ   r   r+   r“   r  r,   rv   )r8   Zcachecachedirr   r   r   Útest_multiple_runs[  s   z'CommandLineTestsBase.test_multiple_runsc                 C   s”   |   d| j¡ tj | j¡}t |t ¡ d fd ¡ t 	|¡j
}|   d| j¡ t 	|¡j
}|  ||¡ |   dd| j¡ t 	|¡j
}|  ||¡ d S )Nr5  r/  r   r0  )r$  r  r   r   r   r  r   rS   r1  r   rJ   rk   rm   )r8   r2  rO   r3  r   r   r   Ú
test_forceh  s   zCommandLineTestsBase.test_forcec                 C   s’   t j | jd¡}t  |¡ t |dd¡}t |dd¡}|  dd| j¡ |  |¡ |  	t j 
t j |d¡¡¡ |  d| j¡ |  |¡ |  |¡ d S )NÚspamrÀ   r   Úhamr5  z-lr’   )r   r+   r,   r  r5   r   rÃ   r$  r*  rv   r“   r(  )r8   Ú
subpackageÚ	subinitfnÚhamfnr   r   r   Útest_recursion_controlx  s   


z+CommandLineTestsBase.test_recursion_controlc           	      C   sV  t j | jd¡}t j |d¡}t j |d¡}|||fD ]}t |¡ qt j |d¡}t |dd¡}t |dd¡}t |dd¡}|  dd| j¡ |  |¡ |  	t j 
t j |d	¡¡¡ |  dd
| j¡ |  |¡ |  |¡ |  |¡ |  dd| j¡ |  |¡ |  |¡ |  |¡ |  |¡ |  dd| j¡ |  |¡ |  |¡ |  |¡ |  |¡ d S )NrK  rL  ZeggsrG  r   Zeggr5  z-r 0r’   z-r 1z-r 2z-r 5)r   r+   r,   r  r   Úmake_pkgrÃ   r$  r*  rv   r“   r(  )	r8   rM  Zsubpackage2Zsubpackage3ÚpkgrN  rO  ZspamfnZeggfnr   r   r   Útest_recursion_limit„  s8   
ÿ









z)CommandLineTestsBase.test_recursion_limitc              	   C   st   t j | jd¡}t |¡ t  dt j |d¡¡ t  dt j |d¡¡ |  d| j¡ |  t j | jdddd¡¡ d S )NrK  Ú.ZevilZevil2r5  rG  )	r   r+   r,   r  r   rQ  rÿ   r$  r(  )r8   rR  r   r   r   Útest_symlink_loop¦  s   


ÿz&CommandLineTestsBase.test_symlink_loopc                 C   s6   |   | j¡}|   d| j¡}|  d|¡ |  d|¡ d S )Nr5  r!  )r$  r  rm   rk   )r8   r6  re   r   r   r   Ú
test_quiet´  s   zCommandLineTestsBase.test_quietc                 C   sT   t  | jdd¡ |  d| j¡\}}}|  d| j¡\}}}|  d|¡ |  d|¡ d S )NÚcrunchyfrogú
bad(syntaxr5  z-qqr!  )r   rÃ   r  r%  rm   rk   )r8   rÍ   re   Zsilentr   r   r   Útest_silentº  s
   z CommandLineTestsBase.test_silentc                 C   s.   |   ddd| j¡ |  | j¡ |  | j¡ d S )Nr5  z-xz
ba[^\\/]*$)r$  r  r*  r  r(  r  r?   r   r   r   Útest_regexpÁ  s   z CommandLineTestsBase.test_regexpc                 C   sv   t j | jd¡}t  |¡ t |dd¡}t |dd¡}|  d| j|¡ |  	| j
¡ |  	| j¡ |  	|¡ |  	|¡ d S )NZfoo2rÀ   r   Úbar2r5  )r   r+   r,   r*   r5   r   rÃ   r$  r  r(  r  r  )r8   Zpkgdir2Zinit2fnÚbar2fnr   r   r   Útest_multiple_dirsÆ  s   

z'CommandLineTestsBase.test_multiple_dirsc                 C   s8   t  | jdd¡ |  ddd| j¡\}}}|  |d¡ d S )NrW  rX  r5  ú-dÚdinsdaleó   File "dinsdale)r   rÃ   r  r%  r|   ©r8   rå   ræ   rÎ   r   r   r   Útest_d_compile_errorÑ  s   z)CommandLineTestsBase.test_d_compile_errorc                 C   s„   t  | jdd¡}|  ddd| j¡ t  | jdd¡}tj |¡}t |tj	 
| jd¡¡ t |¡ t j|d	d
\}}}|  |d¡ d S )Nr+  zraise Exceptionr5  r^  r_  Úbingz
import bazzbaz.pycF)Ú
__isolatedr`  )r   rÃ   r  r$  r   r   r   r   Úrenamer+   r,   ÚremoverÇ   r|   )r8   r,  rw   r8  rå   ræ   rÎ   r   r   r   Útest_d_runtime_errorÖ  s   
z)CommandLineTestsBase.test_d_runtime_errorc                 C   sZ   |   dtj | jd¡| j¡\}}}|  |d¡ |  |d¡ |  tj 	t
j | j¡¡¡ d S )Nú-iÚ
nosuchfiles   rror.*nosuchfiles	   Traceback)r%  r   r+   r,   r*   r  r|   ZassertNotRegexrv   r“   r   r   r   r  ra  r   r   r   Útest_include_bad_fileà  s   
ÿÿz*CommandLineTestsBase.test_include_bad_filec                 C   sø   t  | jdd¡}t  | jdd¡}t  | jdd¡}t  | jdd¡}ttj | jd¡ddd	$}| tj | jd
¡tj	 ¡ | tj | jd¡tj	 ¡ W d   ƒ n1 sTw   Y  |  
dtj | jd¡|¡ |  |¡ |  |¡ |  |¡ |  |¡ d S )NÚf1r   Úf2Úf3Úf4Úl1r$   r%   r&   úf1.pyúf2.pyrh  )r   rÃ   r  r/   r   r+   r,   r*   r0   Úlinesepr$  r(  r*  ©r8   rk  rl  rm  rn  ro  r   r   r   Útest_include_file_with_argè  s   þ


z/CommandLineTestsBase.test_include_file_with_argc                 C   sÚ   t  | jdd¡}t  | jdd¡}t  | jdd¡}t  | jdd¡}ttj | jd¡ddd	}| tj | jd
¡tj	 ¡ W d   ƒ n1 sFw   Y  |  
dtj | jd¡¡ |  |¡ |  |¡ |  |¡ |  |¡ d S )Nrk  r   rl  rm  rn  ro  r$   r%   r&   rq  rh  )r   rÃ   r  r/   r   r+   r,   r*   r0   rr  r$  r*  r(  rs  r   r   r   Útest_include_file_no_argö  s   ÿ


z-CommandLineTestsBase.test_include_file_no_argc                 C   s¦   t  | jdd¡}t  | jdd¡}t  | jdd¡}t  | jdd¡}t j|  d¡ddg Ž }|j |tj  	d	¡¡ t  
|¡ |  |¡ |  |¡ |  |¡ |  |¡ d S )
Nrk  r   rl  rm  rn  r   rh  ú-r  )r   rÃ   r  Zspawn_pythonr  Ústdinr0   r   rr  ÚencodeZkill_pythonr*  r(  )r8   rk  rl  rm  rn  Úpr   r   r   Útest_include_on_stdin  s   



z*CommandLineTestsBase.test_include_on_stdinc                 C   s\   t  | jdd¡}|  d| j|| j¡\}}}|  |d¡ |  |¡ |  | j¡ |  | j¡ d S )Nrc  zsyntax(errorri  s   rror)	r   rÃ   r  r%  r  r  r|   r*  r(  )r8   Zbingfnrå   ræ   rÎ   r   r   r   Ú!test_compiles_as_much_as_possible  s   

ÿ
z6CommandLineTestsBase.test_compiles_as_much_as_possiblec                 C   s   |   d¡}|  |d¡ d S )NZbadfilenames   Can't list 'badfilename')r$  r|   )r8   ræ   r   r   r   Ú!test_invalid_arg_produces_message  s   
z6CommandLineTestsBase.test_invalid_arg_produces_messagec                 C   sä   t  | jdd¡ tj tj | jd¡¡}|  	d| j¡ t
|dƒ}| ¡ }W d   ƒ n1 s/w   Y  |  t |dd… d¡d	¡ |  	d
| j¡ t
|dƒ}| ¡ }W d   ƒ n1 s]w   Y  |  t |dd… d¡d¡ d S )Nrk  r   rp  z --invalidation-mode=checked-hashrD   é   é   Úlittler·   z"--invalidation-mode=unchecked-hashr   )r   rÃ   r  r   r   r   r   r+   r,   r$  r/   rH   rk   rI   Ú
from_bytes)r8   r8  ÚfprN   r   r   r   Útest_pyc_invalidation_mode  s   ÿ
ÿ
ÿ z/CommandLineTestsBase.test_pyc_invalidation_moder    c                 C   s–   t  | jdd¡}g }tdƒD ]#}tj | jd |¡¡}t |¡ t  |dd¡}| 	t  |dd¡¡ q|  
| jdd¡ |  |¡ |D ]}|  |¡ qAd S )Nr[  r   r£   zfoo{}rÀ   z-jÚ0)r   rÃ   r*   r¹   r   r+   r,   r:  r5   rÄ   r$  r(  )r8   r\  ÚfilesÚsuffixr  rw   r9   r   r   r   Útest_workers*  s   

ÿz!CommandLineTestsBase.test_workerszcompileall.compile_dirc                 C   sh   t jdtj| jdgd t ¡  |  |j¡ |  	|j
d d d¡ W d   ƒ d S 1 s-w   Y  d S )Nzsys.argvz-j0r´   r¬   r¥   r   )r   r  râ   Ú
executabler*   r[   ÚmainrZ   r§   rk   r°   )r8   rn   r   r   r   Útest_workers_available_cores9  s   ÿ"üz1CommandLineTestsBase.test_workers_available_coresc                 C   sÖ   g d¢}t jj| jg|¢R Ž }t  |¡ t |dd¡}tj 	|¡}t jj| jg|d d… ¢R Ž }d}|  
d|d||¡ t |¡\}}}	t jj|g|dd … ¢R Ž }
|  |
t|	t ¡ d¡ |  |t|	t ¡ d¡ d S )	NrÛ   rŽ   rÞ   r   rè   z-sz-pr&   )r   r+   r,   r*   rà   r   rÃ   r   r   r   r$  rÇ   rÉ   rá   râ   rã   rä   rê   r   r   r   rë   A  s$   
þþz+CommandLineTestsBase.test_strip_and_prependc              
   C   sÚ   t j | jd¡}t  |¡ t |dd¡}g }dD ]}| tj	j
||d¡ qddgddgddgg d	¢g}|D ]4}| j|gd
d„ |D ƒ¢R Ž  |D ]!}|  t j |t|ƒ ¡¡ z	t  || ¡ W qH tyi   Y qHw q6d S )NZoptimizationsrî   rï   rð   r   rƒ  Ú1Ú2)rƒ  rŠ  r‹  c                 s   s    | ]	}d t |ƒ V  qdS )z-oN)rá   )r   Únr   r   r   r@  d  s   € zICommandLineTestsBase.test_multiple_optimization_levels.<locals>.<genexpr>)r   r+   r,   r*   rà   r   rÃ   rÄ   r   r   r   r$  rZ   ru   rI   rt   rñ   )r8   r+   r   ro   rò   ró   rô   r   r   r   rõ   U  s6   
þ
ÿýÿüþz6CommandLineTestsBase.test_multiple_optimization_levelsc           
      C   sø   t j | jddd¡}t j | jddd¡}t j | jddd¡}t  |¡ t  |¡ t  |¡ t |dd¡}t |dd¡}t j |d	¡}t j |d
¡}t  ||¡ t  ||¡ tj	 
|¡}tj	 
|¡}	|  |d|¡ |  t j |¡¡ |  t j |	¡¡ d S )NrŽ   rö   r÷   rø   rù   rú   rï   rû   rü   rý   z-e)r   r+   r,   r*   rà   r   rÃ   rÿ   r   r   r   r$  rZ   ru   rv   r   r   r   r   r  l  s"   


z4CommandLineTestsBase.test_ignore_symlink_destinationc                 C   s   |   | jdd¡ d S )Nú-o 1ú--hardlink-dupes)r%  r*   r?   r   r   r   Útest_hardlink_bad_args…  s   z+CommandLineTestsBase.test_hardlink_bad_argsc              
   C   sî   dD ]r}t  ¡ d}| j|dN t |dd¡}t|ƒ}g d¢}|r&| d¡ | j|g|¢R Ž  |  t	|d |d ƒ|¡ |  t	|d |d	 ƒ|¡ |  t	|d |d	 ƒ|¡ W d   ƒ n1 s`w   Y  W d   ƒ n1 sow   Y  qd S )
N)TF©Údedupr   rï   )r5  z-o 0r  z-o 2rŽ  r   r   r   )
r(   ÚTemporaryDirectoryÚsubTestr   rÃ   r   rÄ   r$  rk   r!   )r8   r‘  r+   r   Úpycsr  r   r   r   Útest_hardlinkŠ  s"   

õ€ÿ€ÿz"CommandLineTestsBase.test_hardlinkN)6r  r  r  r  r:   rV   Úcontextmanagerr  r  r$  r%  r(  r*  r.  r	   r4  r7  Únamer?  rD  rF  ÚlocalsrH  rI  rJ  rP  rS  r   r  rU  rV  rY  rZ  r]  rb  rg  rj  rt  ru  rz  r{  r|  r‚  r   r  r†  r   r  r‰  rë   rõ   r  r  r•  r   r   r   r   r  å  sf    

	


ý

"

	


r  c                   @   r  )ÚCommandLineTestsWithSourceEpochNr
  r   r   r   r   r™     r  r™  c                   @   r  )ÚCommandLineTestsNoSourceEpochNr
  r   r   r   r   rš  §  r  rš  c                   @   s’   e Zd Zdd„ Zejdd„ ƒZd#dd„Zdd	d
dœdd„Zdd„ Z	d$dd„Z
dd„ Zdd„ Zd$dd„Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"S )%ÚHardlinkDedupTestsBasec                 C   s
   d | _ d S r<   r‹   r?   r   r   r   r:   ²  s   
zHardlinkDedupTestsBase.setUpc                 c   sB    t  ¡ }|| _|V  d | _W d   ƒ d S 1 sw   Y  d S r<   )r(   r’  r+   )r8   r+   r   r   r   Útemporary_directoryµ  s   €
"ýz*HardlinkDedupTestsBase.temporary_directoryr   c                 C   s   t  | j||¡S r<   )r   rÃ   r+   )r8   Úcoder—  r   r   r   rÃ   ¼  rA   z"HardlinkDedupTestsBase.make_scriptTr   F)r‘  r—   rd   c                C   s   t j| jd|||d d S )NT)re   r—   Úhardlink_dupesrd   )r[   rn   r+   )r8   r‘  r—   rd   r   r   r   rn   ¿  s   
ÿz"HardlinkDedupTestsBase.compile_dirc              	   C   sÈ   |   ¡ V |  d¡ |  t¡ tj| jdddd W d   ƒ n1 s$w   Y  |  t¡ tj| jdddgdd W d   ƒ n1 sEw   Y  W d   ƒ d S W d   ƒ d S 1 s]w   Y  d S )NÚpassTr   )re   r—   rž  )rœ  rÃ   rì   r­   r[   rn   r+   r?   r   r   r   Útest_bad_argsÃ  s   

ÿÿÿýû"ûz$HardlinkDedupTestsBase.test_bad_argsc                 C   s4   g }|r	|  d¡ |  d¡ |r|  d¡ d |¡S )Nz'module docstring'zx = 1zassert x == 1Ú
)rÄ   r,   )r8   Ú	docstringÚ	assertionÚlinesr   r   r   Úcreate_codeÑ  s   



z"HardlinkDedupTestsBase.create_codec                 c   s4    dD ]}dD ]}| j ||d}|||fV  qqd S )N)FT©r¢  r£  )r¥  )r8   r¢  r£  r  r   r   r   Ú
iter_codesÚ  s   €þÿz!HardlinkDedupTestsBase.iter_codesc              
   C   sÔ   |   ¡ D ]c\}}}| j||dO |  ¡ ; |  |¡}t|ƒ}| jdd |  t|d |d ƒ¡ |  t|d |d ƒ¡ |  t|d |d ƒ¡ W d   ƒ n1 sSw   Y  W d   ƒ n1 sbw   Y  qd S )Nr¦  Fr  r   r   r   )r§  r“  rœ  rÃ   r   rn   rv   r!   )r8   r  r¢  r£  r   r”  r   r   r   Útest_disabledà  s   

ú€ÿ€ÿz$HardlinkDedupTestsBase.test_disabledc                 C   sf   t |ƒ}|  t|d |d ƒ| ¡ |  t|d |d ƒ| o!| ¡ |  t|d |d ƒ| ¡ d S )Nr   r   r   )r   rk   r!   )r8   r   r¢  r£  r”  r   r   r   Úcheck_hardlinksì  s   ÿ
ÿÿz&HardlinkDedupTestsBase.check_hardlinksc              
   C   sŽ   |   ¡ D ]@\}}}| j||d, |  ¡  |  |¡}|  ¡  |  |||¡ W d   ƒ n1 s0w   Y  W d   ƒ n1 s?w   Y  qd S )Nr¦  )r§  r“  rœ  rÃ   rn   r©  )r8   r  r¢  r£  r   r   r   r   r•  õ  s   

ý€ÿ€ÿz$HardlinkDedupTestsBase.test_hardlinkc              
   C   s¨   dD ]O}| j |d? |  ¡ + |  |  ¡ ¡}| j|d t||d ƒ}t||d ƒ}|  t||ƒ¡ W d   ƒ n1 s=w   Y  W d   ƒ n1 sLw   Y  qd S )N))r   r   )r   r   )r   r   )Úopts©r—   r   r   )r“  rœ  rÃ   r¥  rn   r   rZ   r!   )r8   rª  r   Úpyc1Úpyc2r   r   r   Útest_only_two_levelsþ  s   
ù€ÿ€ÿz+HardlinkDedupTestsBase.test_only_two_levelsc                 C   sp   |   ¡ * |  |  ¡ ¡}| jg d¢d t|dƒ}t|dƒ}|  t||ƒ¡ W d   ƒ d S 1 s1w   Y  d S )N)r   r   r   r   r«  r   r   )rœ  rÃ   r¥  rn   r   rZ   r!   )r8   r   r¬  r­  r   r   r   Útest_duplicated_levels  s   


"ùz-HardlinkDedupTestsBase.test_duplicated_levelsc                 C   sä   |   ¡ d |  d¡}|  ¡  |  |¡ t|ƒ}t |d ¡j}|  d¡}| jddgdd |  |t |d ¡j¡ |  	t
|d |d ƒ¡ |  |t |d ¡j¡ |  tj|d |d dd¡ W d   ƒ d S 1 skw   Y  d S )	Nrï   r   úprint(0)r   T)r—   rd   r   ©Úshallow)rœ  rÃ   rn   r©  r   r   r   r   rk   rZ   r!   rm   rv   ÚfilecmpÚcmp©r8   r   r”  Úinoder   r   r   Útest_recompilation  s   



 "ìz)HardlinkDedupTestsBase.test_recompilationc                 C   sô   |   ¡ l | j|  ¡ dd}|  ¡  |  |¡ t|ƒ}t |d ¡j}| jddd}t	j
dddd| jd	 |  |t |d ¡j¡ |  |t |d
 ¡j¡ |  t|d |d
 ƒ¡ |  tj|d |d
 dd¡ W d   ƒ d S 1 ssw   Y  d S )NÚmodule)r—  r   r°  r9  z-czimport moduleF)rd  r  r   r   Tr±  )rœ  rÃ   r¥  rn   r©  r   r   r   r   r   r"  r+   rk   rv   r!   r³  r´  rµ  r   r   r   Útest_import0  s   

ÿ "êz"HardlinkDedupTestsBase.test_importNr   )FF)r  r  r  r:   rV   r–  rœ  rÃ   rn   r   r¥  r§  r¨  r©  r•  r®  r¯  r·  r¹  r   r   r   r   r›  ¯  s     


	
		r›  c                   @   r  )Ú!HardlinkDedupTestsWithSourceEpochNr
  r   r   r   r   rº  L  r  rº  c                   @   r  )ÚHardlinkDedupTestsNoSourceEpochNr
  r   r   r   r   r»  S  r  r»  Ú__main__)0r[   rV   r³  Úimportlib.utilr   rX   r   rz   ri   r3   rK   râ   r(   Ztest.test_importlib.utilrŽ   r1  rh   r   r   Úconcurrent.futuresr   Úconcurrent.futures.processr   r  ÚNotImplementedErrorr   Ztest.supportr   r   Ztest.test_py_compiler	   r
   r   r   r!   r"   ZTestCaser	  r  r  r  r™  rš  r›  rº  r»  r  rˆ  r   r   r   r   Ú<module>   s˜    ÿ   ýý   >ýý ýý
ÿ