python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_launcher.cpython-312.opt-1.pyc

Αel
HddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
mZddlm
Z
ejdk7re	jdddlZdZej$j'j)dj'rdZd	d
dej*dd
ddej*dd
ddej*ddddddej*iddddej*ej$d
dddZedddZdj3d gej5Dcgc]\}}|d!dj7d"|c}}Zdj3d#d$gZd%Zd&Zd'Z d(Z!Gd)d*Z"Gd+d,Z#Gd-d.e	jHe#Z%ycc}}w)/N)Path)supportwin32ztest only applies to Windowspy.exez_d.exezpy_d.exezPython Test Suitezhttps://www.python.org/zX.Y versionX.Y.exe)NExecutablePath)DisplayNameInstallPathzX.Y-32 version
X.Y-32.exezX.Y-arm64 versionz
X.Y-arm64.exez-X fake_arg_for_test)NrExecutableArgumentsz!Ignored because no ExecutablePath)r	
SupportUrl3.1003.100-323.100-arm64ignoredzPython Test Suite SinglezSingle Interpreter)r	r)PythonTestSuitePythonTestSuite1PythonTestSuite/3.100zPythonTestSuite/3.100-32zPythonTestSuite/3.100-arm64)	PY_PYTHON
PY_PYTHON2
PY_PYTHON3

[defaults]=z
[commands]ztest-command=TEST_EXE.execTfd|jD]\}}|||y)Ncft|trCtj||5}|j	D]\}}|||	dddyt|t
r(tj||dtj|ytdj|#1swYyxYw)Nz&don't know how to create data for '{}')

isinstancedictwinregCreateKeyExitemsstr
SetValueExREG_SZ	TypeErrorformat)rootkeyvaluehkeykv_create_registry_datas      F/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_launcher.pyr.z3create_registry_data.<locals>._create_registry_data\seT"##D#.
6$!KKM6DAq)$156
6
6s
#dCv}}eDDKKERSS
6
6s#B''B0)r")r(datar,r-r.s    @r/create_registry_datar1[s0
T

*1dAq)*c#KtjD]}	tj||y#t$r}|j
dk(rYd}~yd}~wwxYww)Ni)	itertoolscountr EnumKeyOSErrorwinerror)r(iexs   r/	enum_keysr;lsU
__
	..q))	{{c!	s0A6A	AAAAAActjtjz}t|D]N}tj|||5}t|t
|dddtj||Py#1swY"xYw)Naccess)r 	KEY_WRITEKEY_ENUMERATE_SUB_KEYSlistOpenKeydelete_registry_datar;	DeleteKey)r(keysACCESSr)r+s     r/rCrCvsp


 = =
=FDz$
^^D#f
5	8 y7	8s#$	8	8sA??B	c	\d|d}tjdftjtjftjtjffD]C\}}	tj
tj||tj|zyy#t$rYRwxYw)NzSoftware\Python\PythonCore\z\InstallPathrr=TF)	r HKEY_CURRENT_USERHKEY_LOCAL_MACHINEKEY_WOW64_64KEYKEY_WOW64_32KEYCloseKeyrBKEY_READr7)tagr)r(flags    r/is_installedrP~s
(\
:C		!	!1%		"	"F$:$:;		"	"F$:$:;	
d
	OOFNN4V__t=STU			s<B	B+*B+ceZdZdZdZdZy)
PreservePyInic@t||_||_d|_yN)rpathcontent
_preserved)selfrUrVs   r/__init__zPreservePyIni.__init__sJ	r2c	|jj|_|jj	|j
dy#t$r
d|_Y:wxYw)Nzutf-16encoding)rU
read_bytesrWFileNotFoundError
write_textrVrXs r/	__enter__zPreservePyIni.__enter__sP	#"ii224DO	
		T\\H=!	#"DO	#sA		AAc|j|jjy|jj|jyrT)rWrUunlinkwrite_bytes)rXexc_infos  r/__exit__zPreservePyIni.__exit__s2??"IIII!!$//2r2N)__name__
__module____qualname__rYrarfr2r/rRrRs
>3r2rRc~eZdZdZedZdZddZdZe	jd	dZe	jdZy)

