python (3.12.0)

(root)/
lib/
python3.12/
test/
__pycache__/
test_winreg.cpython-312.pyc

ΑeY8ddlZddlZddlZddlZddlZddlZddlmZmZddl	m
Z
mZejddgddl
	ejejjdd	zZej&dd
Zedk(rdnd
Zedkrdnd
Zdej.fzZdezZdezZddefddefddefddefdgdefdgdefdde fd d!d"zefd#d$d%ze fd&d'efg
Z!e
Gd(d)ejDZ#Gd*d+ejDZ$Gd,d-e$Z%ejLed.Gd/d0e$Z'ejLed1Gd2d3e$Z(e)d4k(res	e*d5d6ejVyy#eef$rdZY)wxYw)7N)machine
win32_edition)cpython_only
import_helperwinregwin)required_on)*z--remoteAMD64TF)rz Python Test Key [%d] - Delete Mez	SOFTWARE\zSOFTWARE\Classes\z	Int Value-zQword Valuelw*M	z
String ValzA string valueStringExpandzThe path is %path%zMulti-string)Lotsofstringvaluesz	Multi-nul)rrrzRaw Datasbinarydataz
Big Stringxi?z
Big Binaryxi@uJapanese 日本u	日本語ceZdZdZdZy)
HeapTypeTestscT|jtjtyN)
assertTruegc
is_trackedHKEYTypeselfs D/BuggyBox/python/3.12.0/bootstrap/lib/python3.12/test/test_winreg.pytest_have_gczHeapTypeTests.test_have_gc8s

h/0cp|jtd5dt_dddy#1swYyxYw)N	immutablebar)assertRaisesRegex	TypeErrorrfoor s r"test_immutablezHeapTypeTests.test_immutable;s.

#
#I{
;	! HL	!	!	!s,5N)__name__
__module____qualname__r#r+r$r"rr6s1!r$rcFeZdZdZdZdefdZdefdZd
dZ	d
dZ
dZy	)BaseWinregTestsc8|jttyr)delete_treeHKEY_CURRENT_USER
test_key_namer s r"setUpzBaseWinregTests.setUpBs	
*M:r$c	t||dt}		t|d}|j	|| #t$rYywxYw#t$rYnwxYwt|t
||yNr)OpenKeyKEY_ALL_ACCESSOSErrorEnumKeyr3CloseKey	DeleteKey)r!rootsubkeyhkey	subsubkeys     r"r3zBaseWinregTests.delete_treeGs~	4N;D
#D!,	
T9-
		

	$s 5A	AA	AAsub_keyct|ttd||t}|j|jdk7|||}t
D]\}}}t
||d||t|\}	}
}|j|	dd|j|
ddt|\}	}
}|j|	dd|j|
tt
dt|}t|	t||jdt|}
|j	t|
|jdy#t$rYDwxYw#t$rYywxYw)N
Default valuerrz"Not the correct number of sub keysz Not the correct number of valueszAIt appears the CloseKey() function does not close the actual key!zBIt appears the key.Close() function does not close the actual key!)SetValuer5REG_SZrhandle	test_data
SetValueExQueryInfoKeyassertEquallenintr=failr;Close)r!root_key	subkeystr	CreateKeykeyrC
value_name
value_data
value_typenkeysnvalues	since_modint_sub_keyint_keys              r"_write_test_dataz BaseWinregTests._write_test_dataWsh	=&/B-0

a(C+3<	G.J
Jw
Az:F	G%1$5!w	#GH!%GH$0$9!w	#GH#i.;	=
'l	%II2
3
c(			!II7
8				s$7E/E	EE	E'&E'ct|t}|j|dd||t}|||5}d}		t||}|j|t
vdd|dz},#t$rYnwxYw|j|t
t
dt
D];\}	}
}t||	\}}
|j||
d|j|
|d=	dddn#1swYnxYwjt|d}|j||d		t|d|jd
n#t$rYnwxYw|jy)NrEz+Registry didn't give back the correct valuerrTz&Didn't read back the correct test dataz'Didn't read the correct number of itemsz!Could not directly read the valuezRead subkey value wrongz2Was able to get a second key when I only have one!)
QueryValuer5rL	EnumValuer;rIrMQueryValueExrPr<rO)r!rQrRr9valrTrCindexdatarUrVrWread_valread_typs              r"_read_test_datazBaseWinregTests._read_test_datas=1oF	Hh
.
S)
$	FE$We4D  !2D!IK	

