
    Oh)                        d dl mZmZ d dlmZmZ 	 d dlmZ 	 d dl
mZmZmZ ddlmZmZ ddlmZ dd	lmZ  G d
 de      Z G d de      Zedk(  r e        yy# e$ r	 d dl	mZ Y Pw xY w# e$ r d dlmZmZmZ Y Zw xY w)    )StringIOTextIOWrapper)TestCasemain)	ExitStack)	MagicMockMockpatch   )AnsiToWin32StreamWrapper"ENABLE_VIRTUAL_TERMINAL_PROCESSING   )osnamec                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)StreamWrapperTestc                 ~    t               }t        |d       }| j                  |j                  |j                  u        y N)r	   r   
assertTruerandom_attr)self
mockStreamwrappers      }/mnt/c/Users/Administrator/Desktop/help_/test_env/lib/python3.12/site-packages/pip/_vendor/colorama/tests/ansitowin32_test.pytestIsAProxyzStreamWrapperTest.testIsAProxy   s2    V

D1,,
0F0FFH    c                     t               }t               }t        ||      }|j                  d       | j                  |j                  j                  di f       y )Nhello)r   )r	   r   writer   	call_args)r   r   mockConverterr   s       r   testDelegatesWritez$StreamWrapperTest.testDelegatesWrite   sG    V

M:g++55
B7GHr   c                     t               }t               }t        ||      5 }|j                  d       d d d        | j	                  |j
                         y # 1 sw Y   %xY wNr   )r	   r   r   r    r   closed)r   r"   sfps       r   testDelegatesContextz&StreamWrapperTest.testDelegatesContext"   sM    J1m, 	HHX	!	 	s   AA c                    t               }t               |j                  _        t	               }| j                  t              5 }t        ||      5 }|j                  d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY wr%   )r   AttributeError	__enter__side_effectr	   assertRaisesr   r    )r   r   r"   excinfor   s        r   testProxyNoContextManagerz+StreamWrapperTest.testProxyNoContextManager)   sx    [
+9+;
(~. 	''z=9 'Wg&'	' 	'' '	' 	's$   A?A3"A?3A<	8A??Bc                     t               }|j                          t        |d       }| j                  |j                  d       y NT)r   closer   assertEqualr&   r   streamr   s      r   +test_closed_shouldnt_raise_on_closed_streamz=StreamWrapperTest.test_closed_shouldnt_raise_on_closed_stream1   s2    -.r   c                     t        t                     }|j                          t        |d       }| j	                  |j
                  d       y r2   )r   r   detachr   r4   r&   r5   s      r   -test_closed_shouldnt_raise_on_detached_streamz?StreamWrapperTest.test_closed_shouldnt_raise_on_detached_stream7   s7    xz*-.r   N)	__name__
__module____qualname__r   r#   r)   r0   r7   r:    r   r   r   r      s"    I
I"'//r   r   c                       e Zd Zd Z edd       edd       d               Zd Zd Zd	 Zdd
Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy)AnsiToWin32Testc                     t               }t               }t        ||      }| j                  |j                  |       | j                  |j                  |       y )N)	autoreset)r	   r   r4   wrappedrB   )r   
mockStdoutautor6   s       r   testInitzAnsiToWin32Test.testInit?   sF    V
vZ484))40r   colorama.ansitowin32.wintermN colorama.ansitowin32.winapi_testc                       yr2   r>   _s    r   <lambda>zAnsiToWin32Test.<lambda>G       r   c                     t        d      5  t               }t        |      }| j                  |j                         d d d        y # 1 sw Y   y xY w)Nnt)r   r	   r   r   stripr   rD   r6   s      r   testStripIsTrueOnWindowsz(AnsiToWin32Test.testStripIsTrueOnWindowsF   sA     D\ 	*J ,FOOFLL)	* 	* 	*s   1AAc                     t        d      5  t        d      }t        |      }| j                  |j                         d d d        y # 1 sw Y   y xY w)NposixF)r&   )r   r	   r   assertFalserP   rQ   s      r   testStripIsFalseOffWindowsz*AnsiToWin32Test.testStripIsFalseOffWindowsN   sD    G_ 	+U+J ,FV\\*	+ 	+ 	+s   3AAc                 H   t               }t        |      }t               |_        t               |_        d|_        |j                  d       | j                  |j                  j
                  j                         | j                  |j                  j                  di f       y )NTabcrX   )