RunPyMixinNcd}tjr+ttjj
tz}nRtjdjdD])}|st|tz}|js)nd}|r	tj|dgtjtjtjdd5}|jjt!|j"dj%dj'd	d
}|j"j)|j+ddddtj,j/sd}|s(t3j4dj7t|S#1swYVxYw#t0$rd}YEwxYw)
NPATH;-hasciiignore)stdinstdoutstderrr\errorsrr 
zcannot locate '{}' for test)	sysconfigis_python_buildrsys
executableparentPY_EXEosgetenvsplitis_file
subprocessPopenPIPErsclosenextrt
splitlines
rpartitionreadwaitversion
startswithr7unittestSkipTestr')clspy_exeprs    r/find_pyzRunPyMixin.find_pysw$$&#..)0069FYYv&,,S1
!!Wv-F~~'	

%%TN$//%??%??$#
GGMMO"188T2==?BMMcRSTUGHHMMOFF2J{{--g6!F##-44V<

+

s,AF>A?F2)F>2F;7F>>GGc\|js|j|_|jSrT)rrr`s r/
get_py_exezRunPyMixin.get_py_exes {{,,.DK{{r2c|js|j|_hd}itjj	Dcic])\}}|j|vs|j|+c}}dddd|xsij	Dcic]\}}|j|c}}}|s|jg|}t
j|||jtjtjtj5}	|	jj|	jd|	jjjdd}
|	jjjd	d}ddd	j |k7rat"j$rQ|sOt'd
t'|jg|t'dt'
t'dt'|r>|	j |k7r/t
j(|	j |jg|
|j+||	j j-Dcic]L}|j/d
s9d|vr5|j1dd|j1ddj3N}
}
|
d<||
d<|
Scc}}wcc}}w#1swYSxYwcc}w)N>rrrVIRTUAL_ENV1)PYLAUNCHER_DEBUGPYLAUNCHER_DRYRUNPYLAUNCHER_LIMIT_TO_COMPANY)envr}rsrtruryutf-8replacerqz
++ COMMAND ++z++ STDOUT ++z++ STDERR ++#:rrxrtru)rrrenvironr"upperrrrrsrrrtrdecoderu
returncoderverboseprintCalledProcessErrorassertEqualrr	partitionlstrip)rXargsr
allow_failexpect_returncodeargvrrr,r-routerrsr0s              r/run_pyzRunPyMixin.run_pyst{{,,.DKI
(*

(8(8(:V1aggiv>Uqwwy!|V
 #!$+-	

*-(9(9(;<1qwwy!|<
KK'$'D


{{//????

	=
GGMMO
FF2J((--/(()<C((--/(()<C	=
<<,,/"4;;&&'.!#J.!#J!,,*;;//t{{>RT>RTWY\]].=^^%
<<$
KKQS!1!!4!;!;!==


XXMW=	=	=.
s&K#KK"BK(=AK5(K2ctjjd}|stjdtt
|dz|S)NLOCALAPPDATAz5LOCALAPPDATA environment variable is missing or emptyzpy.ini)rrgetrrrRr)rXrV
local_appdatas   r/py_inizRunPyMixin.py_inisF

~6
##%78
8T-08;WEEr2c#Kttjtjdz}|j||	||j
y#|j
wxYww)N)dirz.pyr[)rtempfilemktemprgetcwdr_rc)rXrVr\files    r/scriptzRunPyMixin.scriptsPHOO		4u<=(3	JKKMDKKMsAA5A A5 A22A5c#bKtjdz}|jdd|ttjj
z}|j
	|dt|jiftj|y#tj|wxYww)NScriptsT)exist_okparentsr)rcwdmkdirr|r}nametouchr#r~shutilrmtree)rXvenvvenv_exes   r/	fake_venvzRunPyMixin.fake_venvsxxzI%

D$
/4/444	 ]C,<===MM$FMM$sA!B/$B?B/B,,B/)NFrN)r)
rgrhrirclassmethodrrrr
contextlibcontextmanagerrrrjr2r/rlrls_
F&&P
,\F  r2rlc(eZdZedZedZdZdZdZdZ	dZ
dZd	Zd
Z
dZdZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"d Z#d!Z$d"Z%d#Z&d$Z'd%Z(d&Z)d'Z*d(Z+d)Z,d*Z-d+Z.d,Z/y-).TestLauncherctjtjd5}t|tdddt
jrtjd}yy#1swY0xYw)NSoftware\Pythonz!reg query HKCU\Software\Python /s)	r 	CreateKeyrHr1	TEST_DATArrrcheck_output)rr)rs   r/
setUpClasszTestLauncher.setUpClasssY


f66?
L	1PS i0	1??''(MNA	1	1sA%%A.ctjtjdtjtjz5}t|tdddy#1swYyxYw)Nrr=)r rBrHr?r@rCr)rr)s  r/
tearDownClasszTestLauncher.tearDownClass's`
^^F44RXRbRbekfCfCSCD	1HK i0	1	1	1sA  A)c|jdg}|j|jt|d|jtj
j
dd|dy)N-0argv0rwrr)rrrrr|rrrXr0s  r/test_versionzTestLauncher.test_version-sW{{D6"d4=&9:..s3A6YHr2cR|jdg}|jd|dy)NrpTruezSearchInfo.helprrrs  r/test_help_optionzTestLauncher.test_help_option2s({{D6"&7!89r2cdD]\\}}}|j|5|j|g}|j||d|j||dddd^y#1swYixYw)N))rrFalse)-0prr)--listrr)--list-pathsrrzSearchInfo.listzSearchInfo.listPaths)subTestrr)rXoptv1v2r0s     r/test_list_optionzTestLauncher.test_list_option6s
		CKCRc"