UC	NF
H7@
F2
J
%1':%F"(  :!DF  :!DF	
F	F	F	F(	

3?9.GH	COIIJK					sAC'A*C'*	A63C'5A66A'C''C0#E	E
E
c(t|tdt}t||dt}tD]\}}}t	||t|\}}	}
|j
|dd|j
|	dd|jt||	t|||jd|jt|t	t|t}|jdy#t$rYNwxYw#t$rYywxYw)Nrzsubkey not empty before deletez Deleting the key twice succeededzCould open the non-existent key)r9r5r:rIDeleteValuerKrLrPr>rOr;)r!rQrRrTrCrUrVrWrXrYrZs           r"_delete_test_dataz!BaseWinregTests._delete_test_datash
q.A#y!^<3<	-.J
J,	-%1$9!w	#CD!%EF

#y!	c9%II89			(M*	(M2CII78				s$C6!D6	DD	DDcp|j|||j|||j||yr)r]rgrj)r!rQrRs   r"	_test_allzBaseWinregTests._test_alls2h	2Xy1x3r$ct||dt5}|j|jdk7dddt	||dt5}|j|jdk7dddy#1swYDxYw#1swYyxYw)Nr)rTrCreservedaccess)CreateKeyExr:rrH	OpenKeyEx)r!rTrCckeyokeys     r"_test_named_argsz BaseWinregTests._test_named_argss
S'A .0	.37OODKK1,-	.3!,.	.15OODKK1,-	.	.		.	.	.	.sA6B6A?BN)rC)r,r-r.r6r3rSr]r9rgrjrlrtr/r$r"r1r1@s6;
  4=#,(R3<W&P<4
.r$r1ceZdZdZdZdZdZdZdZdZ	dZ
d	Zd
Ze
jedkdd
ZdZdZdZdZdZy)LocalWinregTestscZ|jt|jtdy)Nu
日本-subkey)rlr4r s r"test_registry_worksz$LocalWinregTests.test_registry_workss()(/:r$cd}|jt|d}|jt||jty)Nc&t||dtSr8)rpr:rTrCs  r"<lambda>zILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>s;sGQ#Or$)rSc&t||dtSr8)rqKEY_READr{s  r"r|zILocalWinregTests.test_registry_works_extended_functions.<locals>.<lambda>s9S'1h#Gr$)r9)r]r4rgrj)r!ckeokes   r"&test_registry_works_extended_functionsz7LocalWinregTests.test_registry_works_extended_functionssFP/3?G.<01r$c`|jtttttyr)rtr4r5r>r s r"test_named_argumentsz%LocalWinregTests.test_named_argumentss /?	#]3r$ctdt}|j|jd|j	|j|jdyr8)ConnectRegistryHKEY_LOCAL_MACHINEassertNotEqualrHrPrLr!hs  r",test_connect_registry_to_local_machine_worksz=LocalWinregTests.test_connect_registry_to_local_machine_workss@D"45AHHa(		1%r$c6d}|jt|y)Nc"tdtS)Nabcdefghijkl)rr4r/r$r"r|zCLocalWinregTests.test_nonexistent_remote_registry.<locals>.<lambda>s/.:KLr$)assertRaisesr;)r!connects  r" test_nonexistent_remote_registryz1LocalWinregTests.test_nonexistent_remote_registrysL'7+r$ctd}|jt|t|j|tj
ddzy)Nz
%windir%\testwindirz\test)ExpandEnvironmentStringsrLtypestrosenviron)r!rs  r"testExpandEnvironmentStringsz-LocalWinregTests.testExpandEnvironmentStringss?$%56a#&BJJx08;<r$c	tdt5}|j|jdt#1swYyxYw#t$r|jjdYywxYwr8)rrrrHr;rLrs  r"test_context_managerz%LocalWinregTests.test_context_managersa	* '9:
a##AHHa0


	*QXXq)	*s#A#5>AA%A)(A)c\
