ó {G_Tc @såddlZddlZddlZddlZddlmZejdƒZddlm Z ejdƒddl Ty!ej ej j dƒdZ Wneefk r¶dZ nXejƒd Ze ƒd krÜeneZed8krôeneZd ejƒfZd eZdeZddefddefddefdddddgefddedƒde fddd:efd!dd;e fgZ!ej"r1e!e#d"ƒe#d#ƒefd$e#dƒefd%e#dƒe#dƒe#d&ƒe#dƒgefd'e#d(ƒe#d)ƒddgefg7Z!nd*ej$fd+„ƒYZ%d,e%fd-„ƒYZ&ej'e d.ƒd/e%fd0„ƒYƒZ(ej'ed1ƒd2e%fd3„ƒYƒZ)d4„Z*e+d5kráe s×d6Gd7GHne*ƒndS(<iÿÿÿÿN(t test_supportt threading(tmachinet_winreg(t*s--remoteiitAMD64is Python Test Key [%d] - Delete Mes SOFTWARE\sSOFTWARE\Classes\s Int Valuei-s String ValsA string valuet StringExpandsThe path is %path%s Multi-stringtLotstoftstringtvaluessRaw Datatbinaryitdatas Big Stringtxis Big Binarys Unicode ValsA Unicode valuet UnicodeExpands Multi-unicodetunicodes Multi-mixedtUnicodetandtBaseWinregTestscBsDeZd„Zd„Zed„Zed„Zd„Zd„Z RS(cCs|jttƒdS(N(t delete_treetHKEY_CURRENT_USERt test_key_name(tself((s,/usr/local/lib/python2.7/test/test_winreg.pytsetUp<scCs‹yt||tƒ}Wntk r*dSXxBtroyt|dƒ}Wntk r[PnX|j||ƒq.Wt|ƒt||ƒdS(Ni(tOpenKeytKEY_ALL_ACCESSt WindowsErrortTruetEnumKeyRtCloseKeyt DeleteKey(Rtroottsubkeythkeyt subsubkey((s,/usr/local/lib/python2.7/test/test_winreg.pyRAs    c Cskt|ttdƒ||tƒ}||dƒ}x-tD]%\}}}t||d||ƒq8Wt|ƒ\}} } |j|ddƒ|j| ddƒt|ƒ\}} } |j|ddƒ|j| ttƒdƒt|ƒ} t |ƒyt| ƒ|j dƒWnt k r!nXt|ƒ} |j ƒyt| ƒ|j dƒWnt k rfnXdS( Ns Default valuetsub_keyiis"Not the correct number of sub keyss Not the correct number of valuessAIt appears the CloseKey() function does not close the actual key!sBIt appears the key.Close() function does not close the actual key!( tSetValueRtREG_SZt test_datat SetValueExt QueryInfoKeyt assertEqualtlentintRtfailtEnvironmentErrortClose( Rtroot_keyt CreateKeytkeyR#t value_namet value_datat value_typetnkeystnvaluest since_modt int_sub_keytint_key((s,/usr/local/lib/python2.7/test/test_winreg.pyt_write_test_dataQs4        c Cstt|tƒ}|j|ddƒ||tƒ}||dƒÆ}d}xHyt||ƒ}Wntk rsPnX|j|tdƒ|d}qL|j|ttƒdƒxRtD]J\}} } t||ƒ\} } |j| | dƒ|j| | dƒq´WWdQX|j ƒt |dƒ} |j| dd ƒyt |dƒ|j d ƒWntk renX|j ƒdS( Ns Default values+Registry didn't give back the correct valueR#is&Didn't read back the correct test datais'Didn't read the correct number of itemss!Could not directly read the valuesRead subkey value wrongs2Was able to get a second key when I only have one!( t QueryValueRR)t EnumValueR-tassertInR&R*t QueryValueExR.RR,( RR/RtvalR1R#tindexR R2R3R4tread_valtread_typ((s,/usr/local/lib/python2.7/test/test_winreg.pyt_read_test_datays>         c Cs$t|tdtƒ}t|ddtƒ}x$tD]\}}}t||ƒq1Wt|ƒ\}}} |j|ddƒ|j|ddƒ|jƒt|dƒyt|dƒ|j dƒWnt k rÔnX|jƒt|tƒy t|tƒ}|j dƒWnt k rnXdS(NiR#ssubkey not empty before deletes Deleting the key twice succeededsCould open the non-existent key( RRRR&t DeleteValueR(R)R.RR,R-R( RR/R1R#R2R3R4R5R6R7((s,/usr/local/lib/python2.7/test/test_winreg.pyt_delete_test_data¡s*       cCs+|j|ƒ|j|ƒ|j|ƒdS(N(R:RCRE(RR/((s,/usr/local/lib/python2.7/test/test_winreg.pyt _test_all¿s  ( t__name__t __module__RRR0R:RRCRERF(((s,/usr/local/lib/python2.7/test/test_winreg.pyR:s    ( ( tLocalWinregTestscBs•eZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z e j e dkd ƒd „ƒZd „Zd„Zd„ZRS(cCs|jtƒdS(N(RFR(R((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_registry_worksÆscCsCd„}|jt|ƒd„}|jt|ƒ|jtƒdS(NcSst||dtƒS(Ni(t CreateKeyExR(R1R#((s,/usr/local/lib/python2.7/test/test_winreg.pytÍscSst||dtƒS(Ni(t OpenKeyExtKEY_READ(R1R#((s,/usr/local/lib/python2.7/test/test_winreg.pyRLÐs(R:RRCRE(Rtcketoke((s,/usr/local/lib/python2.7/test/test_winreg.pyt&test_registry_works_extended_functionsÉs   cCsCtdtƒ}|j|jdƒ|jƒ|j|jdƒdS(Ni(tConnectRegistrytNonetHKEY_LOCAL_MACHINEtassertNotEqualthandleR.R)(Rth((s,/usr/local/lib/python2.7/test/test_winreg.pyt,test_connect_registry_to_local_machine_worksÕs cCsd„}|jt|ƒdS(NcSs tdtƒS(Nt abcdefghijkl(RRR(((s,/usr/local/lib/python2.7/test/test_winreg.pyRLÝs(t assertRaisesR(Rtconnect((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_inexistant_remote_registryÜs cCsAtdƒ}|jt|ƒtƒ|j|tjddƒdS(Nu %windir%\testtwindirs\test(tExpandEnvironmentStringsR)ttypeRtostenviron(Rtr((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_expand_environment_stringsàs cCs`y5tdtƒ }|j|jdƒt‚WdQXWn$tk r[|j|jdƒnXdS(Ni(RRRSRTRURVRR)(RRW((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_context_managerås  c s t‰dtjf‡fd†ƒY}|ƒ}|jƒzƒtttdƒj}x`tdƒD]R}t|ƒ\}}}x4t|ƒD]&}t ||ƒ} t || dƒq†Wq^WWdQXWdt ‰|j ƒt ttdtƒ}t|dƒWdQXtttƒXdS(NtVeryActiveThreadcseZ‡fd†ZRS(c setttƒP}t}dd}x6ˆsZ|r7dn|}| }t|dt|ƒq%WWdQXdS(NR iÐtchanging_value(R0RRRR$R%(RR1t use_shortt long_stringts(tdone(s,/usr/local/lib/python2.7/test/test_winreg.pytrunõs  (RGRHRk((Rj(s,/usr/local/lib/python2.7/test/test_winreg.pyReôss\changing_valueièiRf(tFalseRtThreadtstartR0RRtrangeR(R<R;RtjoinRRR( RRetthreadR1t_t num_subkeyst num_valuestttitname((Rjs,/usr/local/lib/python2.7/test/test_winreg.pyttest_changing_valueîs"  # c Cs›dd}zQtttƒ<}t||tdƒt|ƒ\}}}t|dƒWdQXWdtttdtƒ}t ||ƒWdQXt ttƒXdS(NR ii( R0RRR$R%R(RRRR(RRwR1RsRtRu((s,/usr/local/lib/python2.7/test/test_winreg.pyt test_long_keys cCsfyttdƒWnAtk rT}|jtjtjfkrN|jdƒn‚nXttdƒdS(NisMaccess denied to registry key (are you running in a non-interactive session?)( R<tHKEY_PERFORMANCE_DATAtOSErrorterrnotEPERMtEACCEStskipTestR>RS(Rte((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_dynamic_keysiisRequires Windows XPc CsézÔtttƒ}|j|jdƒWdQXtttƒ}|j|jdƒ|jtƒt|ƒWdQX|jtƒt |ƒWdQX|jtƒt |ƒWdQX|jtƒt ttƒWdQXWdt ttƒXdS(Ni( R0RRRURVRRZtNotImplementedErrortDisableReflectionKeytEnableReflectionKeytQueryReflectionKeyt DeleteKeyExR(RtckR1((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_reflection_unsupported,sc CsZzEtttƒ0}|j|jdƒt|ddtdƒWdQXWdtttƒXdS(Nit test_nameI€( R0RRRURVR'RSt REG_DWORDR(RR‡((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_setvalueex_value_range@s  cCsvzatttƒL}|j|jdƒ|jtƒ!t|ddt t dƒƒWdQXWdQXWdt ttƒXdS(NiR‰R?( R0RRRURVRZt TypeErrorR'RSt REG_BINARYt memoryviewR(RR‡((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_setvalueex_with_memoryviewLs ,c Cs•z€tttƒk}|j|jdƒd}t|ddt|ƒt|dƒ\}}|j |tƒ|j ||ƒWdQXWdt ttƒXdS(NiI€R‰( R0RRRURVR'RSRŠR>R)R(RR‡ttest_valtret_valtret_type((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_queryvalueex_return_valueUs(ii(RGRHRJRQRXR\RcRdRxRyRtunittestt skipUnlesstWIN_VERRˆR‹RR“(((s,/usr/local/lib/python2.7/test/test_winreg.pyRIÄs     !  ! sSkipping remote registry teststRemoteWinregTestscBseZd„ZRS(cCs tttƒ}|j|ƒdS(N(RRt REMOTE_NAMERRF(Rt remote_key((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_remote_registry_worksjs(RGRHRš(((s,/usr/local/lib/python2.7/test/test_winreg.pyR—gssx64 specific registry teststWin64WinregTestscBsPeZd„Zejedƒd„ƒZejedƒd„ƒZd„ZRS(cCsnttdƒY}|jt|ƒƒ|jdt|ƒƒ|jdt|ƒƒ|jt|ƒƒWdQXdS(NtSoftware(RRTt assertTrueR…R)RSR„Rƒ(RR1((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_reflection_functionsrs sOS doesn't support reflectionc CsWz<tttdttBƒ~}|j|jdƒtttdttBƒ}|j|jdƒWdQXt|ddt dƒd„}|j t |ƒWdQXtttdtt BƒI}|j|jdƒ|j dt|dƒƒt|ddt dƒWdQXtttdttBƒ }|j dt|dƒƒWdQXWdttttdƒXdS(Nitt32KEYcSstttdttBƒS(Ni(RRttest_reflect_key_nameRNtKEY_WOW64_64KEY(((s,/usr/local/lib/python2.7/test/test_winreg.pyRL‘st64KEY(RKRR¡RtKEY_WOW64_32KEYRURVRR'R%RZRR¢R)R;RNR†(Rt created_keyR1t open_fail((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_reflection|s(     # cCsÛzÀtttdttBƒS}t|ƒ}|jt|ƒtƒ|j |ƒt |ƒ|j t|ƒƒWdQXd„}|j t |ƒtttdttBƒ}|j|jdƒWdQXWdttttdƒXdS(NicSstttdttBƒS(Ni(RMRR¡RNR¢(((s,/usr/local/lib/python2.7/test/test_winreg.pyRL¹s(RKRR¡RR¤R…R)R_tboolt assertFalseRƒRRZRRMRNRURVR†(RR¥tdisabledR¦R1((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_disable_reflection¨s       cCs?|jtƒ}ttdƒWdQX|j|jjdƒdS(Ntsome_value_that_does_not_existi(RZRR;tHKEY_CLASSES_ROOTR)t exceptionR|(Rtctx((s,/usr/local/lib/python2.7/test/test_winreg.pyttest_exception_numbersÆs( RGRHRžR”R•tHAS_REFLECTIONR§R«R°(((s,/usr/local/lib/python2.7/test/test_winreg.pyR›os ,cCstjtttƒdS(N(Rt run_unittestRIR—R›(((s,/usr/local/lib/python2.7/test/test_winreg.pyt test_mainÌs t__main__s)Remote registry calls can be tested usings('test_winreg.py --remote \\machine_name'(iii@iÿ?i@(,R`tsysR|R”ttestRt import_moduleRtplatformRRtargvR@R˜t IndexErrort ValueErrorRStgetwindowsversionR–RRlt WIN64_MACHINER±tgetpidt test_key_baseRR¡RŠR%t REG_EXPAND_SZt REG_MULTI_SZtchrRR&t have_unicodeRtTestCaseRRIR•R—R›R³RG(((s,/usr/local/lib/python2.7/test/test_winreg.pytsV$   !       Š£\