C{{C5)  T*;%<=  T*@%AB
C
C
		C
C
Cs=A##A,	c|jdg}i}i}|djD]>}tjd|}|s|j	d||j	d<@t
D]^}t
|}|Dcgc]}t
||ts|}	}|	D]}
d|d|
}||
d||<|jd|d	d`|jD
cic]
\}}
||vs||
}}}
	|j||ycc}wcc}
}w#tjrtd
t|dxYw)Nrrt\s*(.+?)\s+?(\*\s+)?(.+)$r-V:/r	/ignored*** STDOUT ***)rrrematchgrouprrrpopr"assertDictEqualrrr)rXr0foundexpectlinemcompanycompany_datattagsrNargr,r-actuals               r/	test_listzTestLauncher.test_listBs^{{H:&N--/	/D5t<A$%GGAJaggaj!	/!	6G$W-L+Q!z,q/4/PAQDQ
?G9AcU+*3/
>s
?
JJWIX.5
	6$);;=@41aAK!Q$@@	  0RA	&'d8n%s$DD%D2D;D,Ec	||jdg}i}i}|djD]>}tjd|}|s|j	d||j	d<@t
D]x}t
|}|Dcgc]}t
||ts|}	}|	D]/}
d|d|
}||
d}	|d	||<	||xxd
|dzz
cc<1|jd|ddz|jD
cic]
\}
}|
|vs|
|}}
}	|j!||ycc}w#t$rYfwxYw#t$rAtt|dttjjz||<YwxYwcc}}
w#t"j$rt'd
t'|dxYw)Nrrtrrrrrr
rrwrrr)rrrrrrrrKeyErrorr#rr|r}rrr"rrrr)rXr0rrrrrrrrrNrinstallr,r-rs                r/test_list_pathszTestLauncher.test_list_paths[s{{N+,N--/	/D5t<A$%GGAJaggaj!	/!	6G$W-L+Q!z,q/4/PAQDQ

WG9AcU+&s+M:W")*:";F3KssW5J-K'KK

W
JJWIX.5	6"$);;=@41aAK!Q$@@	  0#R$W"%d74=&9D<P<U<U&U"VF3KW
A	&'d8n%sUD(D(6D<?D-?F	F	F-	D96D<8D99D<<AFF,F;cd}|jd|dg}|jd|d|j||d|jd|dy)	Nrrrr
LaunchCommandenv.companyrenv.tagrrXrr0s   r/test_filter_to_companyz#TestLauncher.test_filter_to_company}s_#{{c'!,-.D$9:$}"56$y/2r2cd}|jd|dgtd}|jd|d|j||d	|jd
|dy)Nrrrz3.0)rrrr
rrr)rrrr
s   r/#test_filter_to_company_with_defaultz0TestLauncher.test_filter_to_company_with_defaultsh#{{c'!,-4%3H{ID$9:$}"56$y/2r2cd}|jdg}|jd|d|j||d|jd|d|jdg}|jd	|d|j||d|jd
|d|jdg}|jd|d|j||d|jd
|dy)Nrz-V:3.100rr
rrrz-V:3.100-32rrz-V:3.100-arm64z"X.Y-arm64.exe -X fake_arg_for_testrrr
s   r/test_filter_to_tagzTestLauncher.test_filter_to_tags#{{J<(D$9:$}"56$y/2{{M?+tO'<=$}"56T)_5{{,-.=tO?TU$}"56Y8r2cd}|jd|dgd}|jd|dg}|jd|d|j||d	|jd
|dy)Nrrz/3.1g)rz/3.100rr
rrrrr
s   r/test_filter_to_company_and_tagz+TestLauncher.test_filter_to_company_and_tags}#{{c'$/0C{H{{c'&123D$9:$}"56$y/2r2c6d}|jdgd|id}y)Nrz-V:Nonexistentrrrr)rr
s   r/test_filter_with_single_installz,TestLauncher.test_filter_with_single_installs+${{
.8!
r2c	|jdgd}|jd|d|j
|djd|dy#tj$rtjdwxYw)	N-3Trz(requires at least one Python 3.x install
PythonCorerr3.)rrrrrr
assertTruerrs  r/test_search_major_3z TestLauncher.test_search_major_3s	P;;v$;7D	
tM':;Y2248$y/J,,	P##$NOO	PsA)A<c	|jdgd}|jd|d	|j|d
jd|d
|j|d
jd|d
y#tj$r3tdt	ddDstjdwxYw)
Nz-3-32Trc3:K|]}td|dyw)r-32N)rP).0r9s  r/	<genexpr>z6TestLauncher.test_search_major_3_32.<locals>.<genexpr>sGQ|b3K0Gsz/requires at least one 32-bit Python 3.x installrrrrr#)rrranyrangerrrrrendswithrs  r/test_search_major_3_32z#TestLauncher.test_search_major_3_32s	;;yT;:D
	
tM':;Y2248$y/JY007iI
,,	G%2,GG''(YZZ	sA::ACc	|jdgd}|j
dd|j|djd	|dy#tj$r#tdst	j
dYrwxYw)
N-2Trz2.7z(requires at least one Python 2.x installrrrz2.)	rrrrPrrrrrrs  r/test_search_major_2z TestLauncher.test_search_major_2s	T;;v$;7D	
tM':;Y2248$y/J	,,	T&''(RSS'	TsA3B	B	c|jt5|jdg}ddd|jdd|jd|d|jd|dj	y#1swYWxYw)N-argrSearchInfo.companyrSearchInfo.tagX.Y.exe -argrtrTEST_PY_DEFAULTSrrstriprs  r/test_py_defaultzTestLauncher.test_py_defaults~
[[)
*	);;x(D	)*D1E,FG$'7"89h)=)=)?@		)	)sA??Bc|jt5|jddg}ddd|jdd|jd|d|jd|dj	y#1swYWxYw)	Nr-r0rr1rr2X.Y-32.exe -argrtr4rs  r/test_py2_defaultzTestLauncher.test_py2_defaults
[[)
*	/;;f~.D	/*D1E,FGT*:%;<*DN,@,@,BC		/	/BB	c|jt5|jddg}ddd|jdd|jd|d|jd|dj	y#1swYWxYw)	Nrr0rr1rr2'X.Y-arm64.exe -X fake_arg_for_test -argrtr4rs  r/test_py3_defaultzTestLauncher.test_py3_defaults
[[)
*	/;;f~.D	/*D1E,FG-=(>?BDNDXDXDZ[		/	/r;c|jdgt}|jd|d|jd|d|jd|djy)	Nr0rrr1rr2r3rtrTEST_PY_ENVrr6rs  r/test_py_default_envz TestLauncher.test_py_default_envs`{{F8{5*D1E,FG$'7"89h)=)=)?@r2c|jddgt}|jd|d|jd|d|jd|d	jy)
Nr-r0rrr1rr2r9rtr@rs  r/test_py2_default_envz!TestLauncher.test_py2_default_envsc{{D&>{{;*D1E,FGT*:%;<*DN,@,@,BCr2c|jddgt}|jd|d|jd|d|jd|d	jy)
Nrr0rrr1rr2r=rtr@rs  r/test_py3_default_envz!TestLauncher.test_py3_default_envsc{{D&>{{;*D1E,FG-=(>?BDNDXDXDZ[r2c||jt5dD]}|j|5|jdg|d}|j	d|d|j	d|d|j	d	|d
jddd	dddy#1swYxYw#1swYyxYw)N)z"py.exe"rz"py"py	--versionz
 --versionrrr1rr2zX.Y.exe --versionrt)rr5rrrr6)rXrr0s   r/test_py_default_short_argv0z(TestLauncher.test_py_default_short_argv0s
[[)
*	R=
R\\%(R;;}eWJ;O;PD$$%6=Q8RS$$Wd3C.DE$$%8$x.:N:N:PQ	RR
R	R	RRR	R	Rs#B2A%B&
B2&B/+B22B;c|jdgt}d}|djD]-}tjd|}|s|jd}n|j
d|y)Nrrrtz\s*-V:(.+?)\s+?\*\s+(.+)$rr)rrArrrrr)rXr0defaultrrs     r/test_py_default_in_listz$TestLauncher.test_py_default_in_listsn{{D6{{3N--/	D5t<A''!*		
	
0':r2cF|j5\}}|jdg|}|djD]F}tjd|}|s|jt
||jdn|jd|jdg|}|djD]=}tjd|}|s|jd|jdn|jd	dddy#1swYyxYw)
Nrrrtz
\s*\*\s+(.+)$rzdid not find active venv pathrzActive venvzdid not find active venv entry)	rrrrrrr#rfail)rXrrr0rrs      r/test_virtualenv_in_listz$TestLauncher.test_virtualenv_in_lists
^^
	<(C;;wC;0DX113
;HH-t4$$S]AGGAJ?	
;		9:;;v3;/DX113
<HH-t4$$]AGGAJ?	
<		:;#	<	<	<sADBD5DD c|j5\}}|jgi|ddi}|jdgi|ddi}ddd|jdjt	|j|dd|jdjt	||j|ddy#1swYxYw)NrzPythonTestSuite/3rz-V:PythonTestSuite/3rtzSearchInfo.lowPriorityTagr)rrrr6r#assertNotEqual)rXrrdata1data2s     r/test_virtualenv_with_envz%TestLauncher.test_virtualenv_with_envs
^^
	i(CKK(Q3(Q=P(QKREKK!7 8>g>gkSf>gKhE	i	
x..0#h-@:;VDE(O113S]CE"=>G	i	is7CCcl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
N#! /usr/bin/python -prearg-postargrr1rr2X.Y.exe -prearg 	 -postargrtrr5rrrr6rXrr0s   r/test_py_shebangzTestLauncher.test_py_shebang"s
[[)
*	99:
9f{{FJ#78
9	9	
*D1E,FG$'7"89+F89=tH~?S?S?UV	
9
9	9	9!B*BB*B'	#B**B3cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! python -preargrYrr1rr2rZr[rtr\r]s   r/test_python_shebangz TestLauncher.test_python_shebang*s
[[)
*	901
9V{{FJ#78
9	9	
*D1E,FG$'7"89+F89=tH~?S?S?UV	
9
9	9	9r_cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! /usr/bin/python2 -preargrYrr1rr2X.Y-32.exe -prearg r[rtr\r]s   r/test_py2_shebangzTestLauncher.test_py2_shebang2s
[[)
*	9:;
9v{{FJ#78
9	9	
*D1E,FGT*:%;<.vhi@$x.BVBVBXY	
9
9	9	9r_cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! /usr/bin/python3 -preargrYrr1rr2+X.Y-arm64.exe -X fake_arg_for_test -prearg r[rtr\r]s   r/test_py3_shebangzTestLauncher.test_py3_shebang:s
[[)
*	9:;
9v{{FJ#78
9	9	
*D1E,FG-=(>?FvhiXZ^_gZhZnZnZpq	
9
9	9	9r_cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! /usr/bin/python -prearg
rYrr1rr2rZr[rtr\r]s   r/test_py_shebang_nlzTestLauncher.test_py_shebang_nlBs
[[)
*	9;<
9{{FJ#78
9	9	
*D1E,FG$'7"89+F89=tH~?S?S?UV	
9
9	9	9r_cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! /usr/bin/python2 -prearg
rYrr1rr2rcr[rtr\r]s   r/test_py2_shebang_nlz TestLauncher.test_py2_shebang_nlJs
[[)
*	9<=
9{{FJ#78
9	9	
*D1E,FGT*:%;<.vhi@$x.BVBVBXY	
9
9	9	9r_cl|jt5|jd5}|j|dg}dddddd|j	dd|j	d|d|j	dd|d	jy#1swYcxYw#1swYgxYw)
Nz#! /usr/bin/python3 -prearg
rYrr1rr2rfr[rtr\r]s   r/test_py3_shebang_nlz TestLauncher.test_py3_shebang_nlRs
[[)
*	9<=
9{{FJ#78
9	9	
*D1E,FG-=(>?FvhiXZ^_gZhZnZnZpq	
9
9	9	9r_cx|jt5|jd5}|j|dgd|d}dddddd|j	dd|j	d|d	|j	d
d|djy#1swYcxYw#1swYgxYw)NrXrYz
"py.exe" "z
" -postargrJrr1rr2zX.Y.exe -prearg "rtr\r]s   r/test_py_shebang_short_argv0z(TestLauncher.test_py_shebang_short_argv0Zs
[[)
*	_9:
_f{{FJ#7
6(R\>]{^
_	_	
*D1E,FG$'7"89,VHJ?hAUAUAWX
_
_	_	_s"B0B$B0$B-	)B00B9c|jdjddg5|jgdd}ddd|jdd|jd	|d
y#1swY4xYw)Nrrzpython=3.999-64Tr)rrz3.999-64r2rzSearchInfo.oldStyleTag)rjoinrrrs  r/test_py_handle_64_in_iniz%TestLauncher.test_py_handle_64_in_inicsx
[[L2C#DE
F	K;;rdc;JD	K	
T*:%;<&>!?@		K	KsA++A4cttjj}|j	t
5|j
d|d5}|j|dgdttjjdtjdi}dddddd|jtjddd	jy#1swYIxYw#1swYMxYw
N#! /usr/bin/env z -preargrYrnrorz	 -prearg r[rt)
rr|r}stemrr5rrr~rrrr6rXrvrr0s    r/test_search_pathzTestLauncher.test_search_pathjsCNN#((
[[)
*	/vX>?
6{{Z(D$8$?$?#@"))FBSAT!UV#
		
CNN+9VHIFXH\H\H^_

		$C4AC( C4(C1	-C44C=cttjj}|j	t
5|j
d|d5}|j|dgdttjjdtjdi}dddddd|jtjddd	jy#1swYIxYw#1swYMxYwrt)
rr|r}rrr5rrr~rrrr6)rXrrr0s    r/test_search_path_exez!TestLauncher.test_search_path_exetsCNN#((
[[)
*	/vX>?
6{{Z(D$8$?$?#@"))FBSAT!UV#
		
CNN+9VHIFXH\H\H^_

		ryc|jj}|jt5|j	d|5}|j|gd|jjdtjdi}dddddd|jddjy#1swY8xYw#1swY<xYw)NrurnrorzX.Y.exe rt)rrvrr5rrr~rrrr6rws    r/test_recursive_search_pathz'TestLauncher.test_recursive_search_paths %%
[[)
*	/v67
6{{HDOO$5$<$<#=Qryy?P>Q!RS#
		
8F8,d8n.B.B.DE


		s$CACCC	CCcP|jdgddid}|dj}	tjddgtjtj
	|j
d||j
d|y#t$r|j
d
|Y0wxYw)Nz-V:3.10PYLAUNCHER_ALWAYS_INSTALLrorrtz
winget.exerI)rtruzms-windows-store://9PJPW5LDXLZ5)rr6r
check_callrSTDOUTassertInr^)rXr0cmds   r/test_installzTestLauncher.test_installs{{I;-H#,Nbe{f8n""$	-!!<"=joo^h^o^op
MM,,

nc*!	6MM/5	6s6BB%$B%c|jd5}|j|g}ddd|jddjy#1swY0xYw)Nz#! C:/some_random_app -withargzC:\some_random_app -witharg rt)rrrr6r]s   r/test_literal_shebang_absolutez*TestLauncher.test_literal_shebang_absolutes^
[[9
:	)f;;x(D	)+F84N  "	
	)	)sAAc|jd5}|j|g}ddd|jjjd|dj	y#1swYFxYw)Nz#! ..\some_random_app -withargz\some_random_app -witharg rtrrrr~r6r]s   r/test_literal_shebang_relativez*TestLauncher.test_literal_shebang_relativesn
[[:
;	)v;;x(D	)}}##$$?xHN  "	
	)	)sA**A3c|jd5}|j|g}ddd|jdjd|dj	|jd5}|j|g}ddd|jd|jd||dj	y#1swYxYw#1swYIxYw)Nz#! "some random app" -witharg"z\some random app" -witharg rtz#! some" random "app -withargrr]s   r/test_literal_shebang_quotedz(TestLauncher.test_literal_shebang_quoteds
[[8
9	)V;;x(D	)

:6(CN  "	

[[8
9	)V;;x(D	)

:6(CN  "	
	)	)	)	)sC1CC	Cc|jd5}|j|g}ddd|jdjd|dj	y#1swY=xYw)Nz#! some\" random "app -withargrz\some\ random app" -witharg rtrr]s   r/"test_literal_shebang_quoted_escapez/TestLauncher.test_literal_shebang_quoted_escapesi
[[:
;	)v;;x(D	)

<VHEN  "	
	)	)sA!!A*c|jt5|jd5}|j|g}dddddd|j	ddjy#1swY8xYw#1swY<xYw)Nz#! test-command arg1zTEST_EXE.exe arg1 rt)rTEST_PY_COMMANDSrrrr6r]s   r/test_literal_shebang_commandz)TestLauncher.test_literal_shebang_commands
[[)
*	-34
-{{F8,
-	-	
 )N  "	

-
-	-	-s!A>A2A>2A;	7A>>Bc|jd5}|j|g}dddjdz}|j|d|dj	y#1swYAxYw)Nz#! /usr/bin/not-python arg1z/usr/bin/not-pythonz arg1 rt)rrr~rr6)rXrr0rs    r/%test_literal_shebang_invalid_templatez2TestLauncher.test_literal_shebang_invalid_templatesq
[[6
7	)6;;x(D	)!66hfVH%N  "	
	)	)sA%%A.N)0rgrhrirrrrrrrrrrrrrr r+r.r7r:r>rBrDrFrKrNrQrVr^rardrgrirkrmrorrrxr{r}rrrrrrrrjr2r/rrsOO11
I
:
C2 D339"3
K	JKAD\AD\R;<(	HWWZrWZrYA`	`	F+






r2r)&rr4rrrrr|rzrrpathlibrtestrplatformrr rr}casefoldr*prefixrrrArqr"lowerr5rr1r;rCrPrRrlTestCaser)r,r-s00r/<module>rs		

<<7
(

:
;;
>>%%h&7&7&9:
F+/(jj"+
,jj".
/jj"1'=
?cjj
3B2/jj"%..
	C+
	\%),99)4):):)<=A12q=99
*"$33(x x vs
8$$js
U>s)"F