a
    Fb=                     @   s   d Z ddlZddlZddlmZ ddlmZ ejdd Z	ej
dd Zd	d
 Zdd ZG dd dejZG dd dejZdS )z
Tests for testing.tools
    N)
decorators)toolsc                  C   sj   d} t | ddg}|s&J ddkgd} t | ddg}|sLJ ddkgt | d}|dgksfJ d S )	Nz/foo/bar.pya.txtb.txtz
/foo/a.txtz
/foo/b.txtz/fooz/a.txtz/b.txttt	full_pathZspathresult r   ?lib/python3.9/site-packages/IPython/testing/tests/test_tools.pytest_full_path_posix   s    r   c                  C   sj   d} t | ddg}|s&J ddkgd} t | ddg}|sLJ ddkgt | d}|dgksfJ d S )	Nzc:\foo\bar.pyr   r   zc:\foo\a.txtzc:\foo\b.txtzc:\foozc:\a.txtzc:\b.txtr   r	   r   r   r   test_full_path_win32'   s    r   c                  C   sL   d} d}d}| ||fD ]0\}}}t |\}}||ks:J ||ksJ qd S )N)zFAILED (errors=1)   r   )zFAILED (failures=1)r   r   )zFAILED (errors=1, failures=1)r   r   )r   Zparse_test_output)errZfailZbothZtxtZnerrZnfailZnerr1Znfail1r   r   r   test_parser3   s    r   c                  C   sb   d} t | }tj|sJ t|dd}| }W d    n1 sH0    Y  || ks^J d S )Nzpass
zutf-8)encoding)r   Ztemp_pyfileospathisfileopenread)srcfnameZfh2Zsrc2r   r   r   test_temp_pyfile=   s    
&r   c                   @   s   e Zd Zdd Zdd ZdS )TestAssertPrintsc                 C   sF   t d( td td td W d    n1 s80    Y  d S )NabcZabcddef   ghir   ZAssertPrintsprintselfr   r   r   test_passingF   s    zTestAssertPrints.test_passingc                 C   s   dd }|  t| d S )Nc                   S   sF   t d( td td td W d    n1 s80    Y  d S )Nr   Zacdr   r   r   r   r   r   r   funcM   s    z+TestAssertPrints.test_failing.<locals>.func)ZassertRaisesAssertionError)r"   r$   r   r   r   test_failingL   s    zTestAssertPrints.test_failingN)__name__
__module____qualname__r#   r&   r   r   r   r   r   E   s   r   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )Test_ipexec_validatec                 C   s    |  d d}t| j| dS )z'Test with only stdout results.
        print('A')
print('B')
A
BNZmktmpr   Zipexec_validater   r"   outr   r   r   test_main_pathW   s    
z#Test_ipexec_validate.test_main_pathc                 C   s    |  d d}t| j| dS )zGTest with only stdout results, expecting windows line endings.
        r+   A
BNr-   r.   r   r   r   test_main_path2`   s    
z$Test_ipexec_validate.test_main_path2c                 C   s$   |  d d}tj| j|dd dS )z3Test exception path in exception_validate.
        Yimport sys
print('A')
print('B')
print('C', file=sys.stderr)
print('D', file=sys.stderr)
r,   zC
DZexpected_outZexpected_errNr-   r.   r   r   r   test_exception_pathi   s    
z(Test_ipexec_validate.test_exception_pathc                 C   s$   |  d d}tj| j|dd dS )zSTest exception path in exception_validate, expecting windows line endings.
        r3   r1   zC
Dr4   Nr-   r.   r   r   r   test_exception_path2u   s    
z)Test_ipexec_validate.test_exception_path2c                 C   s   t j|  d S )N)r   TempFileMixintearDownr!   r   r   r   r8      s    zTest_ipexec_validate.tearDownN)r'   r(   r)   r0   r2   r5   r6   r8   r   r   r   r   r*   V   s
   		r*   )__doc__r   ZunittestZIPython.testingr   Zdecr   r   Z
skip_win32r   Zskip_if_not_win32r   r   r   ZTestCaser   r7   r*   r   r   r   r   <module>   s   


