
    	h                      ^   S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJrJr  S rSS jr  SS jrS r " S S5      r " S	 S
\ R&                  5      rSqS rS r\R0                  rS r " S S\R4                  5      r " S S\R0                  5      rS rg)    N)_GetGatewayCount_GetInterfaceCountc                      [        5       n U (       a  [        SU -  5        [        5       n U (       a  [        SU -  5        g g )Nz.Warning - %d com interface objects still alivez,Warning - %d com gateway objects still alive)r   printr   )cs    eC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32com/test/util.py
CheckCleanr	      s;     	A>BCA<q@A 	    c                    U(       Ga  [        U[        5      (       a  U/nS nU H  n [        R                  " U5      n [        R                  n[        R                  " USU-  5      n[        R                  " US5      n[        R                  R                  [        R                  5      S[        R                   R"                  [        R                   R$                  4-  /n	[        R                  R                  U5      U	;  d  M  SR'                  UU5      n  O   g  SSKJn
   U
" 5       nU(       d>  S
US   -  nW(       a  USU-  -  n[        R
                  " [0        R2                  US S5      e[4        R6                  " S5       SU  S3nU(       a  [/        SU 5        [        R8                  " U5      nU(       a$  [/        S5        [/        U5        [;        SU -  5      eg ! [        R
                   a       M  f = f! [         a       M  f = f! [        R
                   a    Sn Nf = f! [,         a    [/        S5        S	n GNf = f)NzCLSID\%sInprocServer32zpythoncomloader%d%d.dllz:{!r} is registered against a different Python version ({})r   )IsUserAnAdminTzACan't import win32com.shell - no idea if you are an admin or not?FzF%r isn't registered, but I'm not an administrator who can register it.z"
(registration check failed as %s)z "z" --unattended > nul 2>&1zRegistering enginezRegistration command was:z"Registration of engine '%s' failed)
isinstancestr
pywintypesIID	pythoncom	com_errorwinregHKEY_CLASSES_ROOTOpenKey
QueryValueOSErrorospathbasename__file__sysversion_infomajorminorformatwin32com.shell.shellr   ImportErrorr   winerrorCO_E_CLASSSTRINGwin32apiGetModuleFileNamesystemRuntimeError)filenameprogidsverbosewhy_notprogidclsidHKCRhkdllok_filesr   is_adminmsgcmdrcs                  r   RegisterPythonServerr9      s&   gs##iG F"v.//^^D+*=>'',<=
   !3!34)##))3+;+;+A+ABCH
 ww$H4PWW  3 8 
6
	$H Taj 	 87BBC !!(";";S$KK''*+2hZ7P
QC"H-	3B	)*c
?(JKK 
m &&   8 "" 	H	  QRsH   G& AH"H0 )H &G?>G?
HHH-,H-0I
Ic                    [         R                  " S5      nU SU-  -  n [        R                  " U 5      n[	        US5      R                  5       R                  5       n[        R                  " U5         " S S[        5      n U(       a  U" S[        U5      -   5      eUb  Xb:w  a  U" SU< SU< S	35      eU(       d  UR                  S
5      S:  a  U" S5      eU$ ! U a\  n[        SU -  5        [        SU5        [        S5        [        U5        [        S5        UR                  SU  SU 35         S nAg S nAff = f)Nwin32com_testz > "%s" 2>&1rc                       \ rS rSrSrg)#ExecuteShellCommand.<locals>.Failedo    N)__name__
__module____qualname____firstlineno____static_attributes__r@   r
   r   Failedr>   o   s    r
   rF   zexit code was zExpected output z (got )z!Traceback (most recent call last)r   ztraceback in program outputzFailed to exec command '%r'z	Failed asz** start of program output **z** end of program output **zExecuting 'z' failed as )tempfilemktempr   r)   openreadstripremove	Exceptionr   findr   fail)	r7   testcaseexpected_outputtracebacks_okoutput_namer8   outputrF   whys	            r   ExecuteShellCommandrW   c   s+    ///2K>K''C	3B+s#((*002FIIk <)CG344&6+D+O+>fVJaPQQ-P!QUV!V677 <+c12k3-.f+,C5SE:;;<s   AC D?#AD::D?c                      U" U0 UD6  U R                  SU-  5        g ! [         R                   a  nUR                  U:X  a   S nAg  S nANCS nAff = f)Nz*Excepected COM exception with HRESULT 0x%x)r   r   hresultrP   )rQ   rY   funcargskwdetailss         r   assertRaisesCOM_HRESULTr^      sT    db MM>HI  ??g% &s    AAAc                   >    \ rS rSrS rS rS rS rS rS r	S r
S	rg
)CaptureWriter   c                 @    S =U l         U l        U R                  5         g N)old_errold_outclearselfs    r   __init__CaptureWriter.__init__   s    &**t|

r
   c                     U R                  5         [        R                  U l        [        R                  U l        U =[        l        [        l        g rc   )rf   r   stdoutre   stderrrd   rg   s    r   captureCaptureWriter.capture   s/    

zzzz"&&
SZr
   c                     U R                   (       a  U R                   [        l        S U l         U R                  (       a  U R                  [        l        S U l        g g rc   )re   r   rl   rd   rm   rg   s    r   releaseCaptureWriter.release   s9    <<CJDL<<CJDL r
   c                     / U l         g rc   )capturedrg   s    r   rf   CaptureWriter.clear   s	    r
   c                 :    U R                   R                  U5        g rc   )rt   append)rh   r6   s     r   writeCaptureWriter.write   s    S!r
   c                 8    SR                  U R                  5      $ )N )joinrt   rg   s    r   get_capturedCaptureWriter.get_captured   s    wwt}}%%r
   c                 h    [        SR                  U R                  5      R                  S5      5      $ )Nr{   
)lenr|   rt   splitrg   s    r   get_num_lines_captured$CaptureWriter.get_num_lines_captured   s%    2774==)//566r
   )rt   rd   re   N)rA   rB   rC   rD   ri   rn   rq   rf   rx   r}   r   rE   r@   r
   r   r`   r`      s%    ' "&7r
   r`   c                        \ rS rSrS rS rSrg)
LogHandler   c                 P    / U l         [        R                  R                  U 5        g rc   )emittedloggingHandlerri   rg   s    r   ri   LogHandler.__init__   s      &r
   c                 :    U R                   R                  U5        g rc   )r   rw   )rh   records     r   emitLogHandler.emit   s    F#r
   )r   N)rA   rB   rC   rD   ri   r   rE   r@   r
   r   r   r      s    '$r
   r   c                  
   [        [        SS 5      n [        c5  [        R                  " S5      q[        5       n[        R                  U5        [        [        l        [        R                  S   n/ Ul	        UR                  U 4$ )Nloggertestr   )
getattrwin32com_win32com_loggerr   Loggerr   
addHandlerr   handlersr   )old_loghandlers     r   setup_test_loggerr      sg    h$/G">>&1,##G,&HO''*GGO??G##r
   c                 B    U b   S5       eU c  [         ?g U [         l        g )Nzwho needs this?)r   r   )prev_loggers    r   restore_test_loggerr      s&    1 11O%r
   c                  D    [        U 0 UD6n[        R                  " U5      $ rc   )_CapturingFunctionTestCasepywin32_testutilLeakTestCase)r[   r\   	real_tests      r   CapturingFunctionTestCaser      s"    *D7B7I((33r
   c                   $    \ rS rSrSS jrS rSrg)r      Nc                    Uc  U R                  5       n[        5       nUR                  5          [        R                  R                  X5        [        U SS5      (       a&  [        [        S5      (       a  U R                  U5        UR                  5         UR                  5       nU R                  X15        UR                  (       a  [        U5        g g ! UR                  5         f = f)Ndo_leak_testsr   gettotalrefcount)defaultTestResultr`   rn   unittestFunctionTestCase__call__r   hasattrr   run_leak_testsrq   r}   checkOutputshowAllr   )rh   resultwriterrU   s       r   r   #_CapturingFunctionTestCase.__call__   s    >++-F	%%..t<t_a00WSBT5U5U##F+NN$$&(>>&M 	 NNs   AC C'c                 r    UR                  S5      S:  a"  SU-  nUR                  R                  X45        g g )N	Tracebackr   z,Test output contained a traceback
---
%s
---)rO   errorsrw   )rh   rU   r   r6   s       r   r   &_CapturingFunctionTestCase.checkOutput   s6    ;;{#q(CfLCMM  $- )r
   r@   rc   )rA   rB   rC   rD   r   r   rE   r@   r
   r   r   r      s    $.r
   r   c                   &    \ rS rSrS rS rS rSrg)ShellTestCase   c                 Z    Xl         X l        [        R                  R	                  U 5        g rc   )_ShellTestCase__cmd_ShellTestCase__eor   TestCaseri   )rh   r7   rR   s      r   ri   ShellTestCase.__init__   s     
#	""4(r
   c                 D    [        U R                  X R                  5        g rc   )rW   r   r   rg   s    r   runTestShellTestCase.runTest   s    DJJii8r
   c                     Sn[        U R                  5      U:  a  U R                  S U S-   nSU-   $ U R                  nSU-   $ )N   z...zexec: )r   r   )rh   maxcmd_reprs      r   __str__ShellTestCase.__str__   sO    tzz?S zz$3'%/H ("" zzH(""r
   )__cmd__eoN)rA   rB   rC   rD   ri   r   r   rE   r@   r
   r   r   r      s    )
9#r
   r   c                  D    [         R                  " U 0 UD6  [        5         g rc   )r   testmainr	   )r[   r\   s     r   r   r     s    t*r*Lr
   )Nr   )r   r   r   rH   r   r   r   r   r   r'   r   r%   r   r   r	   r9   rW   r^   r`   r   r   r   r   r   r   r   r   r   r   r   r@   r
   r   <module>r      s     	 
          :BDLT 	<@J7 7D$ $  $& 4
.!:!: .2#H%% #$r
   