a „oe1&ć@sŲddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z m Z Gdd„dej ƒZ Gdd„dej ƒZGdd„dej ƒZGd d „d ej ƒZGd d „d ej ƒZGd d„dej ƒZedkrŌe ”dS)éN)Ś TestSkippedŚ str2bytesc@seZdZdd„ZdS)ŚCurrentUserTestCasecCs@t ”}|dkrtdƒ‚d|t ”f}| |t tj””dS)Nz NT AUTHORITYzrunning as service accountz%s\%s)Świn32apiZ GetDomainNamerZ GetUserNameŚ assertEqualZ GetUserNameExZNameSamCompatible)ŚselfŚdomainŚname©r ś9C:\Program Files\Certbot\pkgs\win32\test\test_win32api.pyŚtestGetCurrentUsers z&CurrentUserTestCase.testGetCurrentUserN)Ś__name__Ś __module__Ś __qualname__r r r r r rsrc@s$eZdZdd„Zdd„Zdd„ZdS)ŚTestTimecCsbt ”\}}|tjkr(|d}|d}n|d}|d}| ”t|tjƒs^t|tƒs^| ”dS)Néééé) rZGetTimeZoneInformationŚwin32conZTIME_ZONE_ID_DAYLIGHTŚencodeŚ isinstanceŚdatetimeŚtupleZFormat)rŚrcZtzinfoZtz_strZtz_timer r r Ś testTimezones   ’zTestTime.testTimezonecCsNd}|}t d|d”t d|d”t d|tj ””t d|t ””dS)Nrr)rZ GetDateFormatrŚnowŚtime)rZ DATE_LONGDATEZ date_flagsr r r ŚTestDateFormat+s zTestTime.TestDateFormatcCsFt ddd”t ddd”t ddtj ””t ddt ””dS)Nr)rZ GetTimeFormatrrr©rr r r ŚTestTimeFormat3szTestTime.TestTimeFormatN)r rrrrr r r r r rsrc@s(eZdZdZdd„Zdd„Zdd„ZdS) ŚRegistryzPythonTestHarness\Whateverc sp‡fdd„}zLz4z |ƒWnddYn0Wt tjˆj”nt tjˆj”0WntyjYn0dS)Ncst tjˆj”}dd}dS)Nér)rŚ RegCreateKeyrŚHKEY_CURRENT_USERŚkey_name)ŚhkeyŚxrr r Ś reg_operation?sz%Registry.test1..reg_operationrr)rŚ RegDeleteKeyrr$r%ŚZeroDivisionError)rr(r rr Śtest1=s  ( zRegistry.test1c CsÖd}dtjdfdtjdfdtjdfdtjgd¢fd tjgfd tjd fd tjd fdtjdfdtjtdƒff }t  tj |”}|D]\}}}t  ||d||”q||D]2\}}}t  ||”\}} |  | |”|  ||”qždS)NzPythonTestHarness\win32apizThis is default unnamed valueŚREG_SZzREG_SZ text dataŚ REG_EXPAND_SZz %systemdir%Ś REG_MULTI_SZ)zstring 1zstring 2zstring 3zstring 4ZREG_MULTI_SZ_emptyŚ REG_DWORDišZ REG_QWORD_INTécŚ REG_QWORDlŚ REG_BINARYz )rr,r-r.r/r1r2rrr#r$Z RegSetValueExZRegQueryValueExr) rr%Śvaluesr&Z value_nameZreg_typeŚdataZ orig_typeZ orig_dataŚtypr r r Ś testValuesOs0   ż    żņ zRegistry.testValuescst‡fdd„}t dddd”}t tjdtj|d”t |d”}ˆ |tj k”|ƒt |d”}ˆ |tj k”dS)Nc sNt tjˆj”}z&t |dtjd”Wt tjˆj”nt tjˆj”0dS)NZfoo)rr#rr$r%Z RegSetValuer,r))r&rr r Śchangeqsz)Registry.testNotifyChange..changerrT) Ś win32eventZ CreateEventrZRegNotifyChangeKeyValuerr$ŚREG_NOTIFY_CHANGE_LAST_SETZWaitForSingleObjectŚ assertTrueZ WAIT_TIMEOUTZ WAIT_OBJECT_0)rr7ZevtZret_coder rr ŚtestNotifyChangeps ū  zRegistry.testNotifyChangeN)r rrr%r+r6r;r r r r r!:s!r!c@s$eZdZdd„Zdd„Zdd„ZdS)Ś FileNamescCsČzt}Wnty$tjd}Yn0tj |” ”}t  |” ”}t  |” ”}|  ||kd||f”|  |t  |” ””t  |” ”}|  t|ƒtkdt|ƒf”|  ||kd||f”dS©Nrz4Expected long name ('%s') to be original name ('%s')z#GetLongPathNameW returned type '%s')Ś__file__Ś NameErrorŚsysŚargvŚosŚpathŚabspathŚlowerrŚGetShortPathNameŚGetLongPathNamer:rŚGetLongPathNameWŚtypeŚstr©rŚmeŚfnameZ short_nameŚ long_namer r r ŚtestShortLongPathNamesŽs*  ž  ž žz FileNames.testShortLongPathNamescCsÜzt}Wnty$tjd}Yn0tj |” ”}t  t |ƒ” ”}|  t |t ƒ”t  |” ”}|  ||kd||f”| |t |” ””t |” ”}|  t|ƒt kdt|ƒf”|  ||kd||f”dSr=)r>r?r@rArBrCrDrErrFrJr:rrGrrHrIrKr r r ŚtestShortUnicodeNames„s,  ž  ž žzFileNames.testShortUnicodeNamesc Csddl}d}t t ””}dtj ||”}z| |d”Wn4tj yp}z|j t j kr\‚WYd}~n d}~00zzt  |”}Wn4tj y¶}z|j t j kr¢‚WYd}~n d}~00t  t|ƒ”}| |tj@|”t |”}| | ”| ””W| |”n | |”0dS)NrZśaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaz\\?\)Ś win32filerrHŚtempfileZ gettempdirrBrCŚjoinZCreateDirectoryWŚerrorŚwinerrorZERROR_ALREADY_EXISTSZGetFileAttributesZERROR_FILENAME_EXCED_RANGErJr:rŚFILE_ATTRIBUTE_DIRECTORYrrEZRemoveDirectory)rrQŚbasenameZ long_temp_dirrMZdetailsŚattrrNr r r ŚtestLongLongPathNames¾s(   zFileNames.testLongLongPathNamesN)r rrrOrPrYr r r r r<sr<c@seZdZdd„ZdS)Ś FormatMessagecCs0d}ddg}t tj|dd|”}| |d”dS)NzHello %1, how are you %2?ZMarkZtodayrzHello Mark, how are you today?)rrZrZFORMAT_MESSAGE_FROM_STRINGr)rŚmsgŚinsertsŚresultr r r Śtest_FromStringįsūzFormatMessage.test_FromStringN)r rrr^r r r r rZąsrZc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ŚMisccCs2dddtjfD]}t |”| |t ””qdS)Nrré’’’’)rUZTRUST_E_PROVIDER_UNKNOWNrZ SetLastErrorrZ GetLastError)rr'r r r Śtest_last_errorļs zMisc.test_last_errorcCs| t d”d”dS)Nś é )rrZ VkKeyScanrr r r Ś testVkKeyScanōszMisc.testVkKeyScancCs| t dd”d”dS)Nrbrrc)rrZ VkKeyScanExrr r r ŚtestVkKeyScanExųszMisc.testVkKeyScanExcCs4t ”}| |t”d}| t|ƒt| ”ƒ”dS)N)Z ACLineStatusZ BatteryFlagZBatteryLifePercentZSystemStatusFlagZBatteryLifeTimeZBatteryFullLifeTime)rZGetSystemPowerStatusZassertIsInstanceŚdictrŚsetŚkeys)rZspsZ test_keysr r r ŚtestGetSystemPowerStatusüs zMisc.testGetSystemPowerStatusN)r rrrardrerir r r r r_īsr_Ś__main__)rrBr@rRZunittestrrr8rUZpywin32_testutilrrZTestCaserrr!r<rZr_r Śmainr r r r Śs"  SS