d
G
fddtj}|}|j	ttt
dz5}t
dD]<}t|\}}}t
|D]}t||}	t||	d>	dddd
|jttt
dzttt
y#1swYGxYw#d
|jttt
dzttt
wxYw)NFceZdZfdZy)>LocalWinregTests.test_changing_value.<locals>.VeryActiveThreadcttt5}d}d}s|rdn|}|}t|dt|sdddy#1swYyxYw)NTxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrchanging_value)rSr4r5rFrG)r!rT	use_shortlong_stringsdones     r"runzBLocalWinregTests.test_changing_value.<locals>.VeryActiveThread.run
sZ0-@CC $I"*K"#,C+(1M	 &6B#CCCs$AA
N)r,r-r.r)rsr"VeryActiveThreadrs	
Cr$rz\changing_valueirT)	threadingThreadstartrSr4r5rangerKr`r_joinr>)r!rthreadrT_num_subkeys
num_valuestinamers          @r"test_changing_valuez$LocalWinregTests.test_changing_values
	Cy//	C"#	8,();;=
1@Ct1A1=c1B.KQ":.1(a0"3Q011
1DKKM'7I)IJ'7
1
1DKKM'7I)IJ'7s$C,AC C, C)%C,,?D+c	d}	ttt5}t||tdt|\}}}t
|ddddttdjt|fttty#1swYCxYw#ttdjt|ftttwxYw)Nxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxrr\)	rSr4r5rFrGrKr<r>r)r!rrTrrrs      r"
test_long_keyzLocalWinregTests.test_long_key&s	8,m<
 dFC0-9#->*ZQ
 

'M43H)IJ'7

 
 

'M43H)IJ'7s"B.BBB
B;Cc	ttdttdy#t$rC}|jtjtj
fvr|j
dd}~wwxYw)NrzMaccess denied to registry key (are you running in a non-interactive session?)r)r`HKEY_PERFORMANCE_DATAr;errnoEPERMEACCESskipTestra)r!es  r"test_dynamic_keyz!LocalWinregTests.test_dynamic_key4s`	+Q/	*B/	ww5;;55

PQ		s#	A/>A**A/)rzRequires Windows XPc	ttt5}|j|jddddttt}|j|jd|j
t5t|ddd|j
t5t|ddd|j
t5t|ddd|j
t5tttdddttty#1swYxYw#1swYxYw#1swYxYw#1swYtxYw#1swYNxYw#tttwxYwr8)
rSr4r5rrHr9rNotImplementedErrorDisableReflectionKeyEnableReflectionKeyQueryReflectionKeyDeleteKeyExr>)r!ckrTs   r"test_reflection_unsupportedz,LocalWinregTests.test_reflection_unsupportedBs.	8,m<
2##BIIq1
2+];C

A.""#67
*$S)
*""#67
)#C(
)""#67
("3'
(""#67
>-}=
>
'7
2
2
*
*
)
)
(
(
>
>
'7sE)D-A
E)D9E))E5E)EE);EE)-D62E)9E>E)E
E)EE)E&"E))E?c	ttt5}|j|jdt|ddtddddttty#1swYxYw#tttwxYw)Nr	test_name)rSr4r5rrHrJ	REG_DWORDr>r!rs  r"test_setvalueex_value_rangez,LocalWinregTests.test_setvalueex_value_rangeVsl
	8,m<
I##BIIq12{D)ZH
I
'7	
I
I
'7s"A/0A#A/#A,(A//Bc		ttt5}|jt5t|ddtdt|ddtdddd|jtt|d|jtt|ddddttty#1swY^xYw#1swY*xYw#tttwxYw)Ntest_name_dwordtest_name_qword)rSr4r5r
OverflowErrorrJr	REG_QWORDFileNotFoundErrorrar>rs  r""test_setvalueex_negative_one_checkz3LocalWinregTests.test_setvalueex_negative_one_checkbs		8,m<
Z&&}5Kr#4dIrJr#4dIrJK!!"3\2GXY!!"3\2GXY
Z
'7KK
Z
Z
'7s:CB<'B0AB<C0B9	5B<<CCCc	ttt5}|j|jdd}t|ddt|t|d\}}|j|t|j||dddttty#1swYxYw#tttwxYw)Nrrr)
rSr4r5rrHrJrrarLr>r!rtest_valret_valret_types     r"test_queryvalueex_return_valuez/LocalWinregTests.test_queryvalueex_return_valuess
		8,m<
4##BIIq1%2{D)XF$0[$A!  95  (3

4
'7
4
4
'7#B(A)B?B(B%!B((B>c	ttt5}|j|jdd}t|ddt|t|d\}}|j|t|j||dddttty#1swYxYw#tttwxYw)Nrr)
rSr4r5rrHrJ
REG_BINARYrarLr>rs     r"#test_setvalueex_crash_with_none_argz4LocalWinregTests.test_setvalueex_crash_with_none_args		8,m<
4##BIIq12{Az8D$0[$A!  :6  (3

4
'7
4
4
'7rc	ttt5}|j|jdd}t|ddt|t|d\}}|j|t|j|ddddttty#1swYxYw#tttwxYw)NrzA string with a nullrzA string)
rSr4r5rrHrJrGrarLr>rs     r" test_read_string_containing_nullz1LocalWinregTests.test_read_string_containing_nulls		8,m<
6##BIIq152{Avx@$0[$A!  62  *5