r	   r   rC   write_and_convertrP   r    rU   calledr4   r!   rQ   s      r   testWriteStripsAnsiz#AnsiToWin32Test.testWriteStripsAnsiT   sw    V
Z(#'6 U--44511;;h^Lr   c                 V   t               }t        |      }t               |_        t               |_        d|_        d|_        |j                  d       | j                  |j                  j                         | j                  |j                  j                  j                  di f       y )NFrX   rY   )r	   r   rC   rZ   rP   convertr    rU   r[   r4   r!   rQ   s      r   testWriteDoesNotStripAnsiz)AnsiToWin32Test.testWriteDoesNotStripAnsi`   s~    V
Z(#'6 U11889--77(BHr   c                     t        t                     }||_        t               |_        ||_        t               |_        |j                  d       | j                  |j                  j                  |       y )NrX   )	r   r	   r^   	reset_allrB   wintermr    r4   r[   )r   r^   rB   r6   s       r   assert_autoresetsz!AnsiToWin32Test.assert_autoresetsm   sX    TV$ 6$U))00)<r   c                     | j                  d       | j                  d       | j                  dd       | j                  dd       y )NTr^   F)r^   rB   )rc   )r   s    r   testWriteAutoresetsz#AnsiToWin32Test.testWriteAutoresetsx   sJ    t,u-tu=u>r   c                     t        t                     }|j                  d       | j                  |j                  j
                  j                  di f       y )NrX   rY   )r   r	   rZ   r4   rC   r    r!   r   r6   s     r   "testWriteAndConvertWritesPlainTextz2AnsiToWin32Test.testWriteAndConvertWritesPlainText~   s@    TV$  %)&....888R.Jr   c                 X   t        t                     }t               |_        g d}|D ]z  }|j                  j                  j                          |j                  |       | j                  |j                  j                  j                  D cg c]  }|d   	 c}ddg       | y c c}w )N)z	abc[mdefz
