python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_launcher.cpython-311.opt-2.pyc

e	m	ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZddl
mZejdkre
jdddlZdZejdrdZd	d
dejdd
ddejdd
ddejddddddejiddddejejd
dddZedddZdd gd!eDZdd"d#gZd$Zd%Zd&Z d'Z!Gd(d)Z"Gd*d+Z#Gd,d-e
j$e#Z%dS).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]cVg|]&\}}|ddd|'S)N=)lower.0kvs   F/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_launcher.py
<listcomp>r#Ss:===A122===z
[commands]ztest-command=TEST_EXE.exec`fd|D]\}}|||dS)Nct|trXtj||5}|D]\}}|||	ddddS#1swxYwYdSt|t
r$tj||dtj|dStd	|)Nz&don't know how to create data for '{}')

isinstancedictwinregCreateKeyExitemsstr
SetValueExREG_SZ	TypeErrorformat)rootkeyvaluehkeyr r!_create_registry_datas      r"r5z3create_registry_data.<locals>._create_registry_data]seT""		T#D#..
6$!KKMM66DAq))$155556
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6s
#
#	TdCv}eDDDDDDKKERRSSSs(A""A&)A&)r+)r1datar r!r5s    @r"create_registry_datar7\s`
T
T
T
T
T

**1dAq))))**r$c#KtjD]?}	tj||V#t$r}|jdkrYd}~dSd}~wwxYwdS)Ni)	itertoolscountr)EnumKeyOSErrorwinerror)r1iexs   r"	enum_keysr@ms
_

	.q))))))			{c!!	s1
AA
AActjtjz}t|D]c}tj|||5}t|t
|dddn#1swxYwYtj||ddS)Naccess)r)	KEY_WRITEKEY_ENUMERATE_SUB_KEYSlistOpenKeydelete_registry_datar@	DeleteKey)r1keysACCESSr2r4s     r"rHrHws

 =
=FDzz$$
^D#f
5
5
5	8 y777	8	8	8	8	8	8	8	8	8	8	8	8	8	8	8s####$$sA,,A0	3A0	c	*d|d}tjdftjtjftjtjffD]N\}}	tjtj||tj|zdS#t$rYKwxYwdS)NzSoftware\Python\PythonCore\z\InstallPathrrBTF)	r)HKEY_CURRENT_USERHKEY_LOCAL_MACHINEKEY_WOW64_64KEYKEY_WOW64_32KEYCloseKeyrGKEY_READr<)tagr2r1flags    r"is_installedrUs
:
:
:
:C		!1%		"F$:;		"F$:;		
d
	OFN4V_t=STTTUUU44			D	5s
6B
BBc eZdZdZdZdZdS)
PreservePyInicJt||_||_d|_dSN)rpathcontent
_preserved)selfrZr[s   r"__init__zPreservePyIni.__init__s!JJ	r$c	|j|_n#t$r
d|_YnwxYw|j|jddS)Nzutf-16encoding)rZ
read_bytesr\FileNotFoundError
write_textr[r]s r"	__enter__zPreservePyIni.__enter__sg	#"i2244DOO 	#	#	#"DOOO	#	T\H=====s!55c|j|jdS|j|jdSrY)r\rZunlinkwrite_bytes)r]exc_infos  r"__exit__zPreservePyIni.__exit__sB?"II!!$/22222r$N)__name__
__module____qualname__r^rfrkr$r"rWrWsA
>>>33333r$rWc~eZdZdZedZdZddZdZe	j
dd	Ze	j
d
ZdS)
RunPyMixinNcd}tjr'ttjjtz}n[tjd	dD]1}|r-t|tz}|
rn2d}|r	tj|dgtj
tj
tj
dd5}|jt!|jddd	d
}|j|ddddn#1swxYwYtj|sd}n#t0$rd}YnwxYw|s,t3jdt|S)
NPATH;-hasciiignore)stdinstdoutstderrraerrorsrr 
zcannot locate '{}' for test)	sysconfigis_python_buildrsys
executableparentPY_EXEosgetenvsplitis_file
subprocessPopenPIPErxclosenextry
splitlines
rpartitionreadwaitversion
startswithr<unittestSkipTestr0)clspy_exeprs    r"find_pyzRunPyMixin.find_pys$&&		#.))069FFYv&&,,S11

