
    0hhy                     `   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JrJrJrJr  S SKJrJrJr  S SKJrJrJr  S SKJ r J!r!  S SK"r"S SK"J#r#J$r$J%r%J&r&  Sr'SSSSSSS.r(\\"S	S
/\RR                  S    SS\*" \(SSSS9S.r+\+RY                  \(5         " S S5      r- " S S\R\                  \-5      r/ " S S\R\                  \-5      r0 " S S\R\                  \-5      r1\ " S S\R\                  5      5       r2\3S:X  a  \Rh                  " 5         gg)    N)force_not_colorized_test_classinfinite_recursion
no_tracingrequires_resourcerequires_subprocessverbose)forgetmake_legacy_pycunload)create_empty_filetemp_dirFakePath)make_scriptmake_zip_script)	_run_code_run_module_code
run_modulerun_patha  # Check basic code execution
result = ['Top level assignment']
def f():
    result.append('Lower level reference')
f()
del f
# Check the sys module
import sys
run_argv0 = sys.argv[0]
run_name_in_sys_modules = __name__ in sys.modules
module_in_sys_modules = (run_name_in_sys_modules and
                         globals() is sys.modules[__name__].__dict__)
# Check nested operation
import runpy
nested = runpy._run_module_code('x=1\n', mod_name='<run>')
)__name____file__
__cached____package____doc____spec__zTop level assignmentzLower level referenceF   z<run>)xr   
__loader__)sysrunpyresult	run_argv0run_name_in_sys_modulesmodule_in_sys_modulesnestedc                   (    \ rS rSr/ SQrS rS rSrg)CodeExecutionMixinK   )nameparentorigincachedhas_locationsubmodule_search_locationsc                 B   UR                  5       nUR                  5       n[        U5       Hg  nUR                  S5      (       d  M  UR                  S5      (       d  M3  X2;  a  UR	                  U5        X2S   ;  d  MS  US   R	                  U5        Mi     UR	                  S5      nUR	                  S5      nUc  U R                  U5        OUR                  b8  U R                  [        UR                  5      [        UR                  5      5        U R                   H3  nSU-   nU[        XF5      4nU[        XV5      4nU R                  Xx5        M5     U R                  [        U5      [        U5      5        U H   nX1U   4nX2U   4nU R                  Xx5        M"     g )N__r$   r   z	__spec__.)copylist
startswithendswithpopassertIsNoneloaderassertEqualtypeCHECKED_SPEC_ATTRIBUTESgetattrset)	self	result_nsexpected_nskresult_specexpected_specattractualexpecteds	            8/opt/python-3.13.8/usr/lib/python3.13/test/test_runpy.pyassertNamespaceMatches)CodeExecutionMixin.assertNamespaceMatchesW   ss    NN$	!&&(iA||D!!ajj&6&6'MM!$11h'++A. !  mmJ/#
3 k* ##/  k&8&8!9!%m&:&:!;=44$&W[78w};<  2	 5 	Y[)9:A1&Fq>*HV.     c                    [        5       nUR                  5       nUS   n[        R                  S   n[        R                  R                  XS5      nU" S 5      nU R                  X5        U R                  [        R                  S   U5        U R                  [        R                  R                  XS5      U5        SU0n	X4S'   U" U	5      nU R                  X5        U R                  X5        U R                  [        R                  S   U5        U R                  [        R                  R                  XS5      U5        g )Nr   r   sentinel)	objectr0   r   argvmodulesgetrF   assertIsassertIsNot)
r<   create_namespaceexpected_namespacerJ   r>   run_namesaved_argv0	saved_modr=   
initial_nss
             rE   check_code_execution'CodeExecutionMixin.check_code_execution   s     8(--/z*hhqkKKOOH7	$T*	##I;chhqk;/ckkooh99E (+
"*J$Z0	/##I;chhqk;/ckkooh99ErH    N)r   
__module____qualname____firstlineno__r9   rF   rW   __static_attributes__rY   rH   rE   r&   r&   K   s    M&/PFrH   r&   c                        \ rS rSrS rS rSrg)ExecutionLayerTestCase   c                 z    [         R                  5       nUR                  SS 05        S nU R                  X!5        g )Nr   c                 $    [        [        0 U 5      $ N)r   example_source)init_globalss    rE   	create_ns7ExecutionLayerTestCase.test_run_code.<locals>.create_ns   s    ^R>>rH   )example_namespacer0   updaterW   )r<   r>   rf   s      rE   test_run_code$ExecutionLayerTestCase.test_run_code   s;    ',,.$
 		?!!)9rH   c                    ^^ SmSnSnSn[         R                  R                  TUUS9m[        R	                  5       nUR                  TUUUTUSSS.5        UU4S jnU R                  XT5        g )	Nz
<Nonsense>zSome other nonsensezNow you're just being silly )r*   r6   T)r   r   r   r   r   r!   r"   r#   c                 (   > [        [        U TT5      $ rc   )r   rd   )re   mod_namemod_specs    rE   rf   >ExecutionLayerTestCase.test_run_module_code.<locals>.create_ns   s    #N$0$,$,. .rH   )	importlib	machinery
ModuleSpecrh   r0   ri   rW   )r<   	mod_fname
mod_loadermod_packager>   rf   ro   rp   s         @@rE   test_run_module_code+ExecutionLayerTestCase.test_run_module_code   s    )	2
&&11(9B9C 2 E (,,. !$& "'+%)	
 			.
 	!!)9rH   rY   N)r   rZ   r[   r\   rj   rx   r]   rY   rH   rE   r_   r_      s    ::rH   r_   c                       \ rS rSrS rS rS rS S jrS!SSS.S jjrS	 r	S
 r
S SSS.S jjrS SSS.S jjrS rS"S j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g)#RunModuleTestCase   c                 d     [        U5        U R                  SU-   5        g ! [         a     g f = f)NzExpected import error for )r   failImportError)r<   ro   s     rE   expect_import_error%RunModuleTestCase.expect_import_error   s7    	?x  II2X=>  		s   " 
//c                 6   U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S5        U R                  S	5        g )
Nr   zsys.imp.ericzos.path.halfza.beez.howardz..eatenz.test_runpyz	.unittestmultiprocessing)r   r<   s    rE   test_invalid_names$RunModuleTestCase.test_invalid_names   s      '  0  0  )  +  +  /  -  !23rH   c                 @    U R                  [        S5      S   S5        g )Nr   r   )r7   r   r   s    rE   test_library_module%RunModuleTestCase.test_library_module   s    G,Z8'BrH   Fc                     [         R                  " U5        U(       a  g [         R                  R                  US5      n[	        U5        U$ )N__init__.py)osmkdirpathjoinr   )r<   pkg_dir	namespace	pkg_fnames       rE   _add_pkg_dirRunModuleTestCase._add_pkg_dir   s6    
GGLL-8	)$rH   r   parent_namespacesc                   U(       d  U(       a  U(       d  [        S5      eSnU[        R                  -   S-   n[        R                  R	                  [
        R                  " 5       5      =p[        S:  a  [        SU	5        [        R                  R                  SU5        [        S:  a  [        S[        R                  S   5        U(       aq  U/U-  n
XJS'   U
 Ha  n[        R                  R                  X5      n	U R                  X5      n[        S:  a  [        S	U	5        [        S:  d  MU  [        S
U5        Mc     [        R                  R                  X5      n[        US5       nUR                  U5        S S S 5        [        S:  a  [        S
U5        US-   U-  U-   n[        R                   R#                  UU5      nXUU4$ ! , (       d  f       NT= f)Nz2Can't mark top level module as a namespace package__runpy_pkg__pyr   z  Package tree in:r   z  Updated sys.path:z  Next level in:z
  Created:w.)RuntimeErrorr   extsepr   realpathtempfilemkdtempr   printr   insertr   r   openwriterr   utilspec_from_file_location)r<   sourcedepthmod_baser   r   pkg_name
test_fnamer   sub_dirnamespace_flagsnamespace_flagr   ru   mod_filero   rp   s                    rE   	_make_pkgRunModuleTestCase._make_pkg   s{    *E  3 4 4"bii',
GG,,X-=-=-?@@Q;2G<7#Q;3SXXa[A01E9O"+B"1'',,w9 --gF	Q;&8' BQ;lI >	 #2
 GGLL5	)S!XNN6" "Q;lI6SL%'(2>>99(:CE8X55 "!s   ,G
Gc                    [        [        R                  5       H,  nUR                  S5      (       d  M  [        R                  U	 M.     [        S:  a  [        S5        [        R                  S	 [        S:  a  [        S5        [        R                  " USS9 H  u  p4nU H7  n [        R                  " [        R                  R                  X65      5        M9     U H9  n[        R                  R                  X65      n [        R                  " U5        M;     M      [        R                  " U5        [        S:  a  [        S5        g g ! [         a&  n[        S:  a  [        U5         S nAM   S nAM  S nAff = f! [         a&  n[        S:  a  [        U5         S nAM   S nAM  S nAff = f! [         a$  n[        S:  a  [        U5         S nAg  S nAg S nAff = f)	Nr   r   z  Removed sys.modules entriesr   z  Removed sys.path entryF)topdownz  Removed package tree)r1   r   rM   r2   r   r   r   r   walkremover   OSErrorrmdir)	r<   topentryrootdirsfilesr(   exfullnames	            rE   _del_pkgRunModuleTestCase._del_pkg  sV   #++&E00KK& ' Q;=>HHQKQ;89!#e!<D.IIbggll467 
 77<<3.HHX&  "=	&HHSM{E":;{  .{E"II{.  .{E"II{.
  	&{E"II{	&sH   &3EF!+F4 
E>E99E>
F1F,,F14
G">GG"c                     SnUS==   U-  ss'   US   US'   US   n[         R                  R                  UR                  US   5      nXQS'   U(       a  US==   U-  ss'   g g )Ncr   r   r   r!   )rr   r   r   r(   )r<   ns	alter_syschar_to_addspecnew_specs         rE   _fix_ns_for_legacy_pyc(RunModuleTestCase._fix_ns_for_legacy_pyc  sk    
:+%j><*~>>99$)):<Z.J!:{O{*O rH   c                N  ^^
 U R                  [        UUUS9u  pVm
n[        T
5        [        R	                  5       nUR                  T
UUR                  T
R                  S5      S   US.5        T(       a  UR                  USSS.5        UU
4S jn	 [        S:  a  [        S	T
5        U R                  X5        [        R                  " 5         [        T
5        [        R                  " U5        [         R"                  (       dd  [%        U5        ['        T
5        [        R                  " 5         [        S:  a  [        S
T
5        U R)                  UT5        U R                  X5        U R+                  U5        [        S:  a  [        S5        g g ! U R+                  U5        f = f)Nr   r   r   r   r   r   r   r   Tr!   r"   r#   c                    > [        TU TS9$ Nr   r   )re   r   ro   s    rE   rf   2RunModuleTestCase._check_module.<locals>.create_ns=      h	JJrH   r   Running from source:Running from compiled:Module executed successfully)r   rd   r	   rh   r0   ri   r+   
rpartitionr   r   rW   rr   invalidate_caches
__import__r   r   r   dont_write_bytecoder
   r   r   r   )r<   r   r   r   r   r   ru   rp   r>   rf   ro   s     `       @rE   _check_moduleRunModuleTestCase._check_module(  sf    ~~ne(10A  C 	/Hh 	x',,. !"//#..s3A6 
 	 &+/)-  
	K	#{E"8(C%%i='')x IIi **	*x ++-Q;&> I++KC)))AMM'"Q;<=; MM'"s   CF F$c                x  ^^ U R                  [        USUUS9u  pVpxUR                  S5      S   m[        U5        [        R                  5       n	U	R                  UU[        R                  R                  U5      TUS.5        T(       a  U	R                  USSS.5        UU4S jn
 [        S	:  a  [        S
T5        U R                  X5        [        R                  " 5         [        U5        [        R                   " U5        ["        R$                  (       dd  ['        U5        [)        U5        [        S	:  a  [        ST5        [        R                  " 5         U R+                  U	T5        U R                  X5        U R-                  U5        [        S	:  a  [        S5        g g ! U R-                  U5        f = f)N__main__r   r   r   r   Tr   c                    > [        TU TS9$ r   r   )re   r   r   s    rE   rf   3RunModuleTestCase._check_package.<locals>.create_nsf  r   rH   r   r   r   zPackage executed successfully)r   rd   r   r	   rh   r0   ri   rr   r   cache_from_sourcer   r   rW   r   r   r   r   r   r   r
   r   r   r   )r<   r   r   r   r   r   ru   ro   rp   r>   rf   r   s     `        @rE   _check_package RunModuleTestCase._check_packageP  sv    ~~neZ(10A  C 	/H &&s+A.x',,. !#..::9E# 
 	 &+/)-  
	K	#{E"8(C%%i='')x IIi **	*x Q;&> I++-++KC)))AMM'"Q;=>; MM'"s   (CF& &F9c                    US::  a  [        S5      eSnUn[        U5       H$  nUn[        R                  R	                  XT5      nM&     [        R                  R	                  US5      n[        U5        [        S:  a  [        SU5        [        R                  R	                  WS5      n	U R                  U	5        [        S:  a  [        SU	5        [        R                  R	                  U	S5      n
U R                  U
5        [        S:  a  [        S	U
5        [        R                  R	                  U
S
5      n[        U5        [        S:  a  [        SU5        g g )Nr   z$Relative module test needs depth > 1r   z
sibling.pyz  Added sibling module:unclez  Added uncle package:cousinz  Added cousin package:z	nephew.pyz  Added nephew module:)	
ValueErrorranger   r   r   r   r   r   r   )r<   base_dirr   r   r   
module_diri
parent_dirsibling_fname	uncle_dir
cousin_dirnephew_fnames               rE   _add_relative_modules'RunModuleTestCase._add_relative_modulesy  s   A:CDD"
uA#Jj;J  Z>-(Q;7GGGLLW5	)$Q;6	BWW\\)X6
*%Q;7Dww||J<,'Q;6E;rH   Nc                    SnU R                  X15      u  pEpgUc  UnOUn U R                  XCU5        UR                  S5      S   n	[        S:  a  [	        SU5        [        XbS9n
U R                  U
S   U5        U R                  U
S   U	5        U R                  S	U
5        U R                  S
U
5        A
[        R                  " 5         [        U5        [        R                  " U5        [        R                  (       d  [        U5        [!        U5        [        S:  a  [	        SU5        [        R                  " 5         [        XbS9nU R                  US   U5        U R                  US   U	5        U R                  S	U5        U R                  S
U5        AU R#                  U5        [        S:  a  [	        S5        g g ! U R#                  U5        f = f)Nza\
from __future__ import absolute_import
from . import sibling
from ..uncle.cousin import nephew
r   r   r   r   )rS   r   r   siblingnephewr   r   )r   r   r   r   r   r   r7   assertInrr   r   r   r   r   r   r   r
   r   r   )r<   r   rS   contentsr   ru   ro   rp   expected_namer   d1d2s               rE   _check_relative_imports)RunModuleTestCase._check_relative_imports  s    ~~h. 	/H$M$M	#&&w%@**3/2H{E"8(CH8BR
^];R.9MM)R(MM(B''')x IIi **	*x Q;&> I++-<  J?  M!2H=i,h+MM'"Q;<=; MM'"s   E8G   Gc                 v    [        S5       H*  n[        S:  a  [        SU5        U R                  U5        M,     g )N   r   Testing package depth:r   r   r   r   r<   r   s     rE   test_run_module!RunModuleTestCase.test_run_module  s/    1XE{E":EBu% rH   c                 x    [        SS5       H*  n[        S:  a  [        SU5        U R                  USSS9  M,     g Nr   r   r   Tr   r   r  s     rE   $test_run_module_in_namespace_package6RunModuleTestCase.test_run_module_in_namespace_package  s8    1a[E{E":EBuM !rH   c                 x    [        SS5       H*  n[        S:  a  [        SU5        U R                  U5        M,     g )Nr   r   r   r   r   r   r   r  s     rE   test_run_package"RunModuleTestCase.test_run_package  s1    1a[E{E":EB& !rH   c           	      ~   U R                  SSS5      nUu  p#pCUR                  SS5      nU R                  U R                  U5        [        R
                  R                  USS5      n[        [        [        [        4nU H  nUR                  nU R                  U5         SR                  U5      n	[        USS	S
9 n
U
R                  U	5        S S S 5         [!        U5        U R#                  SR                  U5      5         [!        US-   5        U R#                  SR                  U5      5        S S S 5        M     g ! , (       d  f       Nv= f! U a%  nU R%                  S[        U5      5         S nANsS nAff = f! U a%  nU R%                  S[        U5      5         S nANrS nAff = f! , (       d  f       GM<  = f)Nrm   r   r   	.__main__r   r   z raise {0}('{0} in __init__.py.')wtasciiencodingzNothing raised; expected {}zfinding specz
.submodule)r   replace
addCleanupr   r   r   r   r   AttributeError	TypeErrorr   r   subTestformatr   r   r   r~   assertNotIn)r<   r    r   _ro   init
exceptions	exceptionr(   r   r   errs               rE    test_run_package_init_exceptions2RunModuleTestCase.test_run_package_init_exceptions  sy   Az2"(H##K4w/ww||G_mD!>9jI
#I%%Dd#;BB4H$w78NN6* 8Jx( II;BB4HIJx,67 II;BB4HI $# $ 87 ! B$$^VC[AAB ! B$$^VC[AAB $#sx    F,=D?F,E# F,E> F,?
E	F,E;E61F,6E;;F,>F)F$F,$F))F,,
F<	c                 
   U R                  SS5      u  pp2 [        U5        U R                  [        S5         [	        U5        S S S 5        U R                  U5        g ! , (       d  f       N = f! U R                  U5        f = f)Nrm   r   found in sys\.modules)r   r   assertWarnsRegexRuntimeWarningr   r   )r<   r   r  ro   s       rE   test_submodule_imported_warning1RunModuleTestCase.test_submodule_imported_warning  sl    "&..Q"7H	#x &&~,.8$. MM'"	. . MM'"s"   !A/ AA/ 
A,(A/ /Bc                    U R                  SSS5      u  pp2U R                  U R                  U5        UR                  SS5      n[	        U5        U R                  U[        R                  5        [        R                  " 5          [        R                  " S[        5        [        U5        S S S 5        [	        U5        U R                  [        S5         [        U5        S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nrm   r   r   r  errorr!  )r   r  r   r  r   r   r   rM   warningscatch_warningssimplefilterr#  r   r"  )r<   r   r  ro   packages        rE    test_package_imported_no_warning2RunModuleTestCase.test_package_imported_no_warning  s    "&..Q
"CHw/"";37gs{{+$$&!!'>:w ' 	8"">3KLw ML '&
 MLs   'C*C;*
C8;
D	c                 v    [        SS5       H)  n[        S:  a  [        SU5        U R                  USS9  M+     g )Nr   r   r   T)r   r	  r  s     rE   %test_run_package_in_namespace_package7RunModuleTestCase.test_run_package_in_namespace_package  s6    1a[E{E":EB> !rH   c                 v    [        SS5       H)  n[        S:  a  [        SU5        U R                  USS9  M+     g )Nr   r   r   T)r   r	  r  s     rE   test_run_namespace_package,RunModuleTestCase.test_run_namespace_package  6    1a[E{E":EB6 !rH   c                 x    [        SS5       H*  n[        S:  a  [        SU5        U R                  USSS9  M,     g r  r	  r  s     rE   /test_run_namespace_package_in_namespace_packageARunModuleTestCase.test_run_namespace_package_in_namespace_package  s8    1a[E{E":EBN !rH   c                 t    [        S5       H)  n[        S:  a  [        SU5        U R                  USS9  M+     g )Nr   r   r   Tr   r   r  s     rE   test_run_module_alter_sys+RunModuleTestCase.test_run_module_alter_sys  s4    1XE{E":EBu5 rH   c                 v    [        SS5       H)  n[        S:  a  [        SU5        U R                  USS9  M+     g )Nr   r   r   Tr   r	  r  s     rE   test_run_package_alter_sys,RunModuleTestCase.test_run_package_alter_sys  r4  rH   c                 x    [        SS5       H*  n[        S:  a  [        SU5        U R                  U5        M,     g )N      r   z"Testing relative imports at depth:r   r   r   r   r  s     rE   test_explicit_relative_import/RunModuleTestCase.test_explicit_relative_import  s1    1a[E{E"FN((/ !rH   c                 z    [        SS5       H+  n[        S:  a  [        SU5        U R                  US5        M-     g )Nr?  r@  r   z'Testing main relative imports at depth:r   rA  r  s     rE   test_main_relative_import+RunModuleTestCase.test_main_relative_import  s3    1a[E{E"KUS((
; !rH   c                   ^^ SnSmU R                  [        U5      u  p#mn[        T5        [        R	                  5       nUR                  TU[        R                  R                  U5      TR                  S5      S   US.5        UU4S jn U R                  Xe5        U R                  U5        g ! U R                  U5        f = f)Nr   z*And now for something completely differentr   r   r   c                    > [        TU T5      $ rc   r   )re   ro   rS   s    rE   rf   2RunModuleTestCase.test_run_name.<locals>.create_ns-  s    hh??rH   )r   rd   r	   rh   r0   ri   rr   r   r   r   rW   r   )	r<   r   r   ru   rp   r>   rf   ro   rS   s	          @@rE   test_run_nameRunModuleTestCase.test_run_name  s    ?~~ne4 	/Hhx',,. !#..::9E#..s3A6 
 		@	#%%i=MM'"DMM'"s   B1 1Cc                 >   SS K nSnSnSS/nSUS-   /n[        5       n[        5       n[        SU5       Hi  nS	R                  U/U-  5      n	UR	                  U	5        U H  n
UR	                  U	S	-   U
-   5        M     U H  n
UR	                  U	S	-   U
-   5        M     Mk     S	R                  U/U-  5      n	UR	                  U	5        UR	                  U	S
-   5        U R                  SU5      u  ppU R                  U R                  U5        [        SUS-   5       H  nU R                  USU5        M     UR                  U/5       H  nU R                  XR                  5        U R                  UR                  [        R                  R                  5        UR                   (       a  UR#                  UR$                  5        M  UR#                  UR$                  5        M     U R'                  [)        U5      SU5        U R'                  [)        U5      SU5        g )Nr   r   r   r   zuncle.cousinzuncle.cousin.nephewz.siblingr   r   z.runpy_testrm   r?  )pkgutilr;   r   r   addr   r  r   r   walk_packagesassertIsInstance
ModuleInfomodule_finderrr   rs   
FileFinderispkgr   r(   r7   len)r<   rM  	max_depth	base_namepackage_suffixesmodule_suffixesexpected_packagesexpected_modulesr   r   r(   r   ru   ro   rp   
moduleinfos                   rE   test_pkgutil_walk_packages,RunModuleTestCase.test_pkgutil_walk_packages4  s    		#	#^40)j2HIE51i(Exxe 34H!!(+(!%%hnt&;< )' $$X^d%:; ( ) 88YK)34h'X56~~b), 	/Hw/1ik*E&&wE: +!//	:J!!*.@.@A!!*":":"+"5"5"@"@B!((9 ''
8 ; 	./4EF-.3CDrH   rY   )F)
runpy_testrc   )r   rZ   r[   r\   r   r   r   r   r   r   r   r   r   r   r   r  r  r
  r  r$  r,  r/  r2  r6  r9  r<  rB  rE  rJ  r]  r]   rY   rH   rE   r{   r{      s    ?4C6"'56:&2	+&>&+u&>P'?','?RF.&>P&
N
'
J8# ?
7
O
6
7
0
<
#*"ErH   r{   c                       \ rS rSr SS jr  SS j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      S 5       5       rS rSrg)RunPathTestCaseiX  Nc                 ,    Uc  [         n[        XX45      $ rc   )rd   r   )r<   
script_dirscript_basenamer   omit_suffixs        rE   _make_test_script!RunPathTestCase._make_test_script[  s    >#F:!0 	0rH   c                   ^^ U4S jn[         R                  5       n	Uc  Un
OUn
U(       a;  [        R                  R	                  U
U5      nUR
                  nU(       d  S Ul        OS =pU	R                  UUUSUUSSS.5        U R                  X5        SmUU4S jnU(       a5  Uc2  [        R                  R	                  TU5      nU(       d  S Ul        XS'   TU	S'   TR                  S	5      S
   U	S'   U R                  X5        g )Nc                    > [        TU 5      $ rc   r   )re   script_names    rE   rf   0RunPathTestCase._check_script.<locals>.create_nsf  s    K66rH   rm   T)r   r   r   r   r   r!   r"   r#   zprove.issue15230.is.fixedc                    > [        TU T5      $ rc   rj  )re   rS   rk  s    rE   rf   rl    s    Kx@@rH   r   r   r   r   r   )
rh   r0   rr   r   r   r+   r6   ri   rW   r   )r<   rk  r   expected_fileexpected_argv0ro   expect_speccheck_loaderrf   r>   	spec_namerp   
mod_cachedrS   s    `           @rE   _check_scriptRunPathTestCase._check_scriptb  s   	7',,.%I I ~~==i>KMH!J"&$((H%%$ ''+%)	
 		 	!!)9.	A8+ ~~==h>KMH"&&.
#"*J%-%8%8%=a%@M"!!)9rH   c                 h    [         R                  " U5      nU R                  [        U[        U5        g rc   )reescapeassertRaisesRegexr   r   )r<   rk  msgs      rE   _check_import_error#RunPathTestCase._check_import_error  s#    iin{C;GrH   c           	          [        5        nSnU R                  X5      nU R                  USUUSS9  S S S 5        g ! , (       d  f       g = fNscript
<run_path>Frp  r   rf  rt  r<   rc  ro   rk  s       rE   test_basic_script!RunPathTestCase.test_basic_script  sF    Z:H00FK{L+*  ? ZZs	   ';
A	c           	          [        5        nSnU R                  X5      nU R                  [        U5      SUUSS9  S S S 5        g ! , (       d  f       g = fr~  )r   rf  rt  r   r  s       rE   &test_basic_script_with_pathlike_object6RunPathTestCase.test_basic_script_with_pathlike_object  sM    Z:H00FKx4l**+0  2 ZZs   0A
Ac           	          [        5        nSnU R                  XSS9nU R                  USUUSS9  S S S 5        g ! , (       d  f       g = f)Nr  T)re  r  Fr  r  r  s       rE   test_basic_script_no_suffix+RunPathTestCase.test_basic_script_no_suffix  sQ    Z:H00=A 1 CK{L+*  ?	 ZZ	   &:
Ac           	          [        5        nSnU R                  X5      n[        R                  " USS9n[        R
                  " U5        U R                  USUUSS9  S S S 5        g ! , (       d  f       g = f)Nr  Tdoraiser  Fr  )r   rf  
py_compilecompiler   r   rt  )r<   rc  ro   rk  compiled_names        rE   test_script_compiled$RunPathTestCase.test_script_compiled  se    Z:H00FK&..{DIMIIk"}lM,%  A ZZs   AA&&
A4c           	          [        5        nSnU R                  X5      nU R                  USUXS9  S S S 5        g ! , (       d  f       g = f)Nr   r  ro   r  r  s       rE   test_directoryRunPathTestCase.test_directory  sD    Z:!H00FKz<)  > ZZr  c           	      ,   [        5        nSnU R                  X5      n[        R                  " USS9n[        R
                  " U5        [        R                  (       d  [        U5      nU R                  USUXS9  S S S 5        g ! , (       d  f       g = f)Nr   Tr  r  r  )
r   rf  r  r  r   r   r   r   r
   rt  )r<   rc  ro   rk  r  
legacy_pycs         rE   test_directory_compiled'RunPathTestCase.test_directory_compiled  sv    Z:!H00FK&..{DIMIIk"**,[9
"":|Z#- # B ZZs   A1B
Bc                     [        5        nSnU R                  X5      nSU-  nU R                  X5        S S S 5        g ! , (       d  f       g = f)Nnot_main"can't find '__main__' module in %r)r   rf  r{  )r<   rc  ro   rk  rz  s        rE   test_directory_error$RunPathTestCase.test_directory_error  s@    Z:!H00FK6CC$$Z5	 ZZs	   *>
Ac           
          [        5        nSnU R                  X5      n[        USU5      u  pEU R                  USXTUSS9  S S S 5        g ! , (       d  f       g = f)Nr   test_zipr  Fro   rq  )r   rf  r   rt  )r<   rc  ro   rk  zip_namefnames         rE   test_zipfileRunPathTestCase.test_zipfile  sW    Z:!H00FK-j*kROHxu(0u  F	 ZZs   6A


Ac           
          [        5        nSnU R                  X5      n[        R                  " USS9n[	        USU5      u  pVU R                  USXeUSS9  S S S 5        g ! , (       d  f       g = f)Nr   Tr  r  r  Fr  )r   rf  r  r  r   rt  )r<   rc  ro   rk  r  r  r  s          rE   test_zipfile_compiled%RunPathTestCase.test_zipfile_compiled  sl    Z:!H00FK&..{DIM-j*.;=OHxu(0u  F ZZs   AA
A-c                     [        5        nSnU R                  X5      n[        USU5      u  pESU-  nU R                  XF5        S S S 5        g ! , (       d  f       g = f)Nr  r  r  )r   rf  r   r{  )r<   rc  ro   rk  r  r  rz  s          rE   test_zipfile_error"RunPathTestCase.test_zipfile_error  sP    Z:!H00FK-j*kROH6AC$$X3 ZZs   9A
Acpuc                 d   [        5        n[        5        nSnSU-  nU R                  XU5      n[        USU5      u  pg[        S5         U R	                  [
        [        U5        S S S 5        S S S 5        S S S 5        g ! , (       d  f       N= f! , (       d  f       N(= f! , (       d  f       g = f)Nr   z import runpy
runpy.run_path(%r)
r     )r   rf  r   r   assertRaisesRecursionErrorr   )r<   rc  	dummy_dirro   r   rk  r  r  s           rE   test_main_recursion_error)RunPathTestCase.test_main_recursion_error  s     Z:xzY!H-09:F00vNK-j*kROH#B'!!.(HE ( (2ZZ (' (2zZZs:   B!4B
A?&B.B!?
B	B
B	B!!
B/c                 8   [        5        n[        R                  R                  US5      n[	        USSS9 nUR                  S5        S S S 5        [        U5      nU R                  US   S5        S S S 5        g ! , (       d  f       N7= f! , (       d  f       g = f)Nz	script.pyr   latin1r  u%   
#coding:latin1
s = "non-ASCII: hé"
su   non-ASCII: hé)r   r   r   r   r   r   r   r7   )r<   rc  filenamefr    s        rE   test_encodingRunPathTestCase.test_encoding  sx    Z:ww||J<Hhh71   8
 h'FVC[*<= Z77 Zs"   ,BA:	(B:
B	B
BrY   )NF)NTT)r   rZ   r[   r\   rf  rt  r{  r  r  r  r  r  r  r  r  r  r  r   r   r  r  r]   rY   rH   rE   ra  ra  X  s~     490 6:;?+:ZH?2?A>	B6FF4 uF  F	>rH   ra  c                      ^  \ rS rSrSr\R                  S:X  a  \O\R                  * r	\
\R                  S 5       5       rU 4S jr\" 5       S 5       rS rS rS	 rS
 rS rS rS rSrU =r$ )TestExiti  l   :   win32c               /      #    [        5        n[        R                  " U5      v   S S S 5        g ! , (       d  f       g = f7frc   )r   pathlibPath)argskwargstmp_fns      rE   tmp_pathTestExit.tmp_path  s&      Z6,,v&& ZZs   A /	A 
=A c                    > U R                  5        nUS-  =U l        nUR                  [        R                  " S5      5        [
        TU ]  " U0 UD6  S S S 5        g ! , (       d  f       g = f)Nzham.pyz@                    raise KeyboardInterrupt
                    )r  ham
write_texttextwrapdedentsuperrun)r<   r  r  tmpr  	__class__s        rE   r  TestExit.run  sX    ]]_ 8^+DHsNN GK(( __s   AA
A+c                 <   [         R                  S/UQn[        R                  " U/UQ70 UDS[        R                  S.D6nU R                  UR                  R                  S5      UR                  5        U R                  UR                  U R                  5        g )Nz-ET)textstderrz
KeyboardInterrupt
)r   
executable
subprocessr  PIPE
assertTruer  r3   r7   
returncodeEXPECTED_CODE)r<   cmdr  r  procs        rE   assertSigIntTestExit.assertSigInt  sv     ~~t*c*~~cVDVFVjooV,,-DEt{{S$*<*<=rH   c                 <    U R                  U R                  /5        g rc   )r  r  r   s    rE   test_pymain_run_fileTestExit.test_pymain_run_file"  s    488*%rH   c                     U R                   R                  nUS-  nUR                  " [        R                  " S5      5        U R                  U/US9  g )Nzrun_module.pyzU                import runpy
                runpy.run_module("ham")
                cwdr  r)   r  r  r  r  )r<   r  r   s      rE   %test_pymain_run_file_runpy_run_module.TestExit.test_pymain_run_file_runpy_run_module%  sO    hhoo?*
OO	
 	:,C0rH   c                     U R                   R                  nUS-  nUR                  [        R                  " S5      5        U R                  U/US9  g )Nzrun_module_as_main.pyz^                import runpy
                runpy._run_module_as_main("ham")
                r  r  )r<   r  run_module_as_mains      rE   -test_pymain_run_file_runpy_run_module_as_main6TestExit.test_pymain_run_file_runpy_run_module_as_main2  sS    hhoo #::%%OO	
 	-.C8rH   c                 P    U R                  SS/U R                  R                  S9  g )N-cz%import runpy; runpy.run_module('ham')r  r  r  r)   r   s    rE   "test_pymain_run_command_run_module+TestExit.test_pymain_run_command_run_module?  s)    :; 	 	
rH   c                 P    U R                  SS/U R                  R                  S9  g )Nr  
import hamr  r  r   s    rE   test_pymain_run_command TestExit.test_pymain_run_commandE  s"    4.DHHOODrH   c                 N    U R                  / SU R                  R                  S9  g )Nr  )inputr  r  r   s    rE   test_pymain_run_stdinTestExit.test_pymain_run_stdinH  s    "LdhhooFrH   c                 h    U R                   nU R                  SUR                  /UR                  S9  g )Nz-mr  )r  r  stemr)   )r<   r  s     rE   test_pymain_run_moduleTestExit.test_pymain_run_moduleK  s+    hh4*

;rH   )r  )r   rZ   r[   r\   STATUS_CONTROL_C_EXITr   platformsignalSIGINTr  staticmethod
contextlibcontextmanagerr  r  r   r  r  r  r  r  r  r  r  r]   __classcell__)r  s   @rE   r  r    s    & <<7" 	mm^ 
 '  '

) > >&19
EG< <rH   r  r   )5r  importlib.machineryrr   importlib.utilos.pathr   r  r  rw  r   r  r   r   r  unittestr(  test.supportr   r   r   r   r   r   test.support.import_helperr	   r
   r   test.support.os_helperr   r   r   test.support.script_helperr   r   r   r   r   r   r   rd   implicit_namespacerL   dictrh   ri   r&   TestCaser_   r{   ra  r  r   mainrY   rH   rE   <module>r     sW    *    	   
      G F H H C  C C&   %'>?!$"%T;	    + ,LF LF^$:X..0B $:NUE))+= UEnd>h''); d>N  M<x   M<  M<` zMMO rH   