a
    	¼3jŒ  ã                   @   sœ   d dl Z d dlZd dlZe jdkr,e d¡‚d dlZd dlZd dlZd dlmZ d dl	m
Z
 dd„ ZG dd	„ d	ejƒZG d
d„ dejƒZedkr˜e ¡  dS )é    NÚwin32zWindows only)Úwindows_utils)Úsupportc                   C   s   t  d ¡ d S )N)ÚasyncioZset_event_loop_policy© r   r   ú`/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_asyncio/test_windows_utils.pyÚtearDownModule   s    r   c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	PipeTestsc              
   C   sˆ  t jdd\}}zZt ¡ }|  |j¡ |  |jd¡ | |d¡ |  	|j¡ |  |jt
j¡ d}z| ¡  W n2 ty  } z|  |j|¡ W Y d }~nd }~0 0 tdƒ‚t ¡ }|  |j¡ |  |jd¡ | |d¡ |  |jdt
jh¡ t
 |jgdd¡}|  |t
j¡ |  |j¡ |  |j|¡ |  |j¡ |  |jdt
jh¡ |  | ¡ d¡ W t
 |¡ t
 |¡ nt
 |¡ t
 |¡ 0 d S )	N©TT©Z
overlappedr   éd   iä  zexpected ERROR_IO_INCOMPLETEs   helloF)r   ÚpipeÚ_overlappedÚ
OverlappedÚassertFalseÚpendingÚassertEqualÚerrorÚReadFileÚ
assertTrueÚ_winapiZERROR_IO_PENDINGÚ	getresultÚOSErrorÚwinerrorÚRuntimeErrorÚ	WriteFileZassertInÚWaitForMultipleObjectsÚeventÚWAIT_OBJECT_0ÚCloseHandle)ÚselfZh1Zh2Zov1ZERROR_IO_INCOMPLETEÚeZov2Úresr   r   r   Útest_pipe_overlapped   s<    $
ÿ
zPipeTests.test_pipe_overlappedc              
   C   sÐ   t jdd\}}t |¡ t  |¡}|  | ¡ |¡ |  |j|¡ t 	¡ ( t 
ddt¡ ~t ¡  W d   ƒ n1 sx0    Y  zt |¡ W n2 tyÂ } z|  |jd¡ W Y d }~nd }~0 0 tdƒ‚d S )Nr
   r   ÚignoreÚ é   zexpected ERROR_INVALID_HANDLE)r   r   r   r   Ú
PipeHandler   ÚfilenoÚhandleÚwarningsÚcatch_warningsÚfilterwarningsÚResourceWarningr   Ú
gc_collectr   r   r   )r    ÚhÚ_Úpr!   r   r   r   Útest_pipe_handle=   s    


&$zPipeTests.test_pipe_handleN)Ú__name__Ú
__module__Ú__qualname__r#   r2   r   r   r   r   r	      s   %r	   c                   @   s   e Zd Zdd„ ZdS )Ú
PopenTestsc                 C   sŒ  d}d}t jtjd|gt jt jt jd}|j|j|jfD ]}|  |t j	¡ q8t
 ¡ }t
 ¡ }t
 ¡ }| |jj|¡ | |jjd¡ | |jjd¡ |j|j|jg}t |dttjd ƒ¡}	|  |	tj¡ |  |j¡ |  |j¡ |  |j¡ |  | ¡ t|ƒ¡ | ¡  ¡ }
| ¡  ¡ }|  t|
ƒd¡ |  t|ƒd¡ |  | ¡  ¡  |
¡¡ |  d	 |¡¡ | W d   ƒ n1 s~0    Y  d S )
Nzif 1:
            import sys
            s = sys.stdin.readline()
            sys.stdout.write(s.upper())
            sys.stderr.write('stderr')
            s   blah
z-c)ÚstdinÚstdoutÚstderrr   Tiè  r   s   stderr) r   ÚPopenÚsysÚ
executableÚPIPEr7   r8   r9   ZassertIsInstancer'   r   r   r   r)   r   r   r   r   Úintr   ZSHORT_TIMEOUTr   r   r   r   r   ÚlenÚrstripZassertGreaterr   ÚupperÚ
startswith)r    ZcommandÚmsgr1   ÚfZovinZovoutZoverrÚeventsr"   ÚoutÚerrr   r   r   Ú
test_popenS   s@    ýÿzPopenTests.test_popenN)r3   r4   r5   rH   r   r   r   r   r6   Q   s   r6   Ú__main__)r;   Zunittestr*   ÚplatformZSkipTestr   r   r   r   Útestr   r   ZTestCaser	   r6   r3   Úmainr   r   r   r   Ú<module>   s   

;3