!!WWv-F~~''	
%TN$/%?%?$#
GMMOOO"18T22==??BMMcRRSTUGHMMOOOFF2JJJ{--g66"!F



	#-44V<<

s7:FBE0$F0E44F7E48$FF,+F,cP|js||_|jSrY)rrres r"
get_py_exezRunPyMixin.get_py_exes#{	),,..DK{r$Frc
|js||_hd
i
fdtjDddddd|piD}|s
|jg|}tj|||jt
jt
jt
j5}|j	|
d|j
d	d
}|j
dd
}dddn#1swxYwY|j|krpt jrd|sbt%dt%|jg|t%d
t%|t%dt%||r/|j|kr$tj|j|jg||||||jd|D}	||	d<||	d<|	S)N>rrrVIRTUAL_ENVcli|]0\}}|v||1Sroupper)rr r!rws   r"
<dictcomp>z%RunPyMixin.run_py.<locals>.<dictcomp>s9VVV1aggiiv>U>Uqwwyy!>U>U>Ur$1)PYLAUNCHER_DEBUGPYLAUNCHER_DRYRUNPYLAUNCHER_LIMIT_TO_COMPANYc>i|]\}}||Srorrs   r"rz%RunPyMixin.run_py.<locals>.<dictcomp>s&<<<1qwwyy!<<<r$)envrrxryrzr~utf-8replacervz
++ COMMAND ++z++ STDOUT ++z++ STDERR ++ci|]b}|dsKd|v|dd|ddcS)#:rr})r	partitionlstrip)rss  r"rz%RunPyMixin.run_py.<locals>.<dictcomp>so