abc[0mdefz
abc[2mdefzabc[02mdefzabc[002mdefzabc[40mdefzabc[040mdefzabc[0;1mdefzabc[40;50mdefzabc[50;30;40mdefz	abc[Adefz
abc[0Gdefabc[1;20;128Hdefr   rY   )def)	r   r	   
call_win32rC   r    
reset_mockrZ   r4   call_args_list)r   r6   datadatumargss        r   %testWriteAndConvertStripsAllValidAnsiz5AnsiToWin32Test.testWriteAndConvertStripsAllValidAnsi   s    TV$ F
  	ENN  ++-$$e-$*NN$8$8$G$GHDQH8%	 Is   B'
c                     t        t                     }t               |_        |j                  d       | j	                  |j
                  j                  j                         y )Nz
[40m[41m)r   r	   rm   rZ   rU   rC   r    r[   rh   s     r   %testWriteAndConvertSkipsEmptySnippetsz5AnsiToWin32Test.testWriteAndConvertSkipsEmptySnippets   sE    TV$ F  "46&....557r   c                 `   t        t                     }d|_        t               |_        t        d      |_        dddddd	}|j                         D ]Y  \  }}|j                  j                          |j                  |       | j                  |j                  j                  d
   |       [ y )NTparams)return_value)arw   )brw   )crw   )Grw   )Hrw   )z	abc[adefzabc[;;bdefz
abc[0cdefzabc[;;0;;Gdefrk   r   )
r   r	   r^   rm   extract_paramsitemsrn   rZ   r4   r!   r   r6   rp   rq   expecteds        r   1testWriteAndConvertCallsWin32WithParamsAndCommandzAAnsiToWin32Test.testWriteAndConvertCallsWin32WithParamsAndCommand   s    TV$ F $( ;$3$3$3$3$3
  $zz| 	IOE8((*$$e-f//99!<hH	Ir   c                 n    t               }t        |      }|j                          |j                          y r   )r   r   r3   ra   r   r6   	converters      r   3test_reset_all_shouldnt_raise_on_closed_orig_stdoutzCAnsiToWin32Test.test_reset_all_shouldnt_raise_on_closed_orig_stdout   s(    '	r   c                 @   t               }|j                          t        dd      5  t        dd       5  t        |      }d d d        d d d        | j	                  j
                         | j                  |j                         y # 1 sw Y   HxY w# 1 sw Y   LxY w)Ncolorama.ansitowin32.os.namerO   rH   c                       yr2   r>   r>   r   r   rL   zPAnsiToWin32Test.test_wrap_shouldnt_raise_on_closed_orig_stdout.<locals>.<lambda>   rM   r   )r   r3   r
   r   r   rP   rU   r^   r   s      r   .test_wrap_shouldnt_raise_on_closed_orig_stdoutz>AnsiToWin32Test.test_wrap_shouldnt_raise_on_closed_orig_stdout   s    0$7	04lC	0 (/		0 	0 		(**+	0 	0 	0 	0s"   BBBB	BBc                    t        dd      5  t        dd       5  t        t                     }d d d        d d d        | j                  j                         | j                  |j                         y # 1 sw Y   HxY w# 1 sw Y   LxY w)Nr   rO   rH   c                       yr2   r>   r>   r   r   rL   zQAnsiToWin32Test.test_wrap_shouldnt_raise_on_missing_closed_attr.<locals>.<lambda>   rM   r   )r
   r   objectr   rP   rU   r^   )r   r   s     r   /test_wrap_shouldnt_raise_on_missing_closed_attrz?AnsiToWin32Test.test_wrap_shouldnt_raise_on_missing_closed_attr   sv    0$7	24lC	2 (1		2 	2 		(**+	2 	2 	2 	2s!   BA6B6A?	;BBc                     t        t                     }dddddddd}|j                         D ]'  \  }}| j                  |j	                  d|      |       ) y )N)r   )r   )r   r   )   i  )      !   ,   7   ) z;;2z;;002;;z0;1z;;003;;456;;z11;22;33;44;55m)r   r	   r   r4   r~   r   s        r   testExtractParamsz!AnsiToWin32Test.testExtractParams   sd    TV$""""$&2
  $zz| 	JOE8V223>I	Jr   c                     t               t              }fdffdffdfd|_        |j                  dd       | j	                  j
                  D cg c]
  }|d   d    c}g d       y c c}w )	Nc                       d      S )Nr   r>   rK   __listeners     r   rL   z9AnsiToWin32Test.testCallWin32UsesLookup.<locals>.<lambda>       " r   c                       d      S )Nr   r>   r   s     r   rL   z9AnsiToWin32Test.testCallWin32UsesLookup.<locals>.<lambda>   r   r   c                       d      S )Nr   r>   r   s     r   rL   z9AnsiToWin32Test.testCallWin32UsesLookup.<locals>.<lambda>   r   r   )r   r   r   r   )r   r   c   r   r   )r   r   r   )r	   r   win32_callsrm   r4   ro   )r   r6   ry   r   s      @r   testCallWin32UsesLookupz'AnsiToWin32Test.testCallWin32UsesLookup   sr    6X&-/-/-/

 	#}-&556QqT!W6	6s   A3c                     t               }t        |d      }t        d      5 }g d}|D ]  }|j                  |        | j	                  |j
                  j                  d       d d d        y # 1 sw Y   y xY w)NTre   rG   )z]0z]0;fooz]0;colorama_test_titlez]1;colorama_test_titlez]2;colorama_test_titlezC];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;r   )r	   r   r
   r    r4   	set_title
call_count)r   rD   r6   rb   rp   codes         r   test_osc_codeszAnsiToWin32Test.test_osc_codes   su    V
Z612 	>gD  #T"#W..991=	> 	> 	>s   AA//A8c                 `   t               5 fd} |dd        |dd         |dd         |dd	        |d
d         |dd        t               } |d|       t               }d|_        d|j                  _        d|j
                  _        t        |      }|j                  dt               | j                  |j                         | j                  |j                         | j                  |j                                 |dd        t               } |d|       t        |      }|j                  dt               | j                  |j                         | j                  |j                         | j                  |j                                d d d        y # 1 sw Y   y xY w)Nc                 @    j                  t        | |d             y )NT)create)enter_contextr
   )ry   rz   stacks     r   pz3AnsiToWin32Test.test_native_windows_ansi.<locals>.p   s    ##E!Qt$<=r   r   rO   rH   c                       yr2   r>   r>   r   r   rL   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>   rM   r   zcolorama.win32.winapi_testc                       yr2   r>   r>   r   r   rL   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>   rM   r   zcolorama.winterm.win32.windllznon-Nonezcolorama.winterm.get_osfhandlec                      y)N  r>   rJ   s    r   rL   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>  rM   r   z%colorama.winterm.win32.GetConsoleModec                     t         S r   r   rJ   s    r   rL   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>  s    < r   z%colorama.winterm.win32.SetConsoleModeFTr   r   c                      y)Nr   r>   rJ   s    r   rL   z:AnsiToWin32Test.test_native_windows_ansi.<locals>.<lambda>  rM   r   )r   r	   r&   isattyrx   filenor   assert_called_withr   rU   rP   r^   should_wrapr   )r   r   SetConsoleModestdoutr6   r   s        @r   test_native_windows_ansiz(AnsiToWin32Test.test_native_windows_ansi   so   [ )	2E> ,d30,?*L9-z:.? 7< "VN5~FVF!FM)-FMM&)*FMM& !(F--d4VWV\\*V^^,V//12 5{C!VN5~F (F--d4VWOOFLL)OOFNN+OOF..01S)	2 )	2 )	2s   FF$$F-)T)r;   r<   r=   rF   r
   rR   rV   r\   r_   rc   rf   ri   rs   ru   r   r   r   r   r   r   r   r   r>   r   r   r@   r@   =   s    1 )40
-?* @ 1*+
MI	=?K
48I",,J> *2r   r@   __main__N)ior   r   unittestr   r   
contextlibr   ImportErrorcontextlib2unittest.mockr   r	   r
   mockansitowin32r   r   win32r   utilsr   r   r@   r;   r>   r   r   <module>r      s    & #&$
,44 5 6 '/ '/Re2h e2P zF   &%&  ,++,s"   A 
A, A)(A),A>=A>