6
'7
6
6
'7rN)r,r-r.rxrrrrrrrrrunittest
skipUnlessWIN_VERrrrrrrr/r$r"rvrvsx;
24&,=
*8@8
0X6)+@A8B8&
88"8 88r$rvzSkipping remote registry testsceZdZdZy)RemoteWinregTestscNttt}|j|yr)rREMOTE_NAMEr4rl)r!
remote_keys  r"test_remote_registry_worksz,RemoteWinregTests.test_remote_registry_workss$[2CD
z"r$N)r,r-r.rr/r$r"rrs#r$rzx64 specific registry testsceZdZdZej
edvddZeje	ddZ
eje	ddZdZy	)
Win64WinregTestscn|jttttttdy)Nr)rTrCrorn)rtr4r5rr:r s r"rz%Win64WinregTests.test_named_argumentss%/?)=)A	7r$)WindowsCoreHeadless	IoTEdgeOSz)APIs not available on WindowsCoreHeadlesscttd5}|jt||j	t||j	t
||jt|dddy#1swYyxYw)NSoftware)r9rrrassertIsNonerr)r!rTs  r"test_reflection_functionsz*Win64WinregTests.test_reflection_functionssr'
4	5OO.s341#672378OO.s34	5	5	5sA)BBzOS doesn't support reflectionc	tttdttz5}|j|jdtttdttz5}|j|jddddt|ddtdd}|jt|dddtttdttz5}|j|jd|jdt|dt|ddtddddtttdttz5}|jdt|ddddt!tttdy#1swYxYw#1swYxYw#1swYxYw#1swYIxYw#t!tttdwxYw)Nrr32KEYcDtttdttzSr8)r9r4test_reflect_key_namer~KEY_WOW64_64KEYr/r$r"r|z2Win64WinregTests.test_reflection.<locals>.<lambda>sG,=,A1,4,F%Hr$64KEY)rpr4rr:KEY_WOW64_32KEYrrHr9rJrGrr;rrLr_r~r)r!created_keyrT	open_fails    r"test_reflectionz Win64WinregTests.test_reflections$	,.0Eq+o=?
6BM##K$6$6:.0Eq+o=?7BE''

A67
;Avw?H	!!'95#
6(*,A1'/9;
8>A##CJJ2  *S"*=>3Avw7

8*,A1!O35
?8;  *S"*=>
?
)+@'
,;77
6
6(
8
8
?
?
)+@'
,sk!G>F!F>4F2)GAF)')GF5-GF	FF&"G)F2.G5F>:GGcz	tttdttz5}t|}|j
t|t|j|t||jt|dddd}|jt|tttdttz5}|j!|j"ddddt%tttdy#1swYxYw#1swY0xYw#t%tttdwxYw)NrcDtttdttzSr8)rqr4rr~rr/r$r"r|z:Win64WinregTests.test_disable_reflection.<locals>.<lambda>s	*;*?*2_*D!Fr$)rpr4rr:rrrLrboolassertFalserrrr;rqr~rrHr)r!rdisabledrrTs     r"test_disable_reflectionz(Win64WinregTests.test_disable_reflections	,.0Eq+o=?	
ABM-k:  h6  *$[1 2; ?@	
AFI
gy1,.CQ#o57
3:=##CJJ2
3
)+@'
,/	
A	
A&
3
3
)+@'
,s<!DA!DADD#DDDDDD:cx|jt5}ttddddy#1swYyxYw)Nsome_value_that_does_not_exist)rrr_HKEY_CLASSES_ROOT)r!ctxs  r"test_exception_numbersz'Win64WinregTests.test_exception_numberss8


0
1	LS(*JK	L	L	Ls09N)
r,r-r.rrskipIfrrrHAS_REFLECTIONrrr
r/r$r"rrs7X__]_(LLNyz5{5X)HI),J),VX)HI,J,:Lr$r__main__z)Remote registry calls can be tested usingz('test_winreg.py --remote \\machine_name'),rrsysrrrplatformrrtest.supportrr
import_modulerargvrcr
IndexError
ValueErrorgetwindowsversionr
WIN64_MACHINErgetpid
test_key_baser5rrrrG
REG_EXPAND_SZREG_MULTI_SZrrITestCaserr1rvrrrr,printmainr/r$r"<module>rs$
+4
H5':((388>>*5a78K
 #


!"1
%	W,%
!6)u3ibiik^C
},
-
=byI(yI&vF*}M8|L&|L'zJc7mvFdElzJV,
	!H%%!!R.h''R.jF8F8R["BC##D#]$AB_L_LC_LDz
9:	<HMMO	o	JKs+F	FF