a oe@s&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddlm Z mZddlmZmZmZmZddZdddZddd Zd d ZGd d d ZGdddejZdaddZddZejZddZGdddejZ GdddejZ!ddZ"dS)N)_GetGatewayCount_GetInterfaceCount) LeakTestCase TestLoader TestResult TestRunnercCsPz tWntyYn0t}|r6td|t}|rLtd|dS)Nz.Warning - %d com interface objects still alivez,Warning - %d com gateway objects still alive)sysZ exc_clearAttributeErrorrprintr)cr 3C:\Program Files\Certbot\pkgs\win32com\test\util.py CheckCleans   rc Cs|rt|tr|g}d}|D]}zt|}WntjyHYqYn0z&tj}t|d|}t |d}Wnt yYqYn0t j tjdtjdtjdfg} t j || vrd||f}qqdSzddlm} Wn tytdd } Yn(0z | } Wntjy,d } Yn0| sdd |d} |rR| d |7} ttj| dd dtd|f} |rtd|t | }|rtdt| td|dS)NzCLSID\%sZInprocServer32zpythoncomloader%d%d.dllrz8%r is registered against a different Python version (%s)) IsUserAnAdminzACan't import win32com.shell - no idea if you are an admin or not?FTzF%r isn't registered, but I'm not an administrator who can register it.z" (registration check failed as %s)z%s "%s" --unattended > nul 2>&1zRegistering enginezRegistration command was:z"Registration of engine '%s' failed) isinstancestr pywintypesZIID pythoncom com_errorwinregHKEY_CLASSES_ROOTOpenKey QueryValue WindowsErrorospathbasename__file__r version_infoZwin32com.shell.shellr ImportErrorr winerrorZCO_E_CLASSSTRINGwin32apiZGetModuleFileNamesystem RuntimeError)filenameZprogidsverboseZwhy_notZprogidZclsidZHKCRZhkZdllZok_filesrZis_adminmsgcmdrcr r r RegisterPythonServer"sd           r+c Cs td}|d|}t|}t|d}t|Gdddt}zT|rb|dt ||dur||kr|d||f|s| dd kr|d |WS|y}zLt d |t d |t d t |t d| d||fWYd}~n d}~00dS)NZ win32com_testz > "%s" 2>&1rc@s eZdZdS)z#ExecuteShellCommand..FailedN)__name__ __module__ __qualname__r r r r Failedrsr0zexit code was zExpected output %r (got %r)z!Traceback (most recent call last)rztraceback in program outputzFailed to exec command '%r'z Failed asz** start of program output **z** end of program output **zExecuting '%s' failed as %s) tempfileZmktemprr$openreadstripremove Exceptionrfindr fail) r)testcaseexpected_outputZ tracebacks_okZ output_namer*outputr0whyr r r ExecuteShellCommandfs*      r=c Osdz||i|Wn>tjyP}z$|j|krfuncargskwZdetailsr r r assertRaisesCOM_HRESULTs  $rBc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS) CaptureWritercCsd|_|_|dSN)old_errold_outclearselfr r r __init__s zCaptureWriter.__init__cCs(|tj|_tj|_|t_t_dSrD)rGrstdoutrFstderrrErHr r r captureszCaptureWriter.capturecCs,|jr|jt_d|_|jr(|jt_d|_dSrD)rFrrKrErLrHr r r releases zCaptureWriter.releasecCs g|_dSrD)capturedrHr r r rGszCaptureWriter.clearcCs|j|dSrD)rOappend)rIr(r r r writeszCaptureWriter.writecCs d|jS)N)joinrOrHr r r get_capturedszCaptureWriter.get_capturedcCstd|jdS)NrR )lenrSrOsplitrHr r r get_num_lines_capturedsz$CaptureWriter.get_num_lines_capturedN) r-r.r/rJrMrNrGrQrTrXr r r r rCsrCc@seZdZddZddZdS) LogHandlercCsg|_tj|dSrD)emittedloggingHandlerrJrHr r r rJszLogHandler.__init__cCs|j|dSrD)rZrP)rIrecordr r r emitszLogHandler.emitN)r-r.r/rJr^r r r r rYsrYcCsNttdd}tdur.tdat}t|tt_tjd}g|_ |j |fS)Nloggertestr) getattrwin32com_win32com_loggerr[ZLoggerrYZ addHandlerr_handlersrZ)Zold_logZhandlerr r r setup_test_loggers    recCs(|dusJd|durt`n|t_dS)Nzwho needs this?)rbr_)Z prev_loggerr r r restore_test_loggersrfcOst|i|}t|SrD)_CapturingFunctionTestCaser)r@rAZ real_testr r r CapturingFunctionTestCasesrhc@seZdZdddZddZdS)rgNcCs|dur|}t}|z:tj||t|ddrNttdrN| |W| n | 0| }| |||j rt|dS)NZ do_leak_testsrZgettotalrefcount)ZdefaultTestResultrCrMunittestFunctionTestCase__call__rahasattrrZrun_leak_testsrNrT checkOutputZshowAllr )rIresultwriterr;r r r rks  z#_CapturingFunctionTestCase.__call__cCs*|ddkr&d|}|j||fdS)NZ Tracebackrz,Test output contained a traceback --- %s ---)r7errorsrP)rIr;rnr(r r r rmsz&_CapturingFunctionTestCase.checkOutput)N)r-r.r/rkrmr r r r rgs rgc@s$eZdZddZddZddZdS) ShellTestCasecCs||_||_tj|dSrD)_ShellTestCase__cmd_ShellTestCase__eoriTestCaserJ)rIr)r:r r r rJszShellTestCase.__init__cCst|j||jdSrD)r=rrrsrHr r r runTestszShellTestCase.runTestcCs4d}t|j|kr&|jd|d}n|j}d|S)Nz...zexec: )rVrr)rImaxZcmd_reprr r r __str__s zShellTestCase.__str__N)r-r.r/rJrurxr r r r rqsrqcOstj|i|tdSrD)pywin32_testutiltestmainr)r@rAr r r rzsrz)Nr)Nr)#gcr[rrr1rirrryrr#rbr"rrrrrrrr+r=rBrCr\rYrcrerfrtrhrjrgrqrzr r r r s< G  "