
    0hh/              	       x   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  S SKJrJr  S rS r " S S\" \
R&                  5      5      r " S S	5      r " S
 S\\
R&                  \SS9r " S S\\
R&                  \SS9r " S S\
R&                  5      r\S:X  a  \
R4                  " 5         gg)    N)support)	os_helperscript_helperc                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z+Runs function with SOURCE_DATE_EPOCH unset.c                     > [         R                  " 5        nUR                  S5        T" U 0 UD6sS S S 5        $ ! , (       d  f       g = f)NSOURCE_DATE_EPOCH)r   EnvironmentVarGuardunsetargskwargsenvfxns      =/opt/python-3.13.8/usr/lib/python3.13/test/test_py_compile.pywrapper*without_source_date_epoch.<locals>.wrapper   s7    **,II)*'' -,,s	   :
A	functoolswrapsr   r   s   ` r   without_source_date_epochr      %    __S( ( N    c                 F   ^  [         R                  " T 5      U 4S j5       nU$ )z)Runs function with SOURCE_DATE_EPOCH set.c                  ~   > [         R                  " 5        nSUS'   T" U 0 UD6sS S S 5        $ ! , (       d  f       g = f)N	123456789r   )r   r	   r   s      r   r   'with_source_date_epoch.<locals>.wrapper   s5    **,'2C#$'' -,,s   .
<r   r   s   ` r   with_source_date_epochr      r   r   c                   (   ^  \ rS rSrU 4S jrSrU =r$ )SourceDateEpochTestMeta%   c                   > [         T	U ]  XX#5      n[        U5       HP  nUR                  S5      (       d  M  [	        XV5      nU(       a  [        U5      nO[        U5      n[        XVU5        MR     U$ )Ntest_)super__new__dir
startswithgetattrr   r   setattr)
mclsnamebasesdctsource_date_epochclsattrmethr   	__class__s
            r   r%   SourceDateEpochTestMeta.__new__&   sb    god%5HDw''s)$4T:G7=G7+  
r    )__name__
__module____qualname____firstlineno__r%   __static_attributes____classcell__)r2   s   @r   r    r    %   s     r   r    c                      \ rS rSrS rS rS rS r\R                  " \
R                  R                  \
R                  5      (       + =(       d%    \
R                  R                  \
R                  5      S5      S 5       rS rS	 rS
 r\R(                  \R                  " \
R*                  S:H  S5      \R,                  S 5       5       5       rS rS r\R                  " \R6                  R8                  S:  S5      S 5       rS rS rS r Sr!g)PyCompileTestsBase5   c                    [         R                  " [        R                  " 5       S9U l        [        R
                  R                  U R                  S5      U l        U R                  S-   U l        [        R                  R                  U R                  5      U l        [        R
                  R                  [        R                  " 5       5      S   U l        [        R
                  R                  U R                  5      S   nU(       a  [        R                  " U5        [!        U R                  S5       nUR#                  S5        S S S 5        g ! , (       d  f       g = f)N)r&   _test.pycr   wx = 123
)tempfilemkdtemposgetcwd	directorypathjoinsource_pathpyc_path	importlibutilcache_from_source
cache_path
splitdrive	cwd_drivechdiropenwrite)selfdrivefiles      r   setUpPyCompileTestsBase.setUp7   s    !))biik:77<<
C((3.#..::4;K;KL++BIIK8;
 ""4#3#34Q7HHUO$""C(DJJ{# )((s   7E
E c                     [         R                  " U R                  5        U R                  (       a!  [        R
                  " U R                  5        g g N)shutilrmtreerG   rQ   rE   rR   rU   s    r   tearDownPyCompileTestsBase.tearDownG   s.    dnn%>>HHT^^$ r   c                 :   [         R                  " U R                  U R                  5        U R	                  [
        R                  R                  U R                  5      5        U R                  [
        R                  R                  U R                  5      5        g r[   )

py_compilecompilerJ   rK   
assertTruerE   rH   existsassertFalserO   r^   s    r   test_absolute_path%PyCompileTestsBase.test_absolute_pathL   sX    4++T]];t}}5689r   c                 d    [         R                  " U R                  S-   U R                  5        U R                  [        5         [
        R                  " U R                  U R                  5        S S S 5        g ! , (       d  f       g = f! [        [        4 a    U R                  S5         g f = f)Nz.actualz.need to be able to create a symlink for a file)rE   symlinkrK   assertRaisesFileExistsErrorrb   rc   rJ   NotImplementedErrorOSErrorskipTestr^   s    r   test_do_not_overwrite_symlinks1PyCompileTestsBase.test_do_not_overwrite_symlinksQ   s}    	DJJt}}y0$--@
 ""?3""4#3#3T]]C 433	 $W- 	LMMJK	Ls   .B ,A::
B!B/.B/z7requires os.devnull and for it to be a non-regular filec                     U R                  [        5         [        R                  " U R                  [
        R                  5        S S S 5        g ! , (       d  f       g = fr[   )rk   rl   rb   rc   rJ   rE   devnullr^   s    r   &test_do_not_overwrite_nonregular_files9PyCompileTestsBase.test_do_not_overwrite_nonregular_files]   s8    
 /t//< 0//s   0A
Ac                     [         R                  " U R                  5        U R                  [        R
                  R                  U R                  5      5        g r[   )rb   rc   rJ   rd   rE   rH   re   rO   r^   s    r   test_cache_path"PyCompileTestsBase.test_cache_pathe   s3    4++,t78r   c                 "   [         R                  " U R                  5         [        R                  " [
        R                  R                  U R                  5      [
        R                  R                  U R                  5      5        S S S 5        U R                  [
        R                  R                  U R                  5      5        U R                  [
        R                  R                  U R                  5      5        g ! , (       d  f       N= fr[   )r   
change_cwdrG   rb   rc   rE   rH   basenamerJ   rK   rd   re   rf   rO   r^   s    r   test_cwdPyCompileTestsBase.test_cwdi   s    !!$..1rww//0@0@A!ww//>@ 2 	t}}5689	 21s   A&D  
Dc                    [         R                  " [        R                  R	                  U R
                  5      [        R                  R	                  U R                  5      5        U R                  [        R                  R                  U R                  5      5        U R                  [        R                  R                  U R                  5      5        g r[   )rb   rc   rE   rH   relpathrJ   rK   rd   re   rf   rO   r^   s    r   test_relative_path%PyCompileTestsBase.test_relative_pathp   su    277??4+;+;<77??4==9	;t}}5689r   ntz/cannot control directory permissions on Windowsc                    [         R                  " U R                  5      n[         R                  " U R                  [        R                  5         U R                  [        5         [        R                  " U R                  U R                  5        S S S 5        [         R                  " U R                  UR                  5        g ! , (       d  f       N:= f! [         R                  " U R                  UR                  5        f = fr[   )rE   statrG   chmodS_IREADrk   IOErrorrb   rc   rJ   rK   st_mode)rU   modes     r   test_exceptions_propagate,PyCompileTestsBase.test_exceptions_propagatev   s     wwt~~&
.	3""7+""4#3#3T]]C , HHT^^T\\2 ,+ HHT^^T\\2s$   C &,CC 
CC -Dc                    [         R                  R                  [         R                  R                  [        5      SS5      n[
        R                  " 5          U R                  [        R                  " USS95        S S S 5        U R                  [         R                  R                  [        R                  R                  U5      5      5        g ! , (       d  f       NZ= f)Ntokenizedatabad_coding2.pyF)doraise)rE   rH   rI   dirname__file__r   captured_stderrassertIsNonerb   rc   rf   re   rL   rM   rN   )rU   
bad_codings     r   test_bad_coding"PyCompileTestsBase.test_bad_coding   s    WW\\"''//(";"0"24
 $$&j00UKL 'NN,,Z8: 	; '&s   %C
Cc                 n   [         R                  " U R                  U R                  5        U R	                  [
        R                  R                  U R                  5      5        U R                  [
        R                  R                  U R                  5      5        [        U R                  S5       n[        R                  R                  UR                  5       S0 5      nS S S 5        [
        R                  R!                  S5      (       a  SnOSnU R#                  WU5        g ! , (       d  f       NJ= f)Nrbtestr      r   )rb   rc   rJ   rK   rd   rE   rH   re   rf   rO   rS   rL   _bootstrap_external_classify_pycreadenvirongetassertEqual)rU   fpflagsexpected_flagss       r   test_source_date_epoch)PyCompileTestsBase.test_source_date_epoch   s    4++T]];t}}5689$--&"11??	62'E ' ::>>-..!N!N/ '&s   20D&&
D4r   ztest does not work with -Oc           	      Z   [         R                  R                  U R                  S5      n[        R
                  R                  U5      nUS-   n[         R                  R                  U5      u  pE[         R                  R                  U5      nU R                  [         R                  R                  Xe5      [         R                  R                  SSR                  [        R                  R                  5      5      5        [        US5       nUR                  S5        S S S 5        [         R"                  " U5        U R%                  [         R                  R'                  U5      5        U R)                  [         R                  R'                  U5      5        g ! , (       d  f       N= f)Nz
foo.bar.pyr@   __pycache__zfoo.bar.{}.pycrA   rB   )rE   rH   rI   rG   rL   rM   rN   splitr{   r   formatsysimplementation	cache_tagrS   rT   rb   rc   rd   re   rf   )rU   
weird_pathrO   rK   headtailpenultimate_tailrW   s           r   test_double_dot_no_clobber-PyCompileTestsBase.test_double_dot_no_clobber   s    WW\\$..,?
^^55jA
#WW]]:.
77++D1GGLL)0GGLL ''(:(:(D(DEG	H
 *c"dJJ{# #:&z2312	 #"s   F
F*c                 b    U R                  S[        R                  " U R                  SS95        g )Nzopt-2   )optimize)assertInrb   rc   rJ   r^   s    r   test_optimization_path)PyCompileTestsBase.test_optimization_path   s#    gz11$2B2BQOPr   c                    [         R                  " U R                  [         R                  R                  S9  [        U R                  S5       n[        R                  R                  UR                  5       S0 5      nS S S 5        U R                  WS5        [         R                  " U R                  [         R                  R                  S9  [        U R                  S5       n[        R                  R                  UR                  5       S0 5      nS S S 5        U R                  US5        g ! , (       d  f       N= f! , (       d  f       N2= f)N)invalidation_moder   r   r      )rb   rc   rJ   PycInvalidationModeCHECKED_HASHrS   rO   rL   r   r   r   r   UNCHECKED_HASH)rU   r   r   s      r   test_invalidation_mode)PyCompileTestsBase.test_invalidation_mode   s    (<<II	
 $//4(B11??	62'E ) 	%(<<KK	
 $//4(B11??	62'E ) 	$ )( )(s   0D0%0E0
D>
Ec           	      X   [         R                  R                  [         R                  R                  [        5      SS5      n[
        R                  " 5        nU R                  [        R                  " USSS95        U R                  [        R                  " USSS95        U R                  UR                  5       S5        U R                  [        R                  5         [        R                  " USSS9  S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       g = f)	Nr   r   Fr   )r   quietT r   )rE   rH   rI   r   r   r   r   r   rb   rc   r   getvaluerk   PyCompileError)rU   r   stderrs      r   
test_quietPyCompileTestsBase.test_quiet   s    WW\\"''//(";"0"24
 $$&&j00URSTUj00TQRSTV__.3"":#<#<="":t1E >	 '& >=	 '&s%   B
D"D
9D

D	D
D))rO   rQ   rG   rK   rJ   N)"r5   r6   r7   r8   rX   r_   rg   rp   unittestskipIfrE   rH   re   rs   isfilert   rw   r|   r   r   skip_if_dac_overrider+   skip_unless_working_chmodr   r   r   r   r   r   r   r   r   r   r9   r4   r   r   r<   r<   5   s   $ %
:

D __

33Qrww~~bjj7QNP=P=9:: ##__RWW_FH((
3 )H $
3;0 __SYY''!+-IJ3 K3&Q%$	Fr   r<   c                       \ rS rSrSrg)PyCompileTestsWithSourceEpoch   r4   Nr5   r6   r7   r8   r9   r4   r   r   r   r           	r   r   T)	metaclassr.   c                       \ rS rSrSrg) PyCompileTestsWithoutSourceEpoch   r4   Nr   r4   r   r   r   r      r   r   r   Fc                   x    \ rS rSrS rS r\R                  " 5       S 5       rS r	S r
S rS rS	 rS
 rS rSrg)PyCompileCLITestCase   c                 r   [         R                  " 5       U l        [        R                  R                  U R                  S5      U l        [        R                  R                  U R                  SS9U l
        [        U R                  S5       nUR                  S5        S S S 5        g ! , (       d  f       g = f)Nr?   r   )optimizationrA   rB   )rC   rD   rG   rE   rH   rI   rJ   rL   rM   rN   rO   rS   rT   )rU   rW   s     r   rX   PyCompileCLITestCase.setUp   s~    !))+77<<
C#..::4;K;KBC ; E$""C(DJJ{# )((s   B((
B6c                 D    [         R                  " U R                  5        g r[   )r   r]   rG   r^   s    r   r_   PyCompileCLITestCase.tearDown   s    (r   c                     SnU(       aH  US   S:X  a?  SU;   a9  [         R                  " [        R                  USS/US   R	                  5       SS9$ [
        R                  " US/UQ70 UD6$ )Nz-Omr   -inputrb   T)r   capture_output)
subprocessrunr   
executableencoder   assert_python_ok)rU   r   r   optss       r   pycompilecmd!PyCompileCLITestCase.pycompilecmd   so    
 ',DGsNw&'8>>3>>4s"K(.w(>(>(@157 7 --dLR4R6RRr   c                 2    [         R                  " SS/UQ76 $ )Nz-mrb   )r   assert_python_failure)rU   r   s     r   pycompilecmd_failure)PyCompileCLITestCase.pycompilecmd_failure   s    224MMMr   c                    U R                  [        R                  R                  U R                  5      5        U R                  SU R                  S9nU R                  UR                  S5        U R                  UR                  S5        U R                  UR                  S5        U R                  [        R                  R                  U R                  5      5        g )Nr   )r   r   r   )rf   rE   rH   re   rO   r   rJ   r   
returncodestdoutr   rd   )rU   results     r   
test_stdinPyCompileCLITestCase.test_stdin   s    89""3d.>.>"?**A.,,t78r   c                 2   U R                  U R                  U R                  5      u  pnU R                  US5        U R                  US5        U R                  US5        U R                  [        R
                  R                  U R                  5      5        g )Nr   r   )r   rJ   r   rd   rE   rH   re   rO   )rU   rcr   r   s       r   test_with_files$PyCompileCLITestCase.test_with_files  sr    !..t/?/?AQAQRFQ%%t78r   c                    [         R                  R                  [         R                  R                  [        5      SS5      nU R                  U5      u  p#nU R                  US5        U R                  US5        U R                  SU5        g )Nr   badsyntax_3131.pyr   r   s   SyntaxError)rE   rH   rI   r   r   r   r   r   rU   
bad_syntaxr   r   r   s        r   test_bad_syntax$PyCompileCLITestCase.test_bad_syntax  sn    WW\\"''//(";"0"57
 "66zBFQ%nf-r   c                    [         R                  R                  [         R                  R                  [        5      SS5      nU R                  SU5      u  p#nU R                  US5        U R                  US5        U R                  US5        g )Nr   r   -qr   r   )rE   rH   rI   r   r   r   r   r   s        r   test_bad_syntax_with_quiet/PyCompileCLITestCase.test_bad_syntax_with_quiet  sr    WW\\"''//(";"0"57
 "66tZHFQ%%r   c                 L   [         R                  R                  [         R                  R                  [        5      S5      nU R                  U R                  U5      u  p#nU R                  US5        U R                  US5        U R                  SUR                  5       5        g )Nshould_not_exists.pyr   r   s   no such file or directory)
rE   rH   rI   r   r   r   rJ   r   r   lowerrU   should_not_existsr   r   r   s        r   test_file_not_exists)PyCompileCLITestCase.test_file_not_exists  sx    GGLL)BDZ[!66t7G7GIZ[FQ%2FLLNCr   c                 2   [         R                  R                  [         R                  R                  [        5      S5      nU R                  SU R                  U5      u  p#nU R                  US5        U R                  US5        U R                  US5        g )Nr  r   r   r   )rE   rH   rI   r   r   r   rJ   r   r  s        r   test_file_not_exists_with_quiet4PyCompileCLITestCase.test_file_not_exists_with_quiet%  su    GGLL)BDZ[!66tT=M=MO`aFQ%%r   )rO   rG   rJ   N)r5   r6   r7   r8   rX   r_   r   requires_subprocessr   r   r   r   r   r  r  r  r9   r4   r   r   r   r      sP    $)   "	S #	SN99.&D&r   r   __main__)r   importlib.utilrL   rE   rb   r\   r   r   r   rC   r   r   r   test.supportr   r   r   r   typeTestCaser    r<   r   r   r   r5   mainr4   r   r   <module>r     s      	     
    1d8#4#45  [F [F|	$6$,$5$5.E6:		'9'/'8'81H9>	I&8,, I&X zMMO r   