o
    HXîhÔ  ã                   @   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 d dlm	Z	m
Z
 ejdkr.e d¡‚er6ej e¡s;e 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 dS )é    N)Úreap_childrenÚ
unix_shell)ÚTESTFNÚunlinkÚposixz pipes module only works on posixzpipes module requires a shellÚ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   ú9/opt/python-3.10.19/usr/lib/python3.10/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 s-w   Y  tt	ƒ}|  | ¡ d¡ W d   ƒ d S 1 sJw   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 s!w   Y  t ¡ }| t	d tj
¡ | tt¡ ttƒ}|  | ¡ d¡ W d   ƒ d S 1 sQw   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 s!w   Y  t ¡ }| t	d tj
¡ | td¡}z|  | ¡ d¡ W | ¡  d S | ¡  w )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w   Y  t tdƒ}| d¡ W d   ƒ n1 s1w   Y  t ¡ }| tt¡ t tƒ}|  | ¡ |¡ W d   ƒ d S 1 sXw   Y  d S )Nzempty pipeline test COPYr   Ú )	r   r   r   r
   r   r   r$   r   r   ©r   Údr   r   r   r   r   ÚtestEmptyPipeline1<   s   ÿÿ
"ÿz"SimplePipeTests.testEmptyPipeline1c                 C   sv   d}t tdƒ}| |¡ W d   ƒ n1 sw   Y  t ¡ }|  td¡}z|  | ¡ |¡ W | ¡  d S | ¡  w )Nzempty pipeline test READr   r'   )r   r   r   r   r   r   r   r)   r,   r   r   r   ÚtestEmptyPipeline2H   s   ÿz"SimplePipeTests.testEmptyPipeline2c                 C   s€   d}t  ¡ }| td¡}| |¡ W d   ƒ n1 sw   Y  ttƒ}|  | ¡ |¡ W d   ƒ d S 1 s9w   Y  d S )Nzempty pipeline test WRITEr   )r   r   r   r   r   r   r   )r   r-   r   r   r   r   r   ÚtestEmptyPipeline3T   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   ÚtestRepr]   s   
ÿzSimplePipeTests.testReprc                 C   s<   t  ¡ }| d¡ |  |jd¡ | d¡ |  |jd¡ d S )NFT)r   r   Údebugr   Ú	debuggingr3   r   r   r   ÚtestSetDebugd   s
   

zSimplePipeTests.testSetDebugc                 C   ó,   t  ¡ }| dt j¡ |  t|jdd¡ d S )NÚboguscmdÚ	bogusfiler'   )r   r   r   ÚSINKÚassertRaisesÚ
ValueErrorr   r3   r   r   r   ÚtestReadOpenSinkk   ó   z SimplePipeTests.testReadOpenSinkc                 C   r8   )Nr9   r:   r   )r   r   ÚprependÚSOURCEr<   r=   r   r3   r   r   r   ÚtestWriteOpenSourcer   r?   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é   r9   Úxxúboguscmd $OUTúboguscmd $IN)r   r   r<   Ú	TypeErrorr   r   r=   rA   r;   r#   r(   ÚSTDIN_FILEOUTr3   r   r   r   ÚtestBadAppendOptionsy   ó.   ÿÿÿÿ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 )NrC   r1   rD   r9   rE   rF   )r   r   r<   rG   r@   r   r=   r;   rA   r#   r(   rH   r3   r   r   r   ÚtestBadPrependOptions›   rJ   z%SimplePipeTests.testBadPrependOptionsc                 C   s   t  ¡ }|  t|jdd¡ d S )Nr:   Úx)r   r   r<   r=   r   r3   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 )Nr1   )
r   r   r   r   ZcloneZassertNotEqualÚidr   Zstepsr6   )r   r   Úur   r   r   Ú	testCloneÀ   s   zSimplePipeTests.testCloneN)Ú__name__Ú
__module__Ú__qualname__r   r    r&   r*   r.   r/   r0   r4   r7   r>   rB   rI   rK   rM   rP   r   r   r   r   r      s     
	"!r   c                   C   s
   t ƒ  d S r	   )r   r   r   r   r   ÚtearDownModuleË   s   
rT   Ú__main__)r   ÚosÚstringZunittestr   Ztest.supportr   r   Ztest.support.os_helperr   r   ÚnameZSkipTestÚpathÚexistsr
   Úascii_lowercaseÚascii_uppercaser   ZTestCaser   rT   rQ   Úmainr   r   r   r   Ú<module>   s&    


 7ÿ