
    /hh               	       4   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKrS SKrS SKrS SKJrJr   S SKJr  S SKJr  S SKJr  \" 5         SrS SKJr  S S	KJr  S S
KJr  S SK J!r!  S SK J"r"  S SK#J$r$  S r%S r&S r' " S S5      r( " S S\(\RR                  \"SS9r* " S S\(\RR                  \"SS9r+\RX                  " \RZ                  S5       " S S\RR                  5      5       r. " S S5      r/ " S S\/\RR                  \"SS9r0 " S S \/\RR                  \"SS9r1\Rd                   " S! S"5      5       r3 " S# S$\3\RR                  \"SS9r4 " S% S&\3\RR                  \"SS9r5\6S':X  a  \Rn                  " 5         gg! \\4 a    Sr GN9f = f)(    N)mock
skipUnless)_cleanup_tests)ProcessPoolExecutor)_check_system_limitsTF)support)	os_helper)script_helper)without_source_date_epoch)SourceDateEpochTestMeta)FakePathc                 N    U(       d  Sn[         R                  R                  XS9$ )N optimization)	importlibutilcache_from_sourcescriptopts     =/opt/python-3.13.8/usr/lib/python3.13/test/test_compileall.pyget_pycr   $   s"    >>++F+EE    c                 D    S Vs/ s H  n[        X5      PM     sn$ s  snf )Nr         )r   r   s     r   get_pycsr   +   s    ,56ISGF I666s   c                     [         R                  " U 5      R                  n[         R                  " U5      R                  nX#:H  $ N)osstatst_ino)	filename1	filename2inode1inode2s       r   is_hardlinkr)   /   s3    WWY&&FWWY&&Fr   c                      \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS rS rS rS rS r\" \S5      \R6                  " S5      S 5       5       rS r\" \S5      \R6                  " S5      S 5       5       r\" \S5      \R6                  " S5      \R6                  " S5      S 5       5       5       r\" \S5      \R6                  " SSS9\R6                  " S5      S 5       5       5       r S  r!S!S".S# jr"S$ r#\" \S5      S% 5       r$S& r%\" \S5      S' 5       r&S( r'S) r(S* r)S+ r*S, r+S- r,\-R\                  S. 5       r/S/r0g)0CompileallTestsBase6   c                 *   [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  R                  U R                  S5      U l	        [        R                  R                  U R                  5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        [        R                  R                  U R                  S5      U l        [        R                  R                  U R                   5      U l        [        R$                  " U R                  U R                   5        [        R                  R                  U R                  S5      U l        [        R(                  " U R&                  5        [        R                  R                  U R&                  S5      U l        [        R$                  " U R                  U R*                  5        g ! , (       d  f       GNA= f)	N_test.pywutf-8encodingzx = 123
z	_test2.py_subdirz	_test3.py)tempfilemkdtemp	directory
addCleanupshutilrmtreer"   pathjoinsource_pathr   r   r   bc_pathopenwritesource_path2bc_path2copyfilesubdirectorymkdirsource_path3selffiles     r   setUpCompileallTestsBase.setUp8   sB   !))+t~~677<<
C ~~778H8HI$""C':dJJ{# ;GGLLE!889J9JK(($*;*;<GGLLC
""#GGLL):):KH(($*;*;< ;:s   7H
Hc                     [         R                  R                  U R                  S5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nz_test_bad.pyr/   r0   r1   zx (
)r"   r:   r;   r6   bad_source_pathr>   r?   rF   s     r   add_bad_source_file'CompileallTestsBase.add_bad_source_fileH   sI    !ww||DNNNK$&&g>$JJw ?>>s   A  
A.c                 Z   [        U R                  S5       nUR                  S5      nS S S 5        [        [        R
                  " U R                  5      R                  5      n[        R                  " S[        R                  R                  SUS-  5      nWU4$ ! , (       d  f       Ny= f)Nrb   <4sLLr       )r>   r=   readintr"   r#   r<   st_mtimestructpackr   r   MAGIC_NUMBER)rG   rH   datamtimecompares        r   timestamp_metadata&CompileallTestsBase.timestamp_metadataM   s|    $,,%99R=D &BGGD,,-667++gy~~'B'BA#k13W} &%s   B
B*c                 z    [         R                  " U R                  S5        [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! [        [        4 a    U R                  S5         Nf = f! , (       d  f       g = f)N)rS   rS   z0filesystem doesn't support timestamps near 2**32r"   utimer<   OverflowErrorOSErrorskipTest
contextlibredirect_stdoutioStringIO
assertTrue
compileallcompile_filerG   s    r    test_year_2038_mtime_compilation4CompileallTestsBase.test_year_2038_mtime_compilationU   s    	NHHT%%'=> ''6OOJ33D4D4DEF 76 w' 	NMMLM	N66   !B 0B,!B)(B),
B:c                 z    [         R                  " U R                  S5        [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! [        [        4 a    U R                  S5         Nf = f! , (       d  f       g = f)N)         rq   z+filesystem doesn't support large timestampsr`   rl   s    r   test_larger_than_32_bit_times1CompileallTestsBase.test_larger_than_32_bit_times_   s    	IHHT%%~6 ''6OOJ33D4D4DEF 76 w' 	IMMGH	I66ro   c                    [         R                  R                  S5      (       a  [        R                  " S5      e[
        R                  " U R                  5        U R                  " U R                  5       6   [        U R                  S5       nUR                  5       [        U5      S  nS S S 5        [        U R                  S5       nUR                  U5        UR                  W5        S S S 5        U R                  " U R                  5       6   [         R"                  " U R$                  SSS9  U R&                  " U R                  5       6   g ! , (       d  f       N= f! , (       d  f       Nz= f)NSOURCE_DATE_EPOCHzSOURCE_DATE_EPOCH is setrP   wbFTforcequiet)r"   environgetunittestSkipTest
py_compilecompiler<   assertEqualr]   r>   r=   rT   lenr?   assertNotEqualrj   compile_dirr6   ri   )rG   metadatarH   bcs       r   recreation_check$CompileallTestsBase.recreation_checki   s     ::>>-..##$>??4++,$1134$,,%S]^,B &$,,%JJx JJrN & 	T4467t~~U$G0023 &%%%s   E	#E 
E 
E.c                     U R                  [        R                  " S[        R                  R
                  SS5      5        g )NrR   r   r   )r   rW   rX   r   r   rY   rl   s    r   
test_mtimeCompileallTestsBase.test_mtimey   s.    fkk'9>>3N3N*+Q0 	1r   c                 &    U R                  S5        g )Ns       )r   rl   s    r   test_magic_number%CompileallTestsBase.test_magic_number~   s    k*r   c                    U R                   U R                  4 H  n [        R                  " U5        M     U R	                  [
        R                  " U R                  SSS95        U R	                  [        R                  R                  U R                   5      =(       a.    [        R                  R                  U R                  5      (       + 5        [        R                  " U R                   5        U R	                  [
        R                  " U R                  SSS95        U R	                  [        R                  R                  U R                   5      =(       a)    [        R                  R                  U R                  5      5        [        R                  " U R                   5        [        R                  " U R                  5        U R                  5         U R                  [
        R                  " U R                  SSS95        U R                  [
        R                  " U R                  SSS95        g !    GM&  = f)NFTrw   r   )r=   rA   r"   unlinkri   rj   rk   r<   r:   isfiler   r6   rM   assertFalserL   )rG   fns     r   test_compile_files&CompileallTestsBase.test_compile_files   s   <</B		" 0
 	
//0@0@6;4I 	Jt||4 :GGNN4==99	;
		$,,
..t~~U59; 	<t||4 6t}}5	7
		$,,
		$--   "001E1E7<AG 	H//6;1F 	G#s   H99H?c                    U R                  [        R                  R                  U R                  5      5        [
        R                  " 5        nU R                  [        R                  " [        U R                  5      5      5        S S S 5        U R                  WR                  5       S5        U R                  [        R                  R                  U R                  5      5        g ! , (       d  f       Ng= f)Nz&Compiling ([^WindowsPath|PosixPath].*))r   r"   r:   r   r=   r   captured_stdoutri   rj   rk   r   r<   assertRegexgetvalue)rG   stdouts     r   test_compile_file_pathlike.CompileallTestsBase.test_compile_file_pathlike   s    56$$&&OOJ33HT=M=M4NOP '*,UVt||45 '&s   9C((
C6c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g )N	ddir_pathr   )ddirry   
r   r"   r:   r   r=   ri   rj   rk   r   r<   rl   s    r   test_compile_file_pathlike_ddir3CompileallTestsBase.test_compile_file_pathlike_ddir   sq    56
//9I9I0J5=k5J679 	: 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g Nstripdir_pathr   )stripdirry   r   rl   s    r   #test_compile_file_pathlike_stripdir7CompileallTestsBase.test_compile_file_pathlike_stripdir   sq    56
//9I9I0J9A/9R679 	: 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g Nprependdir_pathr   )
prependdirry   r   rl   s    r   %test_compile_file_pathlike_prependdir9CompileallTestsBase.test_compile_file_pathlike_prependdir   sr    56
//9I9I0J;CDU;V679 	: 	t||45r   c           	         [         R                  R                  R                  U R                  /S9   U R                  [        R                  " SS95        S S S 5        [         R                  R                  R                  U R                  /S9   U R                  5         U R                  [        R                  " SSSS95        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)Nr:   r   ry   FT)skip_curdirrx   ry   )
testtest_importlibr   import_stater6   ri   rj   compile_pathrM   r   rl   s    r   test_compile_path%CompileallTestsBase.test_compile_path   s      %%228H2IOOJ33!<= J   %%228H2I$$&Z44;?qJ K JI JI JIs   $C6C!
C!
C/c                    [         R                  R                  U R                  S5      n[         R                  R                  US5      n[         R                  " U5        [        US5          S S S 5        [        R                  " U5        U R                  [         R                  R                  [         R                  R                  US5      5      5        g ! , (       d  f       Nq= f)NrZ   rH   rv   __pycache__)
r"   r:   r;   r6   rD   r>   rj   rk   r   exists)rG   data_dir	data_files      r   test_no_pycache_in_non_package2CompileallTestsBase.test_no_pycache_in_non_package   s     77<<7GGLL62	
)T" #	*X}(MNO #"s   -C
C(c                    U R                  5         [        R                  " [        R                  " 5       5         U R                  [        R                  " U R                  5      5        S S S 5        g ! , (       d  f       g = fr!   )	rM   re   rf   rg   rh   r   rj   rk   rL   rl   s    r   #test_compile_file_encoding_fallback7CompileallTestsBase.test_compile_file_encoding_fallback   sM      "''6Z44T5I5IJK 766s   0A33
Bc                 P   Su  p[         R                  " U R                  SUS9  [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        [        R                  R                  U R                  US9nU R                  [        R                  R                  U5      5        g )N)r   r   Try   optimizer   )rj   r   r6   r   r   r   r<   ri   r"   r:   r   r@   rE   )rG   r   r   cachedcached2cached3s         r   test_optimize!CompileallTestsBase.test_optimize   s     29t~~THM11$2B2B?B 2 Dv./..2243D3D@C 3 Ew/0..2243D3D@C 3 Ew/0r   c                    U R                  [        R                  R                  U R                  5      5        [
        R                  " 5        n[        R                  " [        U R                  5      5        S S S 5        WR                  5       R                  5       S   nU R                  US5        U R                  [        R                  R                  U R                  5      5        g ! , (       d  f       Nz= f)Nr   z$Listing ([^WindowsPath|PosixPath].*))r   r"   r:   r   r=   r   r   rj   r   r   r6   r   
splitlinesr   ri   )rG   r   lines      r   test_compile_dir_pathlike-CompileallTestsBase.test_compile_dir_pathlike   s    56$$&&""8DNN#;< ' ++-a0FGt||45	 '&s   *C,,
C:c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g r   
r   r"   r:   r   r=   ri   rj   r   r   r6   rl   s    r   "test_compile_dir_pathlike_stripdir6CompileallTestsBase.test_compile_dir_pathlike_stripdir   so    56
..x/G8@8Q568 	9 	t||45r   c                 f   U R                  [        R                  R                  U R                  5      5        U R                  [        R                  " [        U R                  5      [        S5      SS95        U R                  [        R                  R                  U R                  5      5        g r   r   rl   s    r   $test_compile_dir_pathlike_prependdir8CompileallTestsBase.test_compile_dir_pathlike_prependdir   sp    56
..x/G:BCT:U568 	9 	t||45r   requires multiprocessingz&concurrent.futures.ProcessPoolExecutorc                 z    [         R                  " U R                  SSS9  U R                  UR                  5        g NT   ry   workersrj   r   r6   ri   calledrG   	pool_mocks     r   test_compile_pool_called,CompileallTestsBase.test_compile_pool_called   s,     	t~~T1E	(()r   c                     U R                  [        S5         [        R                  " U R                  SS9  S S S 5        g ! , (       d  f       g = f)Nz%workers must be greater or equal to 0)r   )assertRaisesRegex
ValueErrorrj   r   r6   rl   s    r   !test_compile_workers_non_positive5CompileallTestsBase.test_compile_workers_non_positive   s=    ##J$KM""4>>2>M M Ms    A  
Ac                     [         R                  " U R                  SSS9  U R                  UR                  S   S   S 5        g )NTr   r   r   max_workers)rj   r   r6   r   	call_argsr   s     r   test_compile_workers_cpu_count2CompileallTestsBase.test_compile_workers_cpu_count  s:     	t~~T1E,,Q/>Er   zcompileall.compile_filec                     [         R                  " U R                  SS9  U R                  UR                  5        U R                  UR                  5        g )NTr   )rj   r   r6   r   r   ri   )rG   compile_file_mockr   s      r   test_compile_one_worker+CompileallTestsBase.test_compile_one_worker  s?     	t~~T:))*)001r   Nnewc                 z    [         R                  " U R                  SSS9  U R                  UR                  5        g r   r   )rG   r   s     r   $test_compile_missing_multiprocessing8CompileallTestsBase.test_compile_missing_multiprocessing  s-     	t~~T1E)001r   c                    SnU R                   n[        SUS-   5       H}  n[        R                  R	                  USU 35      n[        R                  R	                  US5      n[        R
                  " U5        [        R                  " U R                  U5        M     [        R                  R                  W5      n[        R                  " U R                   SUS-
  S9  U R                  [        R                  R                  U5      5        [        R                  " U R                   SUS9  U R!                  [        R                  R                  U5      5        g )N   r   dir_z	script.pyT)ry   	maxlevels)r6   ranger"   r:   r;   rD   r8   rB   r<   r   r   r   rj   r   r   r   ri   )rG   depthr:   isourcepyc_filenames         r   test_compile_dir_maxlevels.CompileallTestsBase.test_compile_dir_maxlevels  s    ~~q%!)$A77<<QCj1DWW\\$4FHHTNOOD,,f5	 %
 !~~77?t~~TUQYO56t~~TUK|45r   T)parallelc                   SS/nU R                   n/ nU Hw  n[        R                  R                  XF5      n[        R                  " U5        [
        R                  " USS5        UR                  [
        R                  " USS5      5        My     U(       a  U R                  [        5        [        R                  " U R                   SUU(       a  SOS	S
9  U R                  U5        U GH  nU R                  UR                  U R                   5      U5        [        R                  R!                  U5      nU[#        U R                   [        R$                  -   5      S  n	[
        R&                  " U5      u    p[        R                  R                  X5      n[(        R*                  R                  R-                  U5      nU R/                  UR0                  U5        U R3                  SU S3[        R4                  " U5      5        GM!     g )Nr   foo__init__r   modzdef fn(): 1/0
fn()
Tr   r   )ry   r   r   ")r6   r"   r:   r;   rD   r
   make_scriptappendr7   multiprocessing_cleanup_testsrj   r   ri   
startswithr   r   r   r   sepassert_python_failurer   r   get_code_from_pycr   co_filenameassertInfsdecode)rG   r   r  fullpathr:   modssubdirr  modcodemodpath_errexpected_inmod_code_objs                 r   _test_ddir_only#CompileallTestsBase._test_ddir_only+  s   E?~~F77<<-DHHTN%%dJ;KK11$2IK L	  OO9:d%1	. 	COOCNN4>>:C@nn66s;G#dnnRVV3456G%;;GDIAq'',,t5K..33EEgNL\55{CMMAk]!,bkk#.>? r   c                 "    U R                  SSS9$ )N
<a prefix>Fr   r  r  rl   s    r   test_ddir_only_one_worker-CompileallTestsBase.test_ddir_only_one_workerH  s    ###FFr   c                 "    U R                  SSS9$ )Nr  Tr  r  rl   s    r   test_ddir_multiple_workers.CompileallTestsBase.test_ddir_multiple_workersL  s     ###EEr   c                 "    U R                  SSS9$ )Nr   Fr  r  rl   s    r   test_ddir_empty_only_one_worker3CompileallTestsBase.test_ddir_empty_only_one_workerQ  s    ##e#<<r   c                 "    U R                  SSS9$ )Nr   Tr  r  rl   s    r    test_ddir_empty_multiple_workers4CompileallTestsBase.test_ddir_empty_multiple_workersU  s     ##d#;;r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 n[        R                  " USUS9  [
        R                  " U5      u  pgn[         R                  R                  " USS  6 n	U R                  U	[        U[        R                   " 5       S95        U R#                  U[        U[        R                   " 5       S95        g )Nr   buildrealr:   r   1 / 0r   Try   r   r1   r"   r:   r;   r6   makedirsr
   r  r   r   r   rj   r   r  r  strsysgetdefaultencodingassertNotIn)
rG   r  r:   r   r   r   rcoutr  r  s
             r   test_strip_only#CompileallTestsBase.test_strip_onlyZ  s    4ww||DNN6X6
D**4A^^--f577<<>"1>t4(C$::2>ggllHQRL1c4467	
 	c4467	
r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S S/-   Q76 n[        R                  " 5        n[        R                  " USUS9  S S S 5        U R                  SWR                  5       5        [
        R                   " U5      u  pvn[         R                  R                  " U R                  /USS  Q76 n	U R                  U[#        U[$        R&                  " 5       S	95        U R)                  U	[#        U[$        R&                  " 5       S	95        U R)                  U[#        U[$        R&                  " 5       S	95        g ! , (       d  f       N= f)
Nr,  r   r/  r   fakeTr0  znot a valid prefixr1   )r"   r:   r;   r6   r2  r
   r  r   r   r   r   r   rj   r   r  r   r  r3  r4  r5  r6  )
rG   r  r:   r   r   r   r8  r7  r  expected_not_ins
             r   test_strip_only_invalid+CompileallTestsBase.test_strip_only_invalidm  sd   4ww||DNN6X6
D**4A^^--f577<<K(2A,&2IK$$&#""4thG '*CLLN;$::2>'',,t~~EEc4467	
 	c4467	
 	c4467	
 '&s   G
G c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      nSn[        R                  " USUS9  [
        R                  " U5      u  pgn[         R                  R                  " XPR                  /UQ76 n	U R                  U	[        U[        R                   " 5       S95        g )Nr,  r   r/  /fooT)ry   r   r1   )r"   r:   r;   r6   r2  r
   r  r   r   r   rj   r   r  r  r3  r4  r5  )
rG   r  r:   r   r   r   r7  r8  r  r  s
             r   test_prepend_only%CompileallTestsBase.test_prepend_only  s    4ww||DNN6X6
D**4A^^--f5
t4JG$::2>ggll:~~IIc4467	
r   c                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 nSn[        R                  " USXVS9  [
        R                  " U5      u  pxn	[         R                  R                  " U/USS  Q76 n
U R                  U
[        U	[        R                   " 5       S95        U R#                  U[        U	[        R                   " 5       S95        g )	Nr,  r   r/  r   rA  T)ry   r   r   r1   r1  rG   r  r:   r   r   r   r   r7  r8  r  r  s              r   test_strip_and_prepend*CompileallTestsBase.test_strip_and_prepend  s   4ww||DNN6X6
D**4A^^--f577<<>"1>
t4(0	I$::2>ggll:==c4467	
 	c4467	
r   c           	      L   / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5        U R                  [        5         [        R                  " USSSSS9  S S S 5        g ! , (       d  f       g = f)N)r   r-  r.  r:   r   r   r/  Tz/barrA  )ry   r   r   r   )r"   r:   r;   r6   r2  r
   r  assertRaisesr   rj   r   )rG   r  r:   s      r   test_strip_prepend_and_ddir/CompileallTestsBase.test_strip_prepend_and_ddir  st    <ww||DNN6X6
D!!$8z*""4t&,2vG +**s   3B
B#c                    [         R                  " U R                  SS5      n/ nS H0  nUR                  [        R
                  R                  UUS95        M2     SS/SS/SS// SQ/nU Hk  n[        R                  " US	US
9  U HL  nU R                  [        R                  R                  X#   5      5         [        R                  " X#   5        MN     Mm     g ! [         a     Mb  f = f)Ntest_optimizationa = 0r   r   r   r   r   r   r   r   r   Tr   )r
   r  r6   r  r   r   r   rj   rk   ri   r"   r:   r   r   	Exception)rG   r   r   	opt_leveltest_combinationsopt_combinations         r   !test_multiple_optimization_levels5CompileallTestsBase.test_multiple_optimization_levels  s    **4>>+>+24 $IIIinn66vDM 7 O P %  VaVaVY?0O##F$-<>,	r} =>IIbm, -  1 ! s   :C
C)(C)c                 (   [         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  " U5        [         R                  " U5        [         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      n[         R                  R                  US	5      n[         R                  R                  US
5      n[         R                  " XF5        [         R                  " XW5        [        R                  R                  U5      n[        R                  R                  U5      n	[        R                  " USUS9  U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U	5      5        g )Nr   dirallowedsymlinks
prohibitedtest_allowedrN  test_prohibitedtest_allowed.pytest_prohibited.pyT)ry   limit_sl_dest)r"   r:   r;   r6   r2  r
   r  symlinkr   r   r   rj   r   ri   r   r   
rG   allowed_pathsymlinks_pathprohibited_pathallowed_scriptprohibited_scriptallowed_symlinkprohibited_symlink
allowed_bcprohibited_bcs
             r   test_ignore_symlink_destination3CompileallTestsBase.test_ignore_symlink_destination  s]    ww||DNNFE9MT^^VUJO'',,t~~vulS
L!
M"
O$ '22<QXY)55oGXZab'',,}6GHWW\\-9MN


>3


$9^^55oF
!889KL}DUz2367r   )rL   r=   rA   r6   r<   r@   rE   rC   )1__name__
__module____qualname____firstlineno__rI   rM   r]   rm   rr   r   r   r   r   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)  r9  r>  rB  rF  rJ  rT  r	   skip_unless_symlinkrk  __static_attributes__ r   r   r+   r+   6   s   =  
GG4 1
+G26666K
PL1666 %'AB	ZZ89* : C*?
 %'AB	ZZ89F : CF %'AB	ZZ89	ZZ)*2 + : C2
 %'AB	ZZ8dC	ZZ)*2 + D C26" 15 @:G %'ABF CF= %'AB< C<
&
2

*G& ""8 #8r   r+   c                       \ rS rSrSrg)CompileallTestsWithSourceEpochi  ru  Nrm  rn  ro  rp  rt  ru  r   r   rw  rw         	r   rw  )	metaclasssource_date_epochc                       \ rS rSrSrg)!CompileallTestsWithoutSourceEpochi  ru  Nrx  ru  r   r   r}  r}    ry  r   r}  z tempdir is not encodable on WASIc                   &    \ rS rSrS rS rS rSrg)EncodingTesti  c                    [         R                  " 5       U l        [        R                  R                  U R                  S5      U l        [        U R                  SSS9 nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nr.   r/   r0   r1   u   b"€")	r4   r5   r6   r"   r:   r;   r<   r>   r?   rF   s     r   rI   EncodingTest.setUp  s[    !))+77<<
C$""C':d JJ{# ;::s   A::
Bc                 D    [         R                  " U R                  5        g r!   )r8   r9   r6   rl   s    r   tearDownEncodingTest.tearDown  s    dnn%r   c                    [         R                  " [         R                  " 5       SS9n[        R                  " U5         [
        R                  " U R                  5      nS S S 5        U R                  W5        UR                  S5        UR                  5       nU R                  SU5        U R                  SU5        g ! , (       d  f       Ne= f)Nasciir1   r   z<SyntaxError: bytes can only contain ASCII literal charactersUnicodeEncodeError)rg   TextIOWrapperBytesIOre   rf   rj   r   r6   r   seekrT   r  r6  )rG   buffercompiledress       r   
test_errorEncodingTest.test_error   s    !!"**,A''/!--dnn=H 0"AkkmJ	
 	-s3 0/s   !B??
C)r6   r<   N)rm  rn  ro  rp  rI   r  r  rt  ru  r   r   r  r    s    
$&4r   r  c                   l   \ rS rSrS r\R                  S 5       rS rS r	S r
S rS rS	 r\\R                   " S
5      S 5       5       r\R                   " S
5      S 5       rSS/ 4SSS/4SSS/44 H  u  rrr\\4S jr\\" 5       S\-   '   M     S rS r\S 5       rS rS r\R<                  S 5       rS r S r!S r"S  r#S! r$\RJ                  S" 5       r&S# r'S$ r(S% r)S& r*S' r+S( r,S) r-\." \/S*5      S+ 5       r0\1Rd                  " S,5      S- 5       r3S. r4S/ r5\R<                  S0 5       r6S1 r7S2 r8S3r9g4)5CommandLineTestsBasei  c                 $   [         R                  " 5       U l        U R                  [        R
                  U R                  5        [        R                  R                  U R                  S5      U l	        [        R                  " U R                  5        [        R                  R                  U R                  S5      U l        [        R                  " U R                  SS5      U l        [        R                  " U R                  SS5      U l        g )Nr  r   r  r   bar)r4   r5   r6   r7   r	   r9   r"   r:   r;   pkgdirrD   pkgdir_cachedirr
   r  initfnbarfnrl   s    r   rI   CommandLineTestsBase.setUp  s    !))+	(($..9ggll4>>59
!ww||DKKG#//ZL"..t{{E2F
r   c              #      #    [         R                  n[        R                  R	                  U R
                  S5      n U[         l        U R
                  US.v   U[         l        g ! U[         l        f = f7f)N__testcache__)
PYTHONPATHPYTHONPYCACHEPREFIX)r4  pycache_prefixr"   r:   r;   r6   )rG   
old_prefix
new_prefixs      r   temporary_pycache_prefix-CommandLineTestsBase.temporary_pycache_prefix  s]      ''
WW\\$../B
	,!+C"nn'1 
 ",CCs   ;A6A& A6&A33A6c                 @    / [         R                  " 5       QSPSPSPUQ$ )Nz-S-mrj   )r   !optim_args_from_interpreter_flags)rG   argss     r   _get_run_args"CommandLineTestsBase._get_run_args)  s<    ::< ( 	r   c                     [         R                  " U R                  U5      0 UDSS0D6u  p4nU R                  SU5        U$ )NPYTHONIOENCODINGr0   r   )r
   assert_python_okr  r   rG   r  env_varsr7  r8  r  s         r   assertRunOK CommandLineTestsBase.assertRunOK.  sK    $55,,T236>3*13 	c"
r   c                 b    [         R                  " U R                  U5      0 UDSS0D6u  p4nX4U4$ )Nr  r0   )r
   r  r  r  s         r   assertRunNotOK#CommandLineTestsBase.assertRunNotOK5  s@    $::++D125=2)02 |r   c                     [         R                  R                  U5      nU R                  [        R
                  R                  U5      5        g r!   )r   r   r   ri   r"   r:   r   rG   r   r:   s      r   assertCompiled#CommandLineTestsBase.assertCompiled;  s/    ~~//3t,-r   c                     [         R                  R                  U5      nU R                  [        R
                  R                  U5      5        g r!   )r   r   r   r   r"   r:   r   r  s      r   assertNotCompiled&CommandLineTestsBase.assertNotCompiled?  s1    ~~//3-.r   c                 N   [         R                  " U R                  SS5      nU R                  5        nU R                  " S0 UD6  U R                  U5        U R                  U R                  5        U R                  U R                  5        S S S 5        g ! , (       d  f       g = f)Nbazr   ru  )	r
   r  r6   r  r  r  r  r  r  )rG   bazfnenvs      r   test_no_args_compiles_path/CommandLineTestsBase.test_no_args_compiles_pathC  sw    ))$..%D**,#s#&""4;;/""4::.	 -,,s   AB
B$cpuc                    [         R                  " U R                  SS5      nU R                  5        nU R                  " S0 UD6  [
        R                  R                  U5      nS S S 5        [        R                  " W[        R                  " 5       S-
  4S-  5        [        R                  " U5      R                  nU R                  " S0 WD6  [        R                  " U5      R                  nU R                  XE5        U R                  " S0 UD6  [        R                  " U5      R                  nU R                  XE5        g ! , (       d  f       N= f)Nr  r   <   r   ru  )-f)r
   r  r6   r  r  r   r   r   r"   ra   timer#   rV   r   r   )rG   r  r  pycpathr[   mtime2s         r    test_no_args_respects_force_flag5CommandLineTestsBase.test_no_args_respects_force_flagL  s     ))$..%D**,#s#nn66u=G - 	499;r>+A-. ))3!**'%%!**E* -,s   2E
Ec                 ,   [         R                  " U R                  SS5        U R                  5        nU R                  " S0 UD6nS S S 5        U R                  SW5        U R                  " S0 WD6nU R                  SU5        g ! , (       d  f       NE= f)Nr  r   s   Listing ru  )-q)r
   r  r6   r  r  r  r6  )rG   r  noisyry   s       r    test_no_args_respects_quiet_flag5CommandLineTestsBase.test_no_args_respects_quiet_flag_  sx    !!$..%<**,$$+s+E -k5)  --e,	 -,s   B
Bnormalpycr   z	opt-1.pyc-Odoubleoptimizez	opt-2.pycz-OOc                   ^ [         R                  " USSSU R                  /-   6   U R                  [        R
                  R                  U R                  5      5        [        U4S jS 5       5      nU R                  [        [        R                  " U R                  5      5      U5        U R                  [        R                  " U R                  5       Vs/ s H  nUR                  T5      (       d  M  UPM     sn5        g s  snf )Nr  rj   r  c              3   x   >#    U  H/  nUR                  [        R                  R                  T5      v   M1     g 7fr!   )formatr4  implementation	cache_tag).0baseexts     r   	<genexpr>)CommandLineTestsBase.f.<locals>.<genexpr>t  s3      K*I$ #kk#*<*<*F*FLL*Is   7:)z__init__.{}.{}z	bar.{}.{})r
   r  r  ri   r"   r:   r   r  sortedr   listdirr   endswith)rG   r  switchexpectedr   s    `   r   fCommandLineTestsBase.fo  s    **V|T4;;7.8 : OOBGGNN4+?+?@A K*IK KHVBJJt/C/C$DExP2::dkk+B 3+BR!#S!1 !+B 3 4 3s   D7Dtest_pep3147_paths_c                 :   U R                  SSU R                  5        U R                  [        R                  R                  U R                  5      5        [        / SQ5      nU R                  [        [        R                  " U R                  5      5      U5        g )Nz-br  )__init__.pyz__init__.pyczbar.pyzbar.pyc)
r  r  r   r"   r:   r   r  r  r   r  )rG   r  s     r   test_legacy_paths&CommandLineTestsBase.test_legacy_paths|  sl     	tT[[1(<(<=> & '

4;; 78(Cr   c                 `   U R                  SU R                  5        U R                  [        R                  R                  U R                  5      5        [        R                  R                  U R                  S5      nU R                  [        R                  R                  U5      5        U R                  SU R                  5        U R                  [        R                  R                  U R                  5      5        U R                  [        R                  R                  U5      5        g )Nr  r   )	r  r  ri   r"   r:   r   r  r;   r   )rG   cachecachedirs     r   test_multiple_runs'CommandLineTestsBase.test_multiple_runs  s     	t{{+t';';<=T%9%9=I67t{{+t';';<=67r   c                 f   U R                  SU R                  5        [        R                  R	                  U R
                  5      n[        R                  " U[        R                  " 5       S-
  4S-  5        [        R                  " U5      R                  nU R                  SU R                  5        [        R                  " U5      R                  nU R                  X#5        U R                  SSU R                  5        [        R                  " U5      R                  nU R                  X#5        g )Nr  r  r   r  )r  r  r   r   r   r  r"   ra   r  r#   rV   r   r   )rG   r  r[   r  s       r   
test_forceCommandLineTestsBase.test_force  s    t{{+..224::>
499;r>+A-. ))t{{+!**'tT[[1!**E*r   c                 T   [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      nU R                  SSU R                  5        U R                  U5        U R                  [         R                  R                  [         R                  R                  US5      5      5        U R                  SU R                  5        U R                  U5        U R                  U5        g )Nspamr  r   hamr  z-lr   )r"   r:   r;   r  rD   r
   r  r  r  r   r   r  )rG   
subpackage	subinitfnhamfns       r   test_recursion_control+CommandLineTestsBase.test_recursion_control  s    WW\\$++v6

!--j*bI	))*eR@tT[[1y)Z(OPQt{{+I&E"r   c                    [         R                  R                  U R                  S5      n[         R                  R                  US5      n[         R                  R                  US5      nXU4 H  n[        R
                  " U5        M     [         R                  R                  US5      n[        R                  " USS5      n[        R                  " USS5      n[        R                  " USS5      nU R                  SSU R                  5        U R                  U5        U R                  [         R                  R                  [         R                  R                  US	5      5      5        U R                  SS
U R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  SSU R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        U R                  SSU R                  5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g )Nr  r  eggsr  r   eggr  z-r 0r   z-r 1z-r 2z-r 5)r"   r:   r;   r  r
   make_pkgr  r  r  r   r   r  )	rG   r  subpackage2subpackage3pkgr  r  spamfneggfns	            r   test_recursion_limit)CommandLineTestsBase.test_recursion_limit  s   WW\\$++v6
ggll:u5ggll;7[9C""3' : GGLL];	))*eR@**;C))+ubAvt{{3y)GGNN277<<
MBC	E 	vt{{3I&E"v&vt{{3I&E"F#u%vt{{3I&E"F#E"r   c           	         [         R                  R                  U R                  S5      n[        R
                  " U5        [         R                  " S[         R                  R                  US5      5        [         R                  " S[         R                  R                  US5      5        U R                  SU R                  5        U R                  [         R                  R                  U R                  SSSS5      5        g )Nr  .evilevil2r  r  )	r"   r:   r;   r  r
   r  r`  r  r  )rG   r  s     r   test_symlink_loop&CommandLineTestsBase.test_symlink_loop  s    
 ggll4;;/s#


3S&12


3S'23t{{+BGGLLKK-
 	r   c                     U R                  U R                  5      nU R                  SU R                  5      nU R                  SU5        U R                  SU5        g )Nr  r   )r  r  r   r   )rG   r  ry   s      r   
test_quietCommandLineTestsBase.test_quiet  sL      -  t{{3C'e$r   c                    [         R                  " U R                  SS5        U R                  SU R                  5      u  pnU R                  SU R                  5      u  pnU R	                  SU5        U R                  SU5        g )Ncrunchyfrog
bad(syntaxr  z-qqr   )r
   r  r  r  r   r   )rG   r  ry   silents       r   test_silent CommandLineTestsBase.test_silent  sl    !!$++}lK))$<!**5$++>1C'f%r   c                     U R                  SSSU R                  5        U R                  U R                  5        U R	                  U R
                  5        g )Nr  z-xz
ba[^\\/]*$)r  r  r  r  r  r  rl   s    r   test_regexp CommandLineTestsBase.test_regexp  s>    t]DKK@tzz*DKK(r   c                    [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      nU R                  SU R                  U5        U R                  U R                  5        U R                  U R                  5        U R                  U5        U R                  U5        g )Nfoo2r  r   bar2r  )r"   r:   r;   r6   rD   r
   r  r  r  r  r  r  )rG   pkgdir2init2fnbar2fns       r   test_multiple_dirs'CommandLineTestsBase.test_multiple_dirs  s    '',,t~~v6
++GZD**7FB?t{{G4DKK(DJJ'G$F#r   c                     [         R                  " U R                  SS5        U R                  SSSU R                  5      u  pnU R	                  US5        g )Nr  r  r  -ddinsdale   File "dinsdale)r
   r  r  r  r   rG   r7  r8  r  s       r   test_d_compile_error)CommandLineTestsBase.test_d_compile_error  sG    !!$++}lK**4z4;;O/0r   c                    [         R                  " U R                  SS5      nU R                  SSSU R                  5        [         R                  " U R                  SS5      n[        R
                  R                  U5      n[        R                  " U[        R                  R                  U R                  S5      5        [        R                  " U5        [         R                  " US	S
9u  pEnU R                  US5        g )Nr  zraise Exceptionr  r  r  bingz
import bazzbaz.pycF)
__isolatedr  )r
   r  r  r  r   r   r   r"   renamer:   r;   remover  r   )rG   r  r   r  r7  r8  r  s          r   test_d_runtime_error)CommandLineTestsBase.test_d_runtime_error  s    ))$++u>OPtZ=&&t{{FLInn..u5
		#rww||DKK;<
		%$::2%P/0r   c                    U R                  S[        R                  R                  U R                  S5      U R
                  5      u  pnU R                  US5        U R                  US5        U R                  [        R                  R                  [        R                  R                  U R                  5      5      5        g )N-i
nosuchfiles   rror.*nosuchfiles	   Traceback)r  r"   r:   r;   r6   r  r   assertNotRegexr   r   r   r   r   r  r  s       r   test_include_bad_file*CommandLineTestsBase.test_include_bad_file  s    **"'',,t~~|<dkkK12C.	(H(H,0,@,@)B C 	Dr   c                    [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[        [        R
                  R                  U R                  S5      SSS	9 nUR                  [        R
                  R                  U R                  S
5      [        R                  -   5        UR                  [        R
                  R                  U R                  S5      [        R                  -   5        S S S 5        U R                  S[        R
                  R                  U R                  S5      U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g ! , (       d  f       N= f)Nf1r   f2f3f4l1r/   r0   r1   f1.pyf2.pyr*  )r
   r  r  r>   r"   r:   r;   r6   r?   linesepr  r  r  rG   r0  r1  r2  r3  r4  s         r   test_include_file_with_arg/CommandLineTestsBase.test_include_file_with_arg  sC   &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"="'',,t~~t4cGLPRHHRWW\\$++w7

BCHHRWW\\$++w7

BC M 	rww||DNNDA2FBBr"B MLs   <BG
G'c                 >   [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[        [        R
                  R                  U R                  S5      SSS	9 nUR                  [        R
                  R                  U R                  S
5      [        R                  -   5        S S S 5        U R                  S[        R
                  R                  U R                  S5      5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g ! , (       d  f       N= f)Nr0  r   r1  r2  r3  r4  r/   r0   r1   r6  r*  )r
   r  r  r>   r"   r:   r;   r6   r?   r7  r  r  r  r8  s         r   test_include_file_no_arg-CommandLineTestsBase.test_include_file_no_arg"  s   &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"="'',,t~~t4cGLPRHHRWW\\$++w7

BC Mrww||DNNDABr"Br"r" MLs   <AF
Fc                    [         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R                  SS5      n[         R                  " U R	                  S5      SS/-   6 nUR
                  R                  U[        R                  -   R                  S	5      5        [         R                  " U5        U R                  U5        U R                  U5        U R                  U5        U R                  U5        g )
Nr0  r   r1  r2  r3  ru  r*  -r  )r
   r  r  spawn_pythonr  stdinr?   r"   r7  encodekill_pythonr  r  )rG   r0  r1  r2  r3  ps         r   test_include_on_stdin*CommandLineTestsBase.test_include_on_stdin/  s    &&t{{D"=&&t{{D"=&&t{{D"=&&t{{D"=&&););B)?4+)MO	r"**},,W56!!!$r"r"Br"r   c                 N   [         R                  " U R                  SS5      nU R                  SU R                  XR
                  5      u  p#nU R                  US5        U R                  U5        U R                  U R                  5        U R                  U R
                  5        g )Nr#  zsyntax(errorr+  s   rror)	r
   r  r  r  r  r  r   r  r  )rG   bingfnr7  r8  r  s        r   !test_compiles_as_much_as_possible6CommandLineTestsBase.test_compiles_as_much_as_possible<  s    **4;;O**<+1::?g&v&DKK(DJJ'r   c                 J    U R                  S5      nU R                  US5        g )Nbadfilenames   Can't list 'badfilename')r  r   )rG   r8  s     r   !test_invalid_arg_produces_message6CommandLineTestsBase.test_invalid_arg_produces_messageE  s#    }-9:r   c                    [         R                  " U R                  SS5        [        R                  R                  [        R                  R                  U R                  S5      5      nU R                  SU R                  5        [        US5       nUR                  5       nS S S 5        U R                  [        R                  WSS S5      S	5        U R                  S
U R                  5        [        US5       nUR                  5       nS S S 5        U R                  [        R                  USS S5      S5        g ! , (       d  f       N= f! , (       d  f       NI= f)Nr0  r   r5  z --invalidation-mode=checked-hashrP         littler   z"--invalidation-mode=unchecked-hashr   )r
   r  r  r   r   r   r"   r:   r;   r  r>   rT   r   rU   
from_bytes)rG   r  fprZ   s       r   test_pyc_invalidation_mode/CommandLineTestsBase.test_pyc_invalidation_modeI  s    !!$++tR8nn..GGLLg.0;T[[I#t_779D Qq	8<dC=t{{K#t_779D Qq	8<dC _ _s   D?<E?
E
Er   c                    [         R                  " U R                  SS5      n/ n[        S5       H  n[        R
                  R                  U R                  SR                  U5      5      n[        R                  " U5        [         R                  " USS5      nUR                  [         R                  " USS5      5        M     U R                  U R                  SS5        U R                  U5        U H  nU R                  U5        M     g )Nr  r   r   zfoo{}r  z-j0)r
   r  r6   r   r"   r:   r;   r  rD   r  r  r  )rG   r  filessuffixr  r   rH   s          r   test_workers!CommandLineTestsBase.test_workersV  s    **4>>62FAhFWW\\$..'..2HIFHHV**6:rBBLL22662FG	  	s3F#D% r   zcompileall.compile_dirc                 <   [         R                  " S[        R                  U R                  S/S9   [
        R                  " 5         U R                  UR                  5        U R                  UR                  S   S   S5        S S S 5        g ! , (       d  f       g = f)Nzsys.argvz-j0r   r   r   r   )r   rr  r4  
executabler6   rj   mainri   r   r   r   )rG   r   s     r   test_workers_available_cores1CommandLineTestsBase.test_workers_available_corese  sr    ZZ
 ^^T^^UCEOOOOK../[2226yA1E	E E Es   AB
Bc                    / SQn[         R                  R                  " U R                  /UQ76 n[         R                  " U5        [
        R                  " USS5      n[        R                  R                  U5      n[         R                  R                  " U R                  /US S Q76 nSnU R                  SUSXb5        [
        R                  " U5      u  pxn	[         R                  R                  " U/USS  Q76 n
U R                  U
[        U	[        R                  " 5       S95        U R!                  U[        U	[        R                  " 5       S95        g )	Nr,  r   r/  r   rA  z-sz-pr1   )r"   r:   r;   r6   r2  r
   r  r   r   r   r  r  r  r3  r4  r5  r6  rE  s              r   rF  +CommandLineTestsBase.test_strip_and_prependm  s	   4ww||DNN6X6
D**4A^^--f577<<>"1>
xz@$::2>ggll:==c4467	
 	c4467	
r   c           
      `   [         R                  R                  U R                  S5      n[         R                  " U5        [
        R                  " USS5      n/ nS H0  nUR                  [        R                  R                  UUS95        M2     SS/SS/SS// S	Q/nU Hy  nU R                  " U/S
 U 5       Q76   U HV  nU R                  [         R                  R                  U[        U5         5      5         [         R                  " X4   5        MX     M{     g ! [          a     Ml  f = f)NoptimizationsrM  rN  rO  r   rX  12)rX  rf  rg  c              3   >   #    U  H  nS [        U5      -   v   M     g7f)z-oN)r3  )r  ns     r   r  ICommandLineTestsBase.test_multiple_optimization_levels.<locals>.<genexpr>  s     $LOqTCF]Os   )r"   r:   r;   r6   r2  r
   r  r  r   r   r   r  ri   r   rU   r   rP  )rG   r:   r   r   rQ  rR  rS  s          r   rT  6CommandLineTestsBase.test_multiple_optimization_levels  s   ww||DNNO<
D**4+>+24 $IIIinn66vDM 7 O P % "3Z!3Z!3Z,.  1OTM$LO$LM,	r#i./A BCIIbm, -  1 ! s   >D
D-,D-c                 "   [         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  R                  U R                  SSS5      n[         R                  " U5        [         R                  " U5        [         R                  " U5        [
        R                  " USS5      n[
        R                  " USS5      n[         R                  R                  US	5      n[         R                  R                  US
5      n[         R                  " XF5        [         R                  " XW5        [        R                  R                  U5      n[        R                  R                  U5      n	U R                  USU5        U R                  [         R                  R                  U5      5        U R                  [         R                  R                  U	5      5        g )Nr   rW  rX  rY  rZ  r[  rN  r\  r]  r^  z-e)r"   r:   r;   r6   r2  r
   r  r`  r   r   r   r  ri   r   r   ra  s
             r   rk  4CommandLineTestsBase.test_ignore_symlink_destination  s]    ww||DNNFE9MT^^VUJO'',,t~~vulS
L!
M"
O$ '22<QXY)55oGXZab'',,}6GHWW\\-9MN


>3


$9^^55oF
!889KLl;z2367r   c                 >    U R                  U R                  SS5        g )N-o 1--hardlink-dupes)r  r6   rl   s    r   test_hardlink_bad_args+CommandLineTestsBase.test_hardlink_bad_args  s     	DNNF4FGr   c           
      :   S H  n[         R                  " 5        nU R                  US9   [        R                  " USS5      n[        U5      n/ SQnU(       a  UR                  S5        U R                  " U/UQ76   U R                  [        US   US   5      U5        U R                  [        US   US	   5      U5        U R                  [        US   US	   5      U5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       GM  = f)
N)TFdedupr   rN  )r  z-o 0ro  z-o 2rp  r   r   r   )
r4   TemporaryDirectorysubTestr
   r  r   r  r  r   r)   )rG   ru  r:   r   pycsr  s         r   test_hardlink"CommandLineTestsBase.test_hardlink  s     #E,,.$\\\.*66tXwOF#F+D9D$67$$T1D1$$[a$q'%BEJ$$[a$q'%BEJ$$[a$q'%BEJ / /. #.. /.s#   D
B9C9$D
9
DD


D	)r  r6   r  r  r  N):rm  rn  ro  rp  rI   re   contextmanagerr  r  r  r  r  r  r  r   r   requires_resourcer  r  namer  r  r  localsr  r  r  r  r  r	   rs  r  r  r  r  r  r   force_not_colorizedr'  r-  r9  r<  rE  rI  rM  rU  r   rq  r[  r   rr  r`  rF  rT  rk  rq  ry  rt  ru  r   r   r  r    s   G , ,
.// u%+ & +" u%- &- 
5"	[4&)	;0c6
 F 
	4 23&-.!$D8 + +
# #D "" #%&)
	$1
   1 !1D ##(;D %'AB& C& 
ZZ()F *F
(. ""8 #80H
Kr   r  c                       \ rS rSrSrg)CommandLineTestsWithSourceEpochi  ru  Nrx  ru  r   r   r  r    ry  r   r  c                       \ rS rSrSrg)CommandLineTestsNoSourceEpochi  ru  Nrx  ru  r   r   r  r    ry  r   r  c                       \ rS rSrS r\R                  S 5       rSS jrSSSS.S	 jr	S
 r
SS jrS rS rSS jrS rS rS rS rS rSrg)HardlinkDedupTestsBasei  c                     S U l         g r!   r   rl   s    r   rI   HardlinkDedupTestsBase.setUp  s	    	r   c              #      #    [         R                  " 5        nXl        Uv   S U l        S S S 5        g ! , (       d  f       g = f7fr!   )r4   rv  r:   )rG   r:   s     r   temporary_directory*HardlinkDedupTestsBase.temporary_directory  s/     ((*dIJDI +**s   A3	A
AAc                 D    [         R                  " U R                  X!5      $ r!   )r
   r  r:   )rG   coder}  s      r   r  "HardlinkDedupTestsBase.make_script  s    ((D??r   Tr   F)ru  r   rx   c                F    [         R                  " U R                  SUXS9  g )NT)ry   r   hardlink_dupesrx   )rj   r   r:   )rG   ru  r   rx   s       r   r   "HardlinkDedupTestsBase.compile_dir  s    tyyx.3	Br   c           	         U R                  5          U R                  S5        U R                  [        5         [        R
                  " U R                  SSSS9  S S S 5        U R                  [        5         [        R
                  " U R                  SSS/SS9  S S S 5        S S S 5        g ! , (       d  f       NX= f! , (       d  f       N(= f! , (       d  f       g = f)NpassTr   )ry   r   r  )r  r  rI  r   rj   r   r:   rl   s    r   test_bad_args$HardlinkDedupTestsBase.test_bad_args  s     %%'V$"":.&&tyyq6:< / "":. &&tyy1v6:< / ('.. /. ('s:   'C"B,C7$B=C,
B:	6C=
C	C
Cc                     / nU(       a  UR                  S5        UR                  S5        U(       a  UR                  S5        SR                  U5      $ )Nz'module docstring'zx = 1zassert x == 1
)r  r;   )rG   	docstring	assertionliness       r   create_code"HardlinkDedupTestsBase.create_code  sA    LL-.WLL)yyr   c              #   Z   #    S H!  nS H  nU R                  XS9nX1U4v   M     M#     g 7f)N)FTr  r  )r  )rG   r  r  r  s       r   
iter_codes!HardlinkDedupTestsBase.iter_codes  s7     &I*	'')'Q	22 + 's   )+c           
         U R                  5        H  u  pnU R                  X#S9   U R                  5          U R                  U5      n[	        U5      nU R                  SS9  U R                  [        US   US   5      5        U R                  [        US   US   5      5        U R                  [        US   US   5      5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  Frt  r   r   r   )r  rw  r  r  r   r   r   r)   )rG   r  r  r  r   rx  s         r   test_disabled$HardlinkDedupTestsBase.test_disabled  s    *.//*;&DY	G--/!--d3F#F+D$$5$1$$[a$q'%BC$$[a$q'%BC$$[a$q'%BC 0 HG +<// HGs#   C,BCC,
C)%C,,
C;	c                     [        U5      nU R                  [        US   US   5      U(       + 5        U R                  [        US   US   5      U(       + =(       a    U(       + 5        U R                  [        US   US   5      U(       + 5        g )Nr   r   r   )r   r   r)   )rG   r   r  r  rx  s        r   check_hardlinks&HardlinkDedupTestsBase.check_hardlinks  s    T!Wd1g6&	(T!Wd1g6&8y=	:T!Wd1g6&	(r   c                 F   U R                  5        Hj  u  pnU R                  X#S9   U R                  5          U R                  U5      nU R	                  5         U R                  XBU5        S S S 5        S S S 5        Ml     g ! , (       d  f       N= f! , (       d  f       M  = f)Nr  )r  rw  r  r  r   r  )rG   r  r  r  r   s        r   ry  $HardlinkDedupTestsBase.test_hardlink"  s}    *.//*;&DY	G--/!--d3F$$&((IF 0 HG +<// HGs"   B4B +B 
B
B
B 	c           	         S H  nU R                  US9   U R                  5          U R                  U R                  5       5      nU R	                  US9  [        X!S   5      n[        X!S   5      nU R                  [        X45      5        S S S 5        S S S 5        M     g ! , (       d  f       N= f! , (       d  f       M  = f)N))r   r   )r   r   )r   r   )optsr   r   r   )rw  r  r  r  r   r   ri   r)   )rG   r  r   pyc1pyc2s        r   test_only_two_levels+HardlinkDedupTestsBase.test_only_two_levels+  s    ,D4(--/ "--d.>.>.@AF$$d$3"673D"673DOOK$;< 0 )( -// )(s#   B1A%B B1 
B.*B11
C 	c                    U R                  5          U R                  U R                  5       5      nU R                  / SQS9  [	        US5      n[	        US5      nU R                  [        X#5      5        S S S 5        g ! , (       d  f       g = f)N)r   r   r   r   r  r   r   )r  r  r  r   r   ri   r)   )rG   r   r  r  s       r   test_duplicated_levels-HardlinkDedupTestsBase.test_duplicated_levels8  sq     %%' %%d&6&6&89Fl361%D61%DOOK34 (''s   A#A==
Bc           	         U R                  5          U R                  S5      nU R                  5         U R                  U5        [	        U5      n[
        R                  " US   5      R                  nU R                  S5      nU R                  SS/SS9  U R                  U[
        R                  " US   5      R                  5        U R                  [        US   US   5      5        U R                  U[
        R                  " US   5      R                  5        U R                  [        R                  " US   US   SS95        S S S 5        g ! , (       d  f       g = f)	NrN  r   print(0)r   T)r   rx   r   shallow)r  r  r   r  r   r"   r#   r$   r   ri   r)   r   r   filecmpcmprG   r   rx  inodes       r   test_recompilation)HardlinkDedupTestsBase.test_recompilationD  s    %%'%%g.F  (F#DGGDG$++E %%j1F q!fD9 UBGGDG$4$;$;<OOKQa9:rwwtAw'7'>'>?W[[a$q'4HI) (''s   D6E
Ec           	         U R                  5          U R                  U R                  5       SS9nU R                  5         U R	                  U5        [        U5      n[        R                  " US   5      R                  nU R                  SSS9n[        R                  " SSSSU R                  S	9  U R                  U[        R                  " US   5      R                  5        U R                  U[        R                  " US
   5      R                  5        U R                  [        US   US
   5      5        U R                  [        R                   " US   US
   SS95        S S S 5        g ! , (       d  f       g = f)Nmodule)r}  r   r  r  z-czimport moduleF)r$  r  r   r   Tr  )r  r  r  r   r  r   r"   r#   r$   r
   r  r:   r   r   r)   r  r  r  s       r   test_import"HardlinkDedupTestsBase.test_import]  s4    %%'%%d&6&6&8x%HF  (F#DGGDG$++E %%jx%@F **dO$))
 UBGGDG$4$;$;<UBGGDG$4$;$;<[a$q':;W[[a$q'4HI- (''s   EE,,
E:r   N)r   )FF)rm  rn  ro  rp  rI   re   r{  r  r  r   r  r  r  r  r  ry  r  r  r  r  rt  ru  r   r   r  r    sl      @ $()5 B< 3
D(G=
5J2Jr   r  c                       \ rS rSrSrg)!HardlinkDedupTestsWithSourceEpochiy  ru  Nrx  ru  r   r   r  r  y  ry  r   r  c                       \ rS rSrSrg)HardlinkDedupTestsNoSourceEpochi  ru  Nrx  ru  r   r   r  r    ry  r   r  __main__)8rj   re   r  importlib.utilr   rg   r"   r~   r8   rW   r4  r4   test.test_importlib.utilr   r  r|   r   r   multiprocessing.utilr   r	  concurrent.futuresr   concurrent.futures.processr   rq  NotImplementedErrorModuleNotFoundErrorr   test.supportr	   r
   test.test_py_compiler   r   test.support.os_helperr   r   r   r)   r+   TestCaserw  r}  skipIfis_wasir  r  r  r  skip_unless_hardlinkr  r  r  rm  r_  ru  r   r   <module>r     s       	 	    
     %	" U6?   " & : 8 +F7g8 g8T	%8%-%6%6/F7;		(;(0(9(92I:?	 
"DE48$$ 4 F4:{K {K|	&:'/'8'81H9=		$8%-%6%6/F7<	 ZJ ZJ  ZJz	(>(0(9(92I:>		&<&.&7&70G8=	 zMMO ]# 	01 "!"s   F	 	
FF