§
    Ètºf·  ã                   óÒ   — d Z ddlmZ ddlmZ ddlmZ  ej        ¦   «         sddlm	Z	  G d„ de¦  «        Z
 e¦   «                              e
                     ¦   «         ¦  «         dS )	z&
Tests for L{twisted.internet.stdio}.
é    )ÚProtocol)ÚReactorBuilder)Úplatform)Ú
StandardIOc                   óh   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Z ej        ¦   «         rd
ZdS dS )ÚStdioFilesTestszI
    L{StandardIO} supports reading and writing to filesystem files.
    c                 óÚ   — |                       ¦   «         }t          |d¦  «                             ¦   «          t          |d¦  «        | _        |                      | j        j        ¦  «         d S )NÚwbzrb+)ÚmktempÚopenÚcloseÚ	extraFileÚ
addCleanup)ÚselfÚpaths     ú_/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/test/test_stdio.pyÚsetUpzStdioFilesTests.setUp   sY   € Ø�{Š{‰}Œ}ˆÝˆT�4ÑÔ×ÒÑ Ô Ð Ý˜d EÑ*Ô*ˆŒØ�Š˜œÔ,Ñ-Ô-Ð-Ð-Ð-ó    c                 ó8  ‡— |                       ¦   «         Š G ˆfd„dt          ¦  «        }|                      ¦   «         }t          |d¦  «        5 }|                     d¦  «         ddd¦  «         n# 1 swxY w Y   t          |d¦  «        5 } |¦   «         }t          ||                     ¦   «         | j                             ¦   «         ‰¬¦  «         |                      ‰¦  «         ddd¦  «         n# 1 swxY w Y   |  	                    |j
        d¦  «         dS )zc
        Adding a filesystem file reader to a reactor will make sure it is
        polled.
        c                   ó   •— e Zd ZdZˆ fd„ZdS )ú4StdioFilesTests.test_addReader.<locals>.DataProtocolr   c                 ój   •— | xj         |z  c_         | j         dk    r‰                     ¦   «          d S d S )Nó   hello!)ÚdataÚstop)r   r   Úreactors     €r   ÚdataReceivedzAStdioFilesTests.test_addReader.<locals>.DataProtocol.dataReceived&   s;   ø€ Ø�	”	˜TÑ!�	”	ð ”9 	Ò)Ð)Ø—L’L‘N”N�N�N�Nð *Ð)r   N)Ú__name__Ú
__module__Ú__qualname__r   r   ©r   s   €r   ÚDataProtocolr   #   s3   ø€ € € € € ØˆDð#ð #ð #ð #ð #ð #ð #r   r"   r
   r   NÚrb©ÚstdinÚstdoutr   )ÚbuildReactorr   r   r   Úwriter   Úfilenor   Ú
runReactorÚassertEqualr   )r   r"   r   ÚfÚprotocolr   s        @r   Útest_addReaderzStdioFilesTests.test_addReader   s©  ø€ ð
 ×#Ò#Ñ%Ô%ˆð		#ð 		#ð 		#ð 		#ð 		#ð 		#ð 		#�8ñ 		#ô 		#ð 		#ð �{Š{‰}Œ}ˆå�$˜ÑÔð 	 Ø�GŠG�IÑÔÐð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	õ �$˜ÑÔð 		% à#�|‘~”~ˆHÝØØ—h’h‘j”jØ”~×,Ò,Ñ.Ô.Øð	ñ ô ð ð �OŠO˜GÑ$Ô$Ð$ð		%ð 		%ð 		%ñ 		%ô 		%ð 		%ð 		%ð 		%ð 		%ð 		%ð 		%øøøð 		%ð 		%ð 		%ð 		%ð 	×Ò˜œ¨	Ñ2Ô2Ð2Ð2Ð2s%   ÁA1Á1A5Á8A5ÂAC4Ã4C8Ã;C8c                 óÄ  ‡— |                       ¦   «         Š G ˆfd„dt          ¦  «        }|                      ¦   «         }t          |d¦  «        5 } |¦   «         }t	          ||                     ¦   «         | j                             ¦   «         ‰¬¦  «         |j                             d¦  «         |j                             d¦  «         |j         	                    ¦   «          |  
                    ‰¦  «         ddd¦  «         n# 1 swxY w Y   t          |d¦  «        5 }|                      |                     ¦   «         d	¦  «         ddd¦  «         dS # 1 swxY w Y   dS )
zc
        Adding a filesystem file writer to a reactor will make sure it is
        polled.
        c                   ó   •— e Zd Zˆ fd„ZdS )ú:StdioFilesTests.test_addWriter.<locals>.DisconnectProtocolc                 ó0   •— ‰                      ¦   «          d S )N)r   )r   Úreasonr   s     €r   ÚconnectionLostzIStdioFilesTests.test_addWriter.<locals>.DisconnectProtocol.connectionLostH   s   ø€ Ø—’‘”���r   N)r   r   r    r4   r!   s   €r   ÚDisconnectProtocolr1   G   s.   ø€ € € € € ðð ð ð ð ð ð r   r5   r
   ©r&   r%   r   ó   hellos   , worldNr#   s   hello, world)r'   r   r   r   r   r)   r   Ú	transportr(   ÚloseConnectionr*   r+   Úread)r   r5   r   r,   r-   r   s        @r   Útest_addWriterzStdioFilesTests.test_addWriter@   sì  ø€ ð
 ×#Ò#Ñ%Ô%ˆð	ð 	ð 	ð 	ð 	ð 	ð 	¥ñ 	ô 	ð 	ð �{Š{‰}Œ}ˆå�$˜ÑÔð 	% ð *Ð)Ñ+Ô+ˆHÝØØ—x’x‘z”zØ”n×+Ò+Ñ-Ô-Øð	ñ ô ð ð Ô×$Ò$ XÑ.Ô.Ð.ØÔ×$Ò$ ZÑ0Ô0Ð0ØÔ×-Ò-Ñ/Ô/Ð/à�OŠO˜GÑ$Ô$Ð$ð	%ð 	%ð 	%ñ 	%ô 	%ð 	%ð 	%ð 	%ð 	%ð 	%ð 	%øøøð 	%ð 	%ð 	%ð 	%õ  �$˜ÑÔð 	8 Ø×Ò˜QŸVšV™XœX Ñ7Ô7Ð7ð	8ð 	8ð 	8ñ 	8ô 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8ð 	8øøøð 	8ð 	8ð 	8ð 	8ð 	8ð 	8s%   ÁB)DÄDÄDÄ)EÅEÅEc                 ób  — |                       ¦   «         }|                      ¦   «         }t          |d¦  «                             ¦   «          t          |d¦  «        5 }t	          t          ¦   «         |                     ¦   «         | j                             ¦   «         |¬¦  «        }|                      |j	        | 
                    ¦   «         ¦  «         |j	                             ¦   «          |                      |j	        | 
                    ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zq
        Removing a filesystem file reader from a reactor will make sure it is
        no longer polled.
        r
   r#   r$   N)r'   r   r   r   r   r   r)   r   ÚassertInÚ_readerÚ
getReadersÚstopReadingÚassertNotIn©r   r   r   r,   Ústdios        r   Útest_removeReaderz!StdioFilesTests.test_removeReader`   sX  € ð
 ×#Ò#Ñ%Ô%ˆà�{Š{‰}Œ}ˆÝˆT�4ÑÔ×ÒÑ Ô Ð å�$˜ÑÔð 
	B åÝ‘
”
Ø—h’h‘j”jØ”~×,Ò,Ñ.Ô.Øð	ñ ô ˆEð �MŠM˜%œ-¨×);Ò);Ñ)=Ô)=Ñ>Ô>Ð>ØŒM×%Ò%Ñ'Ô'Ð'Ø×Ò˜Uœ]¨G×,>Ò,>Ñ,@Ô,@ÑAÔAÐAð
	Bð 
	Bð 
	Bñ 
	Bô 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bøøøð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bð 
	Bs   ÁB<D$Ä$D(Ä+D(c                 ó.  — |                       ¦   «         }t          |                      ¦   «         d¦  «        x| _        }t	          ¦   «         }t          ||                     ¦   «         | j                             ¦   «         |¬¦  «        }|j         	                    d¦  «         |  
                    |j        |                     ¦   «         ¦  «         |j                             ¦   «          |                      |j        |                     ¦   «         ¦  «         dS )zq
        Removing a filesystem file writer from a reactor will make sure it is
        no longer polled.
        r
   r6   r7   N)r'   r   r   r,   r   r   r)   r   r8   r(   r=   Ú_writerÚ
getWritersÚstopWritingrA   )r   r   r,   r-   rC   s        r   Útest_removeWriterz!StdioFilesTests.test_removeWriterv   sí   € ð
 ×#Ò#Ñ%Ô%ˆõ ˜$Ÿ+š+™-œ-¨Ñ.Ô.Ð.ˆŒ�õ ‘:”:ˆÝØ˜QŸXšX™ZœZ¨t¬~×/DÒ/DÑ/FÔ/FÐPWð
ñ 
ô 
ˆð 	Ô× Ò  Ñ*Ô*Ð*Ø�Š�e”m W×%7Ò%7Ñ%9Ô%9Ñ:Ô:Ð:ØŒ×!Ò!Ñ#Ô#Ð#Ø×Ò˜œ¨×(:Ò(:Ñ(<Ô(<Ñ=Ô=Ð=Ð=Ð=r   c                 ó  — |                       ¦   «         }|                      ¦   «         }t          |d¦  «                             ¦   «          t          |d¦  «        x| _        }t          t          ¦   «         |                     ¦   «         | j                             ¦   «         |¬¦  «        }| 	                    ¦   «         }|  
                    |j        |¦  «         |                      |j        |                     ¦   «         ¦  «         dS )zk
        Calling C{removeAll} on a reactor includes descriptors that are
        filesystem files.
        r
   r#   r$   N)r'   r   r   r   r,   r   r   r)   r   Ú	removeAllr=   r>   rA   r?   )r   r   r   r,   rC   Úremoveds         r   Útest_removeAllzStdioFilesTests.test_removeAllŠ   så   € ð
 ×#Ò#Ñ%Ô%ˆà�{Š{‰}Œ}ˆÝˆT�4ÑÔ×ÒÑ Ô Ð õ ˜$ Ñ%Ô%Ð%ˆŒ�õ Ý‰JŒJØ—(’(‘*”*Ø”>×(Ò(Ñ*Ô*Øð	
ñ 
ô 
ˆð ×#Ò#Ñ%Ô%ˆØ�Š�e”m WÑ-Ô-Ð-Ø×Ò˜œ¨×(:Ò(:Ñ(<Ô(<Ñ=Ô=Ð=Ð=Ð=r   c                 óÖ  — |                       ¦   «         }|                      ¦   «         }t          |d¦  «                             ¦   «          t          |d¦  «        5 }t	          t          ¦   «         |                     ¦   «         | j                             ¦   «         |¬¦  «        }|                      |j	        | 
                    ¦   «         ¦  «         ddd¦  «         dS # 1 swxY w Y   dS )zW
        C{reactor.getReaders} includes descriptors that are filesystem files.
        r
   r#   r$   N)r'   r   r   r   r   r   r)   r   r=   r>   r?   rB   s        r   Útest_getReaderszStdioFilesTests.test_getReaders£   s  € ð ×#Ò#Ñ%Ô%ˆà�{Š{‰}Œ}ˆÝˆT�4ÑÔ×ÒÑ Ô Ð õ �$˜ÑÔð 	? åÝ‘
”
Ø—h’h‘j”jØ”~×,Ò,Ñ.Ô.Øð	ñ ô ˆEð �MŠM˜%œ-¨×);Ò);Ñ)=Ô)=Ñ>Ô>Ð>ð	?ð 	?ð 	?ñ 	?ô 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?ð 	?øøøð 	?ð 	?ð 	?ð 	?ð 	?ð 	?s   ÁA6CÃC"Ã%C"c                 óö  — |                       ¦   «         }t          |                      ¦   «         d¦  «        x| _        }t	          t          ¦   «         |                     ¦   «         | j                             ¦   «         |¬¦  «        }|                      |j	        | 
                    ¦   «         ¦  «         |j	                             ¦   «          |                      |j	        | 
                    ¦   «         ¦  «         dS )zW
        C{reactor.getWriters} includes descriptors that are filesystem files.
        r
   r6   N)r'   r   r   r,   r   r   r)   r   rA   rF   rG   ÚstartWritingr=   )r   r   r,   rC   s       r   Útest_getWriterszStdioFilesTests.test_getWriters·   sÓ   € ð ×#Ò#Ñ%Ô%ˆõ ˜$Ÿ+š+™-œ-¨Ñ.Ô.Ð.ˆŒ�õ Ý‰JŒJØ—8’8‘:”:Ø”.×'Ò'Ñ)Ô)Øð	
ñ 
ô 
ˆð 	×Ò˜œ¨×(:Ò(:Ñ(<Ô(<Ñ=Ô=Ð=ØŒ×"Ò"Ñ$Ô$Ð$Ø�Š�e”m W×%7Ò%7Ñ%9Ô%9Ñ:Ô:Ð:Ð:Ð:r   zoStandardIO does not accept stdout as an argument to Windows. Testing redirection to a file is therefore harder.N)r   r   r    Ú__doc__r   r.   r;   rD   rI   rM   rO   rR   r   Ú	isWindowsÚskip© r   r   r   r      s¿   € € € € € ðð ð.ð .ð .ð"3ð "3ð "3ðH8ð 8ð 8ð@Bð Bð Bð,>ð >ð >ð(>ð >ð >ð2?ð ?ð ?ð(;ð ;ð ;ð( €xÔÑÔð 
ðAð 	ˆˆð
ð 
r   r   N)rS   Útwisted.internet.protocolr   Ú#twisted.internet.test.reactormixinsr   Útwisted.python.runtimer   rT   Útwisted.internet.stdior   r   ÚglobalsÚupdateÚmakeTestCaseClassesrV   r   r   ú<module>r^      sÍ   ððð ð
 /Ð .Ð .Ð .Ð .Ð .Ø >Ð >Ð >Ð >Ð >Ð >Ø +Ð +Ð +Ð +Ð +Ð +à€xÔÑÔð 2Ø1Ð1Ð1Ð1Ð1Ð1ð~
ð ~
ð ~
ð ~
ð ~
�nñ ~
ô ~
ð ~
ðB €�	„	× Ò �×4Ò4Ñ6Ô6Ñ 7Ô 7Ð 7Ð 7Ð 7r   