
    f=                         d Z ddlZddlZddlmZ ddlmZ ej                  d        Z	ej                  d        Zd Zd Z G d	 d
ej                        Z G d dej                         Zy)z
Tests for testing.tools
    N)
decorators)toolsc                      d} t        j                  | ddg      }|sJ ddk(  g       d} t        j                  | ddg      }|sJ ddk(  g       t        j                  | d      }|dgk(  sJ y )	Nz/foo/bar.pya.txtb.txtz
/foo/a.txtz
/foo/b.txtz/fooz/a.txtz/b.txttt	full_pathspathresults     [/var/www/cvtools/html/venv/lib/python3.12/site-packages/IPython/testing/tests/test_tools.pytest_full_path_posixr      s    E\\%'7!34F1LL0116E\\%'7!34F)H())6\\%)FhZ    c                      d} t        j                  | ddg      }|sJ ddk(  g       d} t        j                  | ddg      }|sJ ddk(  g       t        j                  | d      }|dgk(  sJ y )	Nzc:\foo\bar.pyr   r   zc:\foo\a.txtzc:\foo\b.txtzc:\foozc:\a.txtzc:\b.txtr   r   s     r   test_full_path_win32r   '   s    E\\%'7!34F9$(88996E\\%'7!34F/K;.//6\\%)Fk]"""r   c                  x    d} d}d}| ||fD ],  \  }}}t        j                  |      \  }}||k(  sJ ||k(  r,J  y )N)zFAILED (errors=1)   r   )zFAILED (failures=1)r   r   )zFAILED (errors=1, failures=1)r   r   )r	   parse_test_output)errfailbothtxtnerrnfailnerr1nfail1s           r   test_parserr   3   sZ    
%C(D2D $- T5,,S1vu}}r   c                      d} t        j                  |       }t        j                  j	                  |      sJ t        |d      5 }|j                         }d d d        | k(  sJ y # 1 sw Y   xY w)Nzpass
zutf-8)encoding)r	   temp_pyfileospathisfileopenread)srcfnamefh2src2s       r   test_temp_pyfiler+   =   sc    
CNN3E77>>%   	eg	& #xxz3;; s   A''A0c                       e Zd Zd Zd Zy)TestAssertPrintsc                     t        j                  d      5  t        d       t        d       t        d       d d d        y # 1 sw Y   y xY w)Nabcabcddef   ghir	   AssertPrintsprintselfs    r   test_passingzTestAssertPrints.test_passingF   s8    __U# 	&M%L&M	 	 	   "AA
c                 6    d }| j                  t        |       y )Nc                      t        j                  d      5  t        d       t        d       t        d       d d d        y # 1 sw Y   y xY w)Nr/   acdr1   r2   r3    r   r   funcz+TestAssertPrints.test_failing.<locals>.funcM   s8    ' eef  r9   )assertRaisesAssertionError)r7   r>   s     r   test_failingzTestAssertPrints.test_failingL   s    	 	.$/r   N)__name__
__module____qualname__r8   rA   r=   r   r   r-   r-   E   s    0r   r-   c                   *    e Zd Zd Zd Zd Zd Zd Zy)Test_ipexec_validatec                 j    | j                  d       d}t        j                  | j                  |       y)z'Test with only stdout results.
        print('A')
print('B')
A
BNmktmpr	   ipexec_validater(   r7   outs     r   test_main_pathz#Test_ipexec_validate.test_main_pathW   s0     	

 " 	 
4::s+r   c                 j    | j                  d       d}t        j                  | j                  |       y)zGTest with only stdout results, expecting windows line endings.
        rH   A
BNrJ   rM   s     r   test_main_path2z$Test_ipexec_validate.test_main_path2`   s0     	

 " 	 
4::s+r   c                 n    | j                  d       d}t        j                  | j                  |d       y)z3Test exception path in exception_validate.
        Yimport sys
print('A')
print('B')
print('C', file=sys.stderr)
print('D', file=sys.stderr)
rI   zC
Dexpected_outexpected_errNrJ   rM   s     r   test_exception_pathz(Test_ipexec_validate.test_exception_pathi   s2     	

 3 	 
4::CfMr   c                 n    | j                  d       d}t        j                  | j                  |d       y)zSTest exception path in exception_validate, expecting windows line endings.
        rT   rQ   zC
DrU   NrJ   rM   s     r   test_exception_path2z)Test_ipexec_validate.test_exception_path2u   s2     	

 3 	 
4::ChOr   c                 B    t         j                  j                  |        y )N)r	   TempFileMixintearDownr6   s    r   r]   zTest_ipexec_validate.tearDown   s     	!!$'r   N)rB   rC   rD   rO   rR   rX   rZ   r]   r=   r   r   rF   rF   V   s    ,,
N
P(r   rF   )__doc__r"   unittestIPython.testingr   decr   r	   
skip_win32r   skip_if_not_win32r   r   r+   TestCaser-   r\   rF   r=   r   r   <module>re      sx    
  - '     # #0x(( 0"/(2++ /(r   