a
    äze3  ã                   @   s–   d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZ ej	dkrPe 
d¡‚ed Zdejejf ZG dd„ dejƒZd	d
„ Zedkr’e ¡  dS )é    N)ÚTESTFNÚunlinkÚreap_childrenÚposixz pipes module only works on posixÚ2ztr %s %sc                   @   s„   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) ÚSimplePipeTestsc                 C   s   t tfD ]}t|ƒ qd S ©N)r   ÚTESTFN2r   )ÚselfÚf© r   ú%/usr/lib/python3.9/test/test_pipes.pyÚtearDown   s    zSimplePipeTests.tearDownc                 C   s    t  d¡d u r|  d¡ t ¡ }| ttj¡ | t	d¡}| 
d¡ W d   ƒ n1 sZ0    Y  tt	ƒ }|  | ¡ d¡ W d   ƒ n1 s’0    Y  d S )NÚtrútr is not availableÚwzhello world #1zHELLO WORLD #1)ÚshutilÚwhichÚskipTestÚpipesÚTemplateÚappendÚ	s_commandÚSTDIN_STDOUTÚopenr   ÚwriteÚassertEqualÚread)r
   Útr   r   r   r   ÚtestSimplePipe1   s    
(
zSimplePipeTests.testSimplePipe1c                 C   s®   t  d¡d u r|  d¡ ttdƒ}| d¡ W d   ƒ n1 sB0    Y  t ¡ }| t	d tj
¡ | tt¡ ttƒ }|  | ¡ d¡ W d   ƒ n1 s 0    Y  d S )Nr   r   r   úhello world #2z < $IN > $OUTúHELLO WORLD #2)r   r   r   r   r   r   r   r   r   r   ÚFILEIN_FILEOUTÚcopyr	   r   r   ©r
   r   r   r   r   r   ÚtestSimplePipe2   s    
(
zSimplePipeTests.testSimplePipe2c                 C   sž   t  d¡d u r|  d¡ ttdƒ}| d¡ W d   ƒ n1 sB0    Y  t ¡ }| t	d tj
¡ | td¡}z|  | ¡ d¡ W | ¡  n
| ¡  0 d S )Nr   r   r   r    z < $INÚrr!   )r   r   r   r   r   r   r   r   r   r   ÚFILEIN_STDOUTr   r   Úcloser$   r   r   r   ÚtestSimplePipe3*   s    
(zSimplePipeTests.testSimplePipe3c                 C   s¼   d}t tdƒ}| |¡ W d   ƒ n1 s.0    Y  t tdƒ}| d¡ W d   ƒ n1 sb0    Y  t ¡ }| tt¡ t tƒ }|  | ¡ |¡ W d   ƒ n1 s®0    Y  d S )Nzempty pipeline test COPYr   Ú )	r   r   r   r	   r   r   r#   r   r   ©r
   Údr   r   r   r   r   ÚtestEmptyPipeline17   s    ((
z"SimplePipeTests.testEmptyPipeline1c                 C   sx   d}t tdƒ}| |¡ W d   ƒ n1 s.0    Y  t ¡ }|  td¡}z|  | ¡ |¡ W | ¡  n
| ¡  0 d S )Nzempty pipeline test READr   r&   )r   r   r   r   r   r   r   r(   r+   r   r   r   ÚtestEmptyPipeline2C   s    (z"SimplePipeTests.testEmptyPipeline2c                 C   s~   d}t  ¡ }| td¡}| |¡ W d   ƒ n1 s80    Y  ttƒ }|  | ¡ |¡ W d   ƒ n1 sp0    Y  d S )Nzempty pipeline test WRITEr   )r   r   r   r   r   r   r   )r
   r,   r   r   r   r   r   ÚtestEmptyPipeline3O   s    (
z"SimplePipeTests.testEmptyPipeline3c                 C   s:   t  ¡ }|  t|ƒd¡ | dt j¡ |  t|ƒd¡ d S )Nz<Template instance, steps=[]>ú
tr a-z A-Zz1<Template instance, steps=[('tr a-z A-Z', '--')]>)r   r   r   Úreprr   r   ©r
   r   r   r   r   ÚtestReprX   s    
ÿzSimplePipeTests.testReprc                 C   s<   t  ¡ }| d¡ |  |jd¡ | d¡ |  |jd¡ d S )NFT)r   r   Údebugr   Ú	debuggingr2   r   r   r   ÚtestSetDebug_   s
    

