U
    1e=                     @   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&tddkgd} t | ddg}|sLtddkgt | d}|dgksftd S )	Nz/foo/bar.pya.txtb.txtz
/foo/a.txtz
/foo/b.txtz/fooz/a.txtz/b.txttt	full_pathAssertionErrorZspathresult r   D/tmp/pip-unpacked-wheel-3hxk2k58/IPython/testing/tests/test_tools.pytest_full_path_posix   s    r   c                  C   sj   d} t | ddg}|s&tddkgd} t | ddg}|sLtddkgt | d}|dgksft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:t||kst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_outputr	   )errZfailZbothtxtZnerrZnfailZnerr1Znfail1r   r   r   test_parser3   s    r   c               	   C   sN   d} t | }tj|stt|dd}| }W 5 Q R X || ksJtd S )Nzpass
zutf-8)encoding)r   Ztemp_pyfileospathisfiler	   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   s2   t d td td td W 5 Q R X 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   s2   t d td td td W 5 Q R X d S )Nr   Zacdr   r    r!   r   r   r   r   funcM   s    z+TestAssertPrints.test_failing.<locals>.func)assertRaisesr	   )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/   r0   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/   r0   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.
        r5   r3   zC
Dr6   Nr/   r0   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   r:      s    zTest_ipexec_validate.tearDownN)r)   r*   r+   r2   r4   r7   r8   r:   r   r   r   r   r,   V   s
   		r,   )__doc__r   ZunittestZIPython.testingr   decr   r   Z
skip_win32r   Zskip_if_not_win32r   r   r   ZTestCaser   r9   r,   r   r   r   r   <module>   s   


