
    3hh                         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rS SKJ	r	  S SK
Jr  S SK
Jr  \R                  " S5        SSKJr   " S	 S
\5      r " S S\5      r\S:X  a  \R&                  " 5         gg)    N)dedent)support)import_helper)	os_helper_interpreters   )TestBasec                      ^  \ rS rSrSr\R                  U 4S j5       rSS.S jrSr	Sr
S rS	 rS
 r\R                  " 5       SS.S j5       rS rSrU =r$ )StartupTests   r   c              '     >#    [         TU ]  " U6  nU =R                  S-  sl         Uv   U R                  (       a&  U R                  S:X  a  [	        SSS9  O[	        S5        SU l         S S S 5        g ! U R                  (       a-  U R                  S:X  a  [	        SSS9  SU l        f [	        S5        SU l        f = f! , (       d  f       g = f7f)Nr   z### end subtest debug ### )endF)supersubTest_subtest_count_debugged_in_subtestprint)selfargsctx	__class__s      N/opt/python-3.13.8/usr/lib/python3.13/test/test_interpreters/test_lifecycle.pyr   StartupTests.subTest   s     W_d#s1$
2	,,**a/ 9rB9:,1) $#
 ,,**a/ 9rB -2) 9:,1) $#s3   CB>A4>B>+	C4AB;;B>>
CCNheaderc                v   U(       a  U R                  SU S35        U(       as  UR                  [        R                  5      (       a-  U R                  US [	        [        R                  5      *  5        O"U R                  U5        U R                  S5        U R                  S5        g U R                  U5        g )Nz--- z ---z<no newline>------)_debugendswithoslineseplen)r   msgr   s      r   debugStartupTests.debug(   s    KK$vhd+,<<

++KK$5c"**o%5 67KK$KK/KK!KK    Fc                     U R                   (       d  [        5         SU l         U R                  b0   U R                  (       d  SU l        [        S5        [        U5        g [        U5        g )NTz### start subtest debug ###)	_debuggedr   _subtestr   )r   r$   s     r   r   StartupTests._debug7   sJ    ~~G!DN==$0004D-78c
#Jr'   c                     SS K nUR                  SS9n[        R                  R	                  U5      nU R                  [        R                  U5        U$ )Nr   test_interpreters_)prefix)tempfilemkdtempr!   pathrealpath
addCleanupr   rmtree)r   r/   tmps      r   create_temp_dirStartupTests.create_temp_dirD   sF    &:;ggs#	((#.
r'   c                6   [         R                  R                  " U6 n[         R                  R                  U5      nU(       a  [         R                  " USS9  [        USSS9 nUR                  [        U5      5        S S S 5        U$ ! , (       d  f       U$ = f)NT)exist_okwzutf-8)encoding)r!   r1   joindirnamemakedirsopenwriter   )r   textr1   filenamer=   outfiles         r   write_scriptStartupTests.write_scriptK   sm    77<<&''//(+KK$/(C'2gMM&,' 3 32s   $B		
Bcwdc                t   SS K nSS Kn[        U[        5      (       a  UR	                  U5      n[
        R                  /UQn UR                  UUSSS9nUR                   S:w  ap  ["        R$                  (       a[  U R                  SUR                  US	S  5       S
35        U R                  UR&                  SS9  U R                  UR(                  SS9  U R+                  UR                   S5        U R+                  UR(                  S5        UR&                  $ ! [         a  nU R                  SUR                  U5       35        [        U[        5      (       aV  UR                  (       dE  [        R                  R                  US   5      (       a  SnOSnU R                  US    SU 35        e S nAff = f)Nr   T)rG   capture_outputrA   z# cmd: existszdoes not exist z
# python3 r   z failed:stdoutr   stderrr   )shlex
subprocess
isinstancestrsplitsys
executablerun	Exceptionr%   r<   FileNotFoundErrorrB   r!   r1   rJ   
returncoder   verboserL   rM   assertEqual)r   argvrG   rN   rO   procexcrJ   s           r   
run_pythonStartupTests.run_pythonT   so    	dC  ;;t$D&&	>>#	 " D  ??aGOOJJEJJtABx$8#9BCJJt{{8J4JJt{{8J4!,b){{!  	JJD!1 234#011#,,77>>$q'**%F-F

d1gYax01	s   D 
F7#BF22F7c                    SnU R                  5       nU R                  USSSS9  U R                  USSUS9  U R                  USSUS9  U R                  USUS9  SU4SU4S	U4S
U4S/nU Hr  u  pEU R                  SU 35         U R                  XBS9n[        R
                  " U5      nUS   US   pU R                  X5        U R                  X5        S S S 5        Mt     g ! , (       d  f       M  = f)Na  
            import sys
            from test.support import interpreters

            orig = sys.path[0]

            interp = interpreters.create()
            interp.exec(f"""if True:
                import json
                import sys
                print(json.dumps({{
                    'main': {orig!r},
                    'sub': sys.path[0],
                }}, indent=4), flush=True)
                """)
            pkgz__init__.pyr   )rA   z__main__.pyz	script.pyz	-m scriptz-m pkgz-m pkg.script)z-c "import script"r   zpython3 rF   mainsub)r6   rD   r   r^   jsonloadsrZ   )
r   scriptrG   casesr[   expectedoutdatasp0_mainsp0_subs
             r   test_sys_path_0StartupTests.test_sys_path_0v   s   , ""$#um"=#um&A#uk?#{8 ##sOc"&
 $ND/0oodo4zz#$(L$u+'  3  3 10 $00s   AC""
C1	)r)   r   )__name__
__module____qualname____firstlineno__r   
contextlibcontextmanagerr   r%   r)   r   r   r6   rD   r   requires_subprocessr^   rm   __static_attributes____classcell__)r   s   @r   r   r      ss    
 N2 2 $(  I    "&*  #B+4 +4r'   r   c                   B    \ rS rSr\R
                  " 5       S 5       rSrg)FinalizationTests   c                    SS K n[        R                  SS/nUR                  USSS9nU R	                  SUR
                  5        UR                  S:X  ae  [        R                  (       aP  [        5         [        S5        [        SUR                   35        [        S	UR
                   35        [        S
5        U R                  UR                  S5        g )Nr   z-czif True:
            from test.support import interpreters
            interp = interpreters.create()
            raise Exception
            T)rI   rA   	Tracebackz --- cmd unexpected succeeded ---zstdout:
zstderr:
r   r   )rO   rS   rT   rU   assertInrM   rX   r   rY   r   rL   rZ   )r   rO   r[   r\   s       r   test_gh_109793 FinalizationTests.test_gh_109793   s     	 ' 
 ~~d4d~Ck4;;/??aGOOG45Idkk]+,Idkk]+,(O!,r'    N)ro   rp   rq   rr   r   ru   r~   rv   r   r'   r   ry   ry      s      "- #-r'   ry   __main__)rs   rd   r!   os.pathrS   textwrapr   unittesttestr   test.supportr   r   import_moduleutilsr	   r   ry   ro   rb   r   r'   r   <module>r      sg      	  
    & "   O , P48 P4h- -. zMMO r'   