a „oeð%ã@sddlZddlZddlZddlZddlZz ejZWneyJejZYn0ddl Z ddl Z ddl Z ddl Z ddlmZddlmZddlTddlTGdd„de jjjƒZGdd„de jjjƒZGd d „d e jjjƒZGd d „d e jjjƒZed kre jj ¡dS)éN)Ú str2bytes)Úshell)Ú*c@seZdZdd„Zdd„ZdS)Ú ShellTesterc sêtt dt¡ƒ‰d}t tjdtjtj¡}|  tj ¡}‡fdd„t   ˆ¡Dƒ}tt dt ¡ƒ‰| ‡fdd„t   ˆ¡Dƒ¡|D]T}z| |t¡Wntjy¬Yq€Yn0| d¡\}}| tj¡d}|d7}q€|dkrætdƒdS)Nrcsg|]}tj ˆ|¡‘qS©©ÚosÚpathÚjoin©Ú.0Ún)Údesktoprú8C:\Program Files\Certbot\pkgs\win32com\test\testShell.pyÚ "óz-ShellTester.testShellLink..csg|]}tj ˆ|¡‘qSrrr )Úprogramsrrr$rézJCould not find any links on your desktop or programs dir, which is unusual)ÚstrrZSHGetSpecialFolderPathZ CSIDL_DESKTOPÚ pythoncomZCoCreateInstanceZCLSID_ShellLinkZCLSCTX_INPROC_SERVERZIID_IShellLinkZQueryInterfaceZIID_IPersistFilerÚlistdirZCSIDL_PROGRAMSÚextendZLoadZ STGM_READZ com_errorZGetPathZSLGP_UNCPRIORITYÚprint) ÚselfZnumZ shellLinkZ persistFileÚnamesÚnameÚfnameZfindDataZuncr)rrrÚ testShellLinks0ü   ÿzShellTester.testShellLinkcCs„t ¡}g}|D]}| |t¡}| |¡q| dttBtB¡}g}|D]}| |t¡}| |¡qH|  ¡|  ¡|  ||¡dS©Nr) rZSHGetDesktopFolderZGetDisplayNameOfZ SHGDN_NORMALÚappendZ EnumObjectsZSHCONTF_FOLDERSZSHCONTF_NONFOLDERSZSHCONTF_INCLUDEHIDDENÚsortÚ assertEqual)rZsfZnames_1ÚirÚenumZnames_2rrrÚtestShellFolder5s   ÿ  zShellTester.testShellFolderN)Ú__name__Ú __module__Ú __qualname__rr$rrrrrsrc@s4eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd S) Ú PIDLTestercCs:t |¡}t |¡}| ||¡t |¡}| ||¡dS©N)rÚ PIDLAsStringÚ StringAsPIDLr!)rÚpidlZpidl_strZpidl_rtZ pidl_str_rtrrrÚ_rtPIDLJs     zPIDLTester._rtPIDLcCsB||f}t |¡}t |¡}| ||¡t |¡}| ||¡dSr))rZ CIDAAsStringZ StringAsCIDAr!)rÚparentZkidsZcidaZcida_strZcida_rtZ cida_str_rtrrrÚ_rtCIDAQs     zPIDLTester._rtCIDAcCsxtdƒ}| t tdƒg¡|¡| tdƒg¡| tdƒtdƒtdƒg¡| tdƒdgd¡| ttjd¡dS)NzúúúúiZfoo)rr!rr*r-Ú assertRaisesÚ TypeError)rÚexpectrrrÚtestPIDLYs zPIDLTester.testPIDLcCsb| tdƒgtdƒgg¡| tdƒgtdƒgg¡| tdƒgtdƒgtdƒgtdƒgg¡dS)Nr1r0r2)r/r©rrrrÚtestCIDAcs "ÿzPIDLTester.testCIDAcCstdƒ}| ttj|¡dS)Nz)rr4Ú ValueErrorrr+)rr,rrrÚtestBadShortPIDLjszPIDLTester.testBadShortPIDLN)r%r&r'r-r/r7r9r;rrrrr(Is  r(c@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dS)ÚFILEGROUPDESCRIPTORTestercCsvttjtjƒrNt ¡}|j|jddd}|tjdd}|tjdd}nt  d¡}t  d¡}t  d¡}|||fS)Niè)Ú microsecondr)Zsecondsé é é ) Ú issubclassÚ pywintypesZTimeTypeÚdatetimeÚ win32timezoneZnowÚreplacer=Z timedeltaZTime)rÚctimeÚatimeÚwtimerrrÚ _getTestTimests   z'FILEGROUPDESCRIPTORTester._getTestTimescCsft |g¡}t |¡d}| ¡}| ¡}d|vr8|d=d|vrV| |dd¡|d=| ||¡dS)NrÚdwFlagsÚ cFileNameÚ)rÚFILEGROUPDESCRIPTORAsStringÚStringAsFILEGROUPDESCRIPTORÚcopyr!)rÚfdZ fgd_stringZfd2rrrÚ_testRTs z!FILEGROUPDESCRIPTORTester._testRTcCs‚t g|¡}t dd¡}| ||dt|ƒ…¡| tƒ¡tƒ}t |g|¡}t dd¡}| ||dt|ƒ…¡| |¡dS)Nr"rr)rrMÚstructÚpackr!ÚlenrQÚdict)rZ make_unicodeZfgdÚheaderÚdrrrÚ _testSimple‘s    z%FILEGROUPDESCRIPTORTester._testSimplecCs| d¡dS)NF©rXr8rrrÚtestSimpleBytesœsz)FILEGROUPDESCRIPTORTester.testSimpleBytescCs| d¡dS)NTrYr8rrrÚtestSimpleUnicodeŸsz+FILEGROUPDESCRIPTORTester.testSimpleUnicodec CsFt d¡}| ¡\}}}td|ddtj|||tdd }| |¡dS)Nz&{CD637886-DB8B-4b04-98B5-25731E1495BE}úfoo.txt©ré©éér) rKÚclsidÚsizelÚpointlÚdwFileAttributesÚftCreationTimeÚftLastAccessTimeÚftLastWriteTimeÚ nFileSize)rZMakeIIDrIrUÚwin32conÚFILE_ATTRIBUTE_NORMALÚ sys_maxsizerQ)rrbrFrGrHrWrrrÚ testComplex¢s ÷ z%FILEGROUPDESCRIPTORTester.testComplexc Csœ| ¡\}}}tdddtj|||tddtdddtj|||tddtdddtj|||tddg}t |d¡}t |¡}|D] }|d=q€| ||¡dS) Nr\r]r_r)rKrcrdrerfrgrhrizfoo2.txtu foo©.txtrJ) rIrUrjrkrlrrMrNr!)rrFrGrHrWÚsZd2ÚtrrrÚ testUnicode²sJø ø øë  z%FILEGROUPDESCRIPTORTester.testUnicodeN) r%r&r'rIrQrXrZr[rmrprrrrr<ss  r<c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚFileOperationTestercCs„ddl}tj | ¡d¡|_tj | ¡d¡|_tdƒ|_t |jdƒ}|  |j¡|  ¡zt  |j¡Wntj y~Yn0dS)NrZpywin32_testshellZpywin32_testshell_destzHello fromPythonÚwb)Útempfilerr r Z gettempdirÚsrc_nameÚ dest_namerZ test_dataÚopenÚwriteÚcloseÚunlinkÚerror)rrsÚfrrrÚsetUpÞs   zFileOperationTester.setUpcCs,|j|jfD]}tj |¡r t |¡q dSr))rtrurr Úisfilery)rrrrrÚtearDownìs zFileOperationTester.tearDowncCsbdt|j|jf}t |¡\}}| | ¡| d|¡| tj  |j¡¡| tj  |j¡¡dSr) ZFO_COPYrtrurÚSHFileOperationÚ assertTruer!rr r}©rrnÚrcZabortedrrrÚtestCopyñs   zFileOperationTester.testCopycCsddt|j|jf}t |¡\}}| | ¡| d|¡| tj  |j¡¡| tj  |j¡ ¡dSr) Z FO_RENAMErtrurrr€r!rr r}rrrrÚ testRenameús   zFileOperationTester.testRenamecCsddt|j|jf}t |¡\}}| | ¡| d|¡| tj  |j¡¡| tj  |j¡ ¡dSr) ZFO_MOVErtrurrr€r!rr r}rrrrÚtestMoves   zFileOperationTester.testMovecCsPdt|jdtf}t |¡\}}| | ¡| d|¡| tj  |j¡ ¡dSr) Z FO_DELETErtZFOF_NOCONFIRMATIONrrr€r!rr r}rrrrÚ testDelete sû  zFileOperationTester.testDeleteN) r%r&r'r|r~rƒr„r…r†rrrrrqÝs  rqÚ__main__)rCrrRÚsysrDÚmaxsizerlÚAttributeErrorZmaxintrrBZwin32com.test.utilZwin32comrjZpywin32_testutilrZwin32com.shellrZwin32com.shell.shellconZwin32com.storageconÚtestÚutilZTestCaserr(r<rqr%ZtestmainrrrrÚs,     2*j;