zSimplePipeTests.testSetDebugc                 C   s,   t  ¡ }| dt j¡ |  t|jdd¡ d S )NÚboguscmdÚ	bogusfiler&   )r   r   r   ÚSINKÚassertRaisesÚ
ValueErrorr   r2   r   r   r   ÚtestReadOpenSinkf   s    z SimplePipeTests.testReadOpenSinkc                 C   s,   t  ¡ }| dt j¡ |  t|jdd¡ d S )Nr7   r8   r   )r   r   ÚprependÚSOURCEr:   r;   r   r2   r   r   r   ÚtestWriteOpenSourcem   s    z#SimplePipeTests.testWriteOpenSourcec                 C   sà   t  ¡ }|  t|jdt j¡ |  t|jdd¡ |  t|jdt j¡ t  ¡ }| dt j¡ |  t|jdt j¡ t  ¡ }|  t|jdt j	¡ t  ¡ }|  t|jdt j
¡ t  ¡ }|  t|jdt j	¡ t  ¡ }|  t|jdt j¡ d S )Né   r7   Úxxúboguscmd $OUTúboguscmd $IN)r   r   r:   Ú	TypeErrorr   r   r;   r>   r9   r"   r'   ÚSTDIN_FILEOUTr2   r   r   r   ÚtestBadAppendOptionst   s.    ÿÿÿÿz$SimplePipeTests.testBadAppendOptionsc                 C   sà   t  ¡ }|  t|jdt j¡ |  t|jdd¡ |  t|jdt j¡ t  ¡ }| dt j¡ |  t|jdt j¡ t  ¡ }|  t|jdt j	¡ t  ¡ }|  t|jdt j
¡ t  ¡ }|  t|jdt j	¡ t  ¡ }|  t|jdt j¡ d S )Nr@   r0   rA   r7   rB   rC   )r   r   r:   rD   r=   r   r;   r9   r>   r"   r'   rE   r2   r   r   r   ÚtestBadPrependOptions–   s.    ÿÿÿÿz%SimplePipeTests.testBadPrependOptionsc                 C   s   t  ¡ }|  t|jdd¡ d S )Nr8   Úx)r   r   r:   r;   r   r2   r   r   r   ÚtestBadOpenMode·   s    zSimplePipeTests.testBadOpenModec                 C   sn   t  ¡ }| dt j¡ | ¡ }|  t|ƒt|ƒ¡ |  |j|j¡ |  t|jƒt|jƒ¡ |  |j	|j	¡ d S )Nr0   )
r   r   r   r   ZcloneZassertNotEqualÚidr   Zstepsr5   )r
   r   Úur   r   r   Ú	testClone»   s    zSimplePipeTests.testCloneN)Ú__name__Ú
__module__Ú__qualname__r   r   r%   r)   r-   r.   r/   r3   r6   r<   r?   rF   rG   rI   rL   r   r   r   r   r      s   
	"!r   c                   C   s
   t ƒ  d S r   )r   r   r   r   r   ÚtearDownModuleÆ   s    rP   Ú__main__)r   ÚosÚstringZunittestr   Ztest.supportr   r   r   ÚnameZSkipTestr	   Úascii_lowercaseÚascii_uppercaser   ZTestCaser   rP   rM   Úmainr   r   r   r   Ú<module>   s   

 7