<<$$
*-
KKQS!1!1!!4!;!;!=!=)1r$ryrz)rrrenvironr+rrrrxrrryrdecoderz
returncoderverboseprintCalledProcessErrorassertEqualr)r]argsr
allow_failexpect_returncodeargvrouterrr6rws          @r"run_pyzRunPyMixin.run_pys{	),,..DKIII
VVVV
(8(8(:(:VVV
 #!$+-	



=<(9(9(;(;<<<
	(K'$'D

{/??



	=
GMMOOO
FF2JJJ(--//(()<<C(--//(()<<C	=	=	=	=	=	=	=	=	=	=	=	=	=	=	=
<,,,,,/"""4;&&'''.!!!#JJJ.!!!#JJJ	>!,*;;;/t{>RT>RTWY\]]].===

^^%%



XXsB	EEEctjd}|stjdtt
|dz|S)NLOCALAPPDATAz5LOCALAPPDATA environment variable is missing or emptyzpy.ini)rrgetrrrWr)r]r[
local_appdatas   r"py_inizRunPyMixin.py_inisT
~66
	8#%788
8T-008;WEEEr$rc#Kttjtjdz}|||	|V|dS#|wxYw)N)dirz.pyr`)rtempfilemktemprgetcwdrdrh)r]r[rafiles    r"scriptzRunPyMixin.scriptsrHO	444u<==(333	JJJKKMMMMMDKKMMMMsA++Bc#^Ktjdz}|dd|ttjjz}|	|dt|jifVtj
|dS#tj
|wxYw)NScriptsT)exist_okparentsr)rcwdmkdirrrnametouchr,rshutilrmtree)r]venvvenv_exes   r"	fake_venvzRunPyMixin.fake_venvsxzzI%

D$
///4//44	 ]C,<,<=====M$FM$s&BB,)NFrN)r)
rlrmrnrclassmethodrrrr
contextlibcontextmanagerrrror$r"rqrqs
F&&[&P
,,,,\FFF     r$rqc6eZdZedZedZdZdZdZdZ	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/d-S).TestLauncherctjtjd5}t|tdddn#1swxYwYt
jrtjd}dSdS)NSoftware\Pythonz!reg query HKCU\Software\Python /s)	r)	CreateKeyrMr7	TEST_DATArrrcheck_output)rr2rs   r"
setUpClasszTestLauncher.setUpClasss

f68K
L
L	1PS i000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1?	O'(MNNAAA	O	OsAA	Actjtjdtjtjz5}t|tddddS#1swxYwYdS)NrrB)r)rGrMrDrErHr)rr2s  r"
tearDownClasszTestLauncher.tearDownClass(s
^F46IRXRbekfCSCDDD	1HK i000	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1	1sAA #A c|dg}||jt|d|tjdd|ddS)N-0argv0r|rr)rrrrrrrr]r6s  r"test_versionzTestLauncher.test_version.sn{{D6""d4=&9&9:::..s33A6YHHHHHr$cj|dg}|d|ddS)NruTruezSearchInfo.helprrrs  r"test_help_optionzTestLauncher.test_help_option3s7{{D6""&7!899999r$cdD]\}}}||5||g}|||d|||ddddn#1swxYwYdS)N))rrFalse)-0prr)--listrr)--list-pathsrrzSearchInfo.listzSearchInfo.listPaths)subTestrr)r]optv1v2r6s     r"test_list_optionzTestLauncher.test_list_option7s
		C		CKCRc""
C
C{{C5))  T*;%<===  T*@%ABBB
C
C
C
C
C
C
C
C
C
C
C
C
C
C
C
		C		CsAA99A=	A=	c
|dg}i}i|dD]D}tjd|}|r+|d||d<Et
D]U}t
|

fd
D}|D]}d|d|}
|d	|<d|d
dVfd|D}		||	dS#tj
r$tdt|dxYw)
Nrry\s*(.+?)\s+?(\*\s+)?(.+)$rcJg|]}t|t| Sror'r(rtcompany_datas  r"r#z*TestLauncher.test_list.<locals>.<listcomp>M,QQQ!z,q/4/P/PQAQQQr$-V:/r	/ignoredc$i|]\}}|v	||
Srororr r!expects   r"rz*TestLauncher.test_list.<locals>.<dictcomp>S$@@@41aAKK!QKKKr$*** STDOUT ***)rrrematchgrouprpopr+assertDictEqualrrr)r]r6foundlinemcompanytagsrSargactualrrs          @@r"	test_listzTestLauncher.test_listCs{{H:&&N--//	/	/D5t<<A
/$%GGAJJaggajj! 	6	6G$W-LQQQQ|QQQD
?
?+G++c++*3/
>sJJ.W...5555@@@@5;;==@@@	  00000	
&&'''d8n%%%s:D3Ec	|dg}i}i|dD]D}tjd|}|r+|d||d<Et
D]}t
|fdD}|D]}d|d|}|d	}		|	d
|<	|xxd|	dzz
cc<n#t$rYnwxYwP#t$rGtt|	dttj
jz|<YwxYwd|d
dވfd|
D}
	||
dS#tjr$t#dt#|dxYw)NrryrrrcJg|]}t|t| Srorrs  r"r#z0TestLauncher.test_list_paths.<locals>.<listcomp>frr$rrr
rr|rrc$i|]\}}|v	||
Srorors   r"rz0TestLauncher.test_list_paths.<locals>.<dictcomp>urr$r)rrr	r
rrKeyErrorr,rrrrrr+r
rrr)
r]r6rrrrrrSrinstallrrrs
           @@r"test_list_pathszTestLauncher.test_list_paths\s/{{N+,,N--//	/	/D5t<<A
/$%GGAJJaggajj! 	6	6G$W-LQQQQ|QQQD

W

W+G++c++&s+M:W")*:";F3KssW5J-K'KK#WWW"%d74=&9&9D<P<P<U&U"V"VF3KKKW
JJ.W...5555@@@@5;;==@@@	  00000	
&&'''d8n%%%sC;C2C! C2!
C.+C2-C..C22AEEF3G
cd}|d|dg}|d|d|||d|d|ddS)	Nrrrr
LaunchCommandenv.companyrenv.tagrr]rr6s   r"test_filter_to_companyz#TestLauncher.test_filter_to_company~s}#{{,',,,-..D$9:::$}"5666$y/22222r$cd}|d|dgtd}|d|d|||d	|d
|ddS)Nrrrz3.0)rrrrrrr)rr(rr s   r"#test_filter_to_company_with_defaultz0TestLauncher.test_filter_to_company_with_defaults#{{,',,,-4%3H3H3H{IID$9:::$}"5666$y/22222r$cd}|dg}|d|d|||d|d|d|dg}|d	|d|||d|d
|d|dg}|d|d|||d|d
|ddS)Nrz-V:3.100rrrrrz-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:#{{K=))D$9:::$}"5666$y/222{{N+,,tO'<===$}"5666T)_555{{-.//=tO?TUUU$}"5666Y88888r$cd}|d|dgd}|d|dg}|d|d|||d	|d
|ddS)Nrrz/3.1g)rz/3.100rrrrrrr s   r"test_filter_to_company_and_tagz+TestLauncher.test_filter_to_company_and_tags#{{/'///0C{HH{{1'111233D$9:::$}"5666$y/22222r$c@d}|dgd|id}dS)Nrz-V:Nonexistentrr(rr)rr s   r"test_filter_with_single_installz,TestLauncher.test_filter_with_single_installs4${{
.8!

r$c*	|dgd}n'#tj$rtjdwxYw|d|d||dd|ddS)	N-3Trz(requires at least one Python 3.x install
PythonCorerr3.)rrrrrr
assertTruerrs  r"test_search_major_3z TestLauncher.test_search_major_3s	P;;v$;77DD,	P	P	P#$NOOO	PtM':;;;Y22488$y/JJJJJs$?c	|dgd}nO#tj$r=tdt	ddDstjdwxYw|d|d	||d
	d|d
||d

d|d
dS)
Nz-3-32Tr/c3<K|]}td|dVdS)r1-32N)rU)rr>s  r"	<genexpr>z6TestLauncher.test_search_major_3_32.<locals>.<genexpr>s2GGQ|KKKK00GGGGGGr$z/requires at least one 32-bit Python 3.x installr0rrr1r6)rrranyrangerrrr2rendswithrs  r"test_search_major_3_32z#TestLauncher.test_search_major_3_32s	;;yT;::DD,			GG%2,,GGGGG
['(YZZZ		
tM':;;;Y22488$y/JJJY0077iIIIIIs
AA'cL	|dgd}n8#tj$r&tdst	jdYnwxYw|d|d||dd	|ddS)
N-2Tr/z2.7z(requires at least one Python 2.x installr0rrz2.)	rrrrUrrrr2rrs  r"test_search_major_2z TestLauncher.test_search_major_2s	T;;v$;77DD,	T	T	T&&
T'(RSSS
T
T	T	
tM':;;;Y22488$y/JJJJJs2AAcb|t5|dg}dddn#1swxYwY|d|d|d|d|d|ddS)N-argrSearchInfo.companyrSearchInfo.tagX.Y.exe -argryrTEST_PY_DEFAULTSrrstriprs  r"test_py_defaultzTestLauncher.test_py_defaults
[[)
*
*	)	);;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)*D1E,FGGG$'7"8999h)=)=)?)?@@@@@s>AAcd|t5|ddg}dddn#1swxYwY|d|d|d|d|d|ddS)	Nr?rBrrCrrDX.Y-32.exe -argryrFrs  r"test_py2_defaultzTestLauncher.test_py2_defaults
[[)
*
*	/	/;;f~..D	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/*D1E,FGGGT*:%;<<<*DN,@,@,B,BCCCCC?AAcd|t5|ddg}dddn#1swxYwY|d|d|d|d|d|ddS)	Nr.rBrrCrrD'X.Y-arm64.exe -X fake_arg_for_test -argryrFrs  r"test_py3_defaultzTestLauncher.test_py3_defaults
[[)
*
*	/	/;;f~..D	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/*D1E,FGGG-=(>???BDNDXDXDZDZ[[[[[rMc|dgt}|d|d|d|d|d|ddS)	NrBr#rrCrrDrEryrTEST_PY_ENVrrHrs  r"test_py_default_envz TestLauncher.test_py_default_envs~{{F8{55*D1E,FGGG$'7"8999h)=)=)?)?@@@@@r$c|ddgt}|d|d|d|d|d|d	dS)
Nr?rBr#rrCrrDrKryrRrs  r"test_py2_default_envz!TestLauncher.test_py2_default_envs{{D&>{{;;*D1E,FGGGT*:%;<<<*DN,@,@,B,BCCCCCr$c|ddgt}|d|d|d|d|d|d	dS)
Nr.rBr#rrCrrDrOryrRrs  r"test_py3_default_envz!TestLauncher.test_py3_default_envs{{D&>{{;;*D1E,FGGG-=(>???BDNDXDXDZDZ[[[[[r$c|t5dD]}||5|dg|d}|d|d|d|d|d	|d
dddn#1swxYwY	ddddS#1swxYwYdS)N)z"py.exe"rz"py"py	--versionz
 --versionrrrCrrDzX.Y.exe --versionry)rrGrrrrH)r]rr6s   r"test_py_default_short_argv0z(TestLauncher.test_py_default_short_argv0s
[[)
*
*	S	S=
S
S\\%((SS;;}e;O;O;O;PPD$$%6=Q8RSSS$$Wd3C.DEEE$$%94>;O;O;Q;QRRR	SSSSSSSSSSSSSSS
S	S	S	S	S	S	S	S	S	S	S	S	S	S	S	S	S	S	Ss5CBC7CCC
CCC!$C!c|dgt}d}|dD]0}tjd|}|r|d}n1|d|dS)Nrr#ryz\s*-V:(.+?)\s+?\*\s+(.+)$rr)rrSrr	r
rr)r]r6defaultrrs     r"test_py_default_in_listz$TestLauncher.test_py_default_in_lists{{D6{{33N--//		D5t<<A
''!**
	
0':::::r$c|5\}}|dg|}|dD]Q}tjd|}|r8|t
||dnR|d|dg|}|dD]D}tjd|}|r+|d|dnE|d	ddddS#1swxYwYdS)
Nrr#ryz
\s*\*\s+(.+)$rzdid not find active venv pathrzActive venvzdid not find active venv entry)	rrrr	r
rr,rfail)r]rrr6rrs      r"test_virtualenv_in_listz$TestLauncher.test_virtualenv_in_lists
^^

	<(C;;wC;00DX1133
;
;H-t44$$S]]AGGAJJ???E		9:::;;v3;//DX1133
<
<H-t44$$]AGGAJJ???E		:;;;#	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<	<sD)EEEc6|5\}}|gi|ddi}|dgi|ddi}dddn#1swxYwY||dt	|||dd||dt	|||dddS)NrzPythonTestSuite/3r#z-V:PythonTestSuite/3ryzSearchInfo.lowPriorityTagr)rrrrHr,assertNotEqual)r]rrdata1data2s     r"test_virtualenv_with_envz%TestLauncher.test_virtualenv_with_envs`
^^

	i(CKK(Q3(Q=P(Q(QKRREKK!7 8>g>gkSf>g>gKhhE	i	i	i	i	i	i	i	i	i	i	i	i	i	i	i	
x..00#h--@@@:;VDDDE(O1133S]]CCCE"=>GGGGGs?A  A$'A$c|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
N#! /usr/bin/python -prearg-postargrrCrrDX.Y.exe -prearg 	 -postargryrrGrrrrHr]rr6s   r"test_py_shebangzTestLauncher.test_py_shebang#sX
[[)
*
*	9	99::
9f{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGG$'7"8999=F===tH~?S?S?U?UVVVVV4A,A	A,A	A,A	A,,A03A0c|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! python -preargrkrrCrrDrlrmryrnros   r"test_python_shebangz TestLauncher.test_python_shebang+sX
[[)
*
*	9	9011
9V{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGG$'7"8999=F===tH~?S?S?U?UVVVVVrqc|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! /usr/bin/python2 -preargrkrrCrrDX.Y-32.exe -prearg rmryrnros   r"test_py2_shebangzTestLauncher.test_py2_shebang3sX
[[)
*
*	9	9:;;
9v{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGGT*:%;<<<@v@@@$x.BVBVBXBXYYYYYrqc|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! /usr/bin/python3 -preargrkrrCrrD+X.Y-arm64.exe -X fake_arg_for_test -prearg rmryrnros   r"test_py3_shebangzTestLauncher.test_py3_shebang;s[
[[)
*
*	9	9:;;
9v{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGG-=(>???XvXXXZ^_gZhZnZnZpZpqqqqqrqc|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! /usr/bin/python -prearg
rkrrCrrDrlrmryrnros   r"test_py_shebang_nlzTestLauncher.test_py_shebang_nlCsX
[[)
*
*	9	9;<<
9{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGG$'7"8999=F===tH~?S?S?U?UVVVVVrqc|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! /usr/bin/python2 -prearg
rkrrCrrDrurmryrnros   r"test_py2_shebang_nlz TestLauncher.test_py2_shebang_nlKsX
[[)
*
*	9	9<==
9{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGGT*:%;<<<@v@@@$x.BVBVBXBXYYYYYrqc|t5|d5}||dg}dddn#1swxYwYdddn#1swxYwY|d|d|d|d|d|d|d	dS)
Nz#! /usr/bin/python3 -prearg
rkrrCrrDrxrmryrnros   r"test_py3_shebang_nlz TestLauncher.test_py3_shebang_nlSs[
[[)
*
*	9	9<==
9{{FJ#788
9
9
9
9
9
9
9
9
9
9
9
9
9
9
9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	9	
*D1E,FGGG-=(>???XvXXXZ^_gZhZnZnZpZpqqqqqrqc|t5|d5}||dgd|d}dddn#1swxYwYdddn#1swxYwY|d|d|d|d	|d
|d|ddS)Nrjrkz
"py.exe" "z
" -postargr\rrCrrDzX.Y.exe -prearg "ryrnros   r"test_py_shebang_short_argv0z(TestLauncher.test_py_shebang_short_argv0[s
[[)
*
*	_	_9::
_f{{FJ#7>]6>]>]>]{^^
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_	_	_	_	_	_	_	_	_	_	_	_	_	_	_	_	
*D1E,FGGG$'7"8999?V???hAUAUAWAWXXXXXs4A2AA2A	A2"A	#A22A69A6c*|dddg5|gdd}dddn#1swxYwY|d|d|d	|d
dS)Nrrzpython=3.999-64Tr()rrz3.999-64rDrzSearchInfo.oldStyleTag)rjoinrrrs  r"test_py_handle_64_in_iniz%TestLauncher.test_py_handle_64_in_inids
[[L2C#DEE
F
F	K	K;;rdc;JJD	K	K	K	K	K	K	K	K	K	K	K	K	K	K	K	
T*:%;<<<&>!?@@@@@sAAAc ttjj}|t
5|d|d5}||dgdttjjdtj
di}dddn#1swxYwYdddn#1swxYwY|tjd|d|d	dS
N#! /usr/bin/env z -preargrkrsrtr#z	 -prearg rmry)
rrrstemrrGrrrrrrrHr]rrr6s    r"test_search_pathzTestLauncher.test_search_pathkszCN##(
[[)
*
*		>>>>??
6{{Z(D$8$8$?!U!U")FBSBS!U!UV#














																
CNFFVFFFXH\H\H^H^_____6CAB."C.B2	2C5B2	6CC	C	c ttjj}|t
5|d|d5}||dgdttjjdtj
di}dddn#1swxYwYdddn#1swxYwY|tjd|d|d	dSr)
rrrrrrGrrrrrrrH)r]rrr6s    r"test_search_path_exez!TestLauncher.test_search_path_exeuszCN##(
[[)
*
*		>>>>??
6{{Z(D$8$8$?!U!U")FBSBS!U!UV#














																
CNFFVFFFXH\H\H^H^_____rc|j}|t5|d|5}||gd|jdtjdi}dddn#1swxYwYdddn#1swxYwY|	d||d
dS)Nrrsrtr#zX.Y.exe ry)rrrrGrrrrrrrHrs    r"test_recursive_search_pathz'TestLauncher.test_recursive_search_pathsj  %
[[)
*
*		66677
6{{HDOO$5$5$<!R!Rry?P?P!R!RS#














																
,F,,d8n.B.B.D.DEEEEEs6B9
A	B"B9"B&	&B9)B&	*B99B=B=cr|dgddid}|d}	tjddgtjtj	|d|n&#t$r|d
|YnwxYw|d|dS)Nz-V:3.10PYLAUNCHER_ALWAYS_INSTALLror+ryz
winget.exer[)ryrzzms-windows-store://9PJPW5LDXLZ5)rrHr
check_callrSTDOUTassertInrc)r]r6cmds   r"test_installzTestLauncher.test_installs{{I;-H#,Nbe{ff8n""$$	-!<"=jo^h^opppp
MM,,,,,!	6	6	6MM/55555	6
	


nc*****s-A;; BBc|d5}||g}dddn#1swxYwY|d||ddS)Nz#! C:/some_random_app -withargzC:\some_random_app -witharg ry)rrrrHros   r"test_literal_shebang_absolutez*TestLauncher.test_literal_shebang_absolutes
[[:
;
;	)v;;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)4F44N  ""	
	
	
	
	

9==c|d5}||g}dddn#1swxYwY||jjd||ddS)Nz#! ..\some_random_app -withargz\some_random_app -witharg ryrrrrrHros   r"test_literal_shebang_relativez*TestLauncher.test_literal_shebang_relatives
[[;
<
<	);;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)}#HHHHN  ""	
	
	
	
	
rc|d5}||g}dddn#1swxYwY|d|jd||d|d5}||g}dddn#1swxYwY|d|jd||ddS)Nz#! "some random app" -witharg"z\some random app" -witharg ryz#! some" random "app -withargrros   r"test_literal_shebang_quotedz(TestLauncher.test_literal_shebang_quoteds~
[[9
:
:	)f;;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)C
CC6CCN  ""	
	
	

[[9
:
:	)f;;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)C
CC6CCN  ""	
	
	
	
	
s9==B55B9<B9c|d5}||g}dddn#1swxYwY|d|jd||ddS)Nz#! some\" random "app -withargrz\some\ random app" -witharg ryrros   r""test_literal_shebang_quoted_escapez/TestLauncher.test_literal_shebang_quoted_escapes
[[;
<
<	);;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)E
EEVEEN  ""	
	
	
	
	
rcR|t5|d5}||g}dddn#1swxYwYdddn#1swxYwY|d||ddS)Nz#! test-command arg1zTEST_EXE.exe arg1 ry)rTEST_PY_COMMANDSrrrrHros   r"test_literal_shebang_commandz)TestLauncher.test_literal_shebang_commands$
[[)
*
*	-	-344
-{{F8,,
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	-	
)))N  ""	
	
	
	
	
s4A+AA+A	A+A	A++A/2A/c|d5}||g}dddn#1swxYwY|jdz}||d||ddS)Nz#! /usr/bin/not-python arg1z/usr/bin/not-pythonz arg1 ry)rrrrrH)r]rr6rs    r"%test_literal_shebang_invalid_templatez2TestLauncher.test_literal_shebang_invalid_templates
[[6
7
7	)6;;x((D	)	)	)	)	)	)	)	)	)	)	)	)	)	)	)!66%%V%%N  ""	
	
	
	
	
rN)0rlrmrnrrrrrrrrr!r$r&r)r,r3r=r@rIrLrPrTrVrXr]r`rcrhrprsrvryr{r}rrrrrrrrrrrrrror$r"rrs
OO[O11[1
III
:::
C
C
C2   D333333999"333


KKK	J	J	JKKKAAADDD\\\AAADDD\\\SSS;;;<<<(	H	H	HWWWWWWZZZrrrWWWZZZrrrYYYAAA```	`	`	`	F	F	F+++






















r$r)&rr9rr	rrrrrtextwraprpathlibrtestrplatformrr)rrcasefoldr<prefixrr(rSrr+rGrr7r@rHrUrWrqTestCaserror$r"<module>rs*								







<7
(
:
;
;;



>%%h&7&7&9&9::
F+/(j"+

,j".

/j"1'=

?cj

3B2/j"%.

		C+
+
	\d%),99==):):)<)<===99
***"$$$33333333(x x x x x x x x vs
s
s
s
s
8$js
s
s
s
s
r$