ó
    ×›‘h  ã                   óè   • S r SSKrSSKrSSKr SSKrSSKJr  SSK	J
r
  SSKJr   " S S\R                  5      r " S	 S
\R                  5      r " S S\R                  5      rg! \ a    Sr NVf = f)z&
Tests for L{twisted.internet.fdesc}.
é    N)Úfdescznot supported on this platform)ÚuntilConcludes)Úunittestc                   ó$   • \ rS rSrSrS rS rSrg)ÚNonBlockingTestsé   z=
Tests for L{fdesc.setNonBlocking} and L{fdesc.setBlocking}.
c                 óò  • [         R                  " 5       u  pU R                  [         R                  U5        U R                  [         R                  U5        U R	                  [
        R
                  " U[
        R                  5      [         R                  -  5        [        R                  " U5        U R                  [
        R
                  " U[
        R                  5      [         R                  -  5        g)zB
L{fdesc.setNonBlocking} sets a file description to non-blocking.
N)ÚosÚpipeÚ
addCleanupÚcloseÚassertFalseÚfcntlÚF_GETFLÚ
O_NONBLOCKr   ÚsetNonBlockingÚ
assertTrue©ÚselfÚrÚws      Ú[C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/test/test_fdesc.pyÚtest_setNonBlockingÚ$NonBlockingTests.test_setNonBlocking   s�   € ô �wŠw‹y‰ˆØ�‰œŸ™ !Ô$Ø�‰œŸ™ !Ô$Ø×ÑœŸš Q¬¯©Ó6¼¿¹ÑFÔGÜ×Ò˜QÔØ�‰œŸš A¤u§}¡}Ó5¼¿¹ÑEÕFó    c                 ó”  • [         R                  " 5       u  pU R                  [         R                  U5        U R                  [         R                  U5        [        R
                  " U5        [        R                  " U5        U R                  [        R                  " U[        R                  5      [         R                  -  5        g)z;
L{fdesc.setBlocking} sets a file description to blocking.
N)r
   r   r   r   r   r   ÚsetBlockingr   r   r   r   r   s      r   Útest_setBlockingÚ!NonBlockingTests.test_setBlocking'   sw   € ô �wŠw‹y‰ˆØ�‰œŸ™ !Ô$Ø�‰œŸ™ !Ô$Ü×Ò˜QÔÜ×Ò˜!ÔØ×ÑœŸš Q¬¯©Ó6¼¿¹ÑFÕGr   © N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   r   Ú__static_attributes__r    r   r   r   r      s   † ñò	Gõ	Hr   r   c                   ó`   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rSrg)ÚReadWriteTestsé3   z4
Tests for L{fdesc.readFromFD}, L{fdesc.writeToFD}.
c                 óÈ   • [         R                  " 5       u  U l        U l        [        R
                  " U R                  5        [        R
                  " U R                  5        g)z7
Create a non-blocking pipe that can be used in tests.
N)r
   r   r   r   r   r   ©r   s    r   ÚsetUpÚReadWriteTests.setUp8   s;   € ô Ÿš›‰ˆŒ�”Ü×Ò˜TŸV™VÔ$Ü×Ò˜TŸV™VÕ$r   c                 óÈ   •  [         R                  " U R                  5         [         R                  " U R                  5        g! [         a     N.f = f! [         a     gf = f)z
Close pipes.
N)r
   r   r   ÚOSErrorr   r+   s    r   ÚtearDownÚReadWriteTests.tearDown@   sS   € ð	Ü�HŠH�T—V‘VÔð	Ü�HŠH�T—V‘VÕøô ó 	Ùð	ûô ó 	Ùð	ús"   ‚ A £ A Á
AÁAÁ
A!Á A!c                 óD   • [         R                  " U R                  U5      $ )z
Write data to the pipe.
)r   Ú	writeToFDr   )r   Úds     r   ÚwriteÚReadWriteTests.writeM   s   € ô �Š˜tŸv™v qÓ)Ð)r   c                 ó€   • / n[         R                  " U R                  UR                  5      nUc  U(       a  US   $ gU$ )z
Read data from the pipe.
r   r   )r   Ú
readFromFDr   Úappend)r   ÚlÚress      r   ÚreadÚReadWriteTests.readS   s<   € ð ˆÜ×Ò˜tŸv™v q§x¡xÓ0ˆØ‰;ÞØ˜‘t�ààˆJr   c                 óÎ   • U R                  S5      nU R                  US:„  5        U R                  5       nU R                  [	        U5      U5        U R                  SSU U5        g)z|
Test that the number of bytes L{fdesc.writeToFD} reports as written
with its return value are seen by L{fdesc.readFromFD}.
s   hellor   N)r5   r   r<   ÚassertEqualÚlen)r   ÚnÚss      r   Útest_writeAndReadÚ ReadWriteTests.test_writeAndReada   sW   € ð
 �J‰J�xÓ ˆØ�‰˜˜A™ÔØ�I‰I‹KˆØ×Ñœ˜Q› Ô#Ø×Ñ˜ " 1˜ qÕ)r   c                 ó„  • SS-  nU R                  U5      nU R                  US:„  5        / nSnSnXB:  d  US:  aD  UR                  U R                  5       5        U[	        US   5      -  nUS-  nXB:  a  M<  US:  a  MD  SR                  U5      nU R                  [	        U5      U5        U R                  USU U5        g)	ze
Similar to L{test_writeAndRead}, but use a much larger string to verify
the behavior for that case.
s
   0123456879i'  r   é2   éÿÿÿÿé   r   N)r5   r   r9   r<   r@   Újoinr?   )r   ÚorigÚwrittenÚresultÚresultlengthÚis         r   Útest_writeAndReadLargeÚ%ReadWriteTests.test_writeAndReadLargel   s¼   € ð
 ˜uÑ$ˆØ—*‘*˜TÓ"ˆØ�‰˜ !™Ô$ØˆØˆØˆØÓ$¨¨B«Ø�M‰M˜$Ÿ)™)›+Ô&ØœC  r¡
›OÑ+ˆLà�‰FˆAð	 Õ$¨¨B­ð
 —‘˜&Ó!ˆØ×Ñœ˜V› gÔ.Ø×Ñ˜˜h˜w˜¨Õ0r   c                 ó¤   • / n[         R                  " U R                  UR                  5      nU R	                  U/ 5        U R                  U5        g)z�
Verify that reading from a file descriptor with no data does not raise
an exception and does not result in the callback function being called.
N)r   r8   r   r9   r?   ÚassertIsNone)r   r:   rL   s      r   Útest_readFromEmptyÚ!ReadWriteTests.test_readFromEmpty€   sA   € ð
 ˆÜ×!Ò! $§&¡&¨!¯(©(Ó3ˆØ×Ñ˜˜BÔØ×Ñ˜&Õ!r   c                 ó    • [         R                  " U R                  5        U R                  U R	                  5       [
        R                  5        g)zn
Test that using L{fdesc.readFromFD} on a cleanly closed file descriptor
returns a connection done indicator.
N)r
   r   r   r?   r<   r   ÚCONNECTION_DONEr+   s    r   Útest_readFromCleanCloseÚ&ReadWriteTests.test_readFromCleanCloseŠ   ó0   € ô
 	�Š�—‘ÔØ×Ñ˜Ÿ™›¤e×&;Ñ&;Õ<r   c                 ó¢   • [         R                  " U R                  5        U R                  U R	                  S5      [
        R                  5        g)zq
Verify that writing with L{fdesc.writeToFD} when the read end is closed
results in a connection lost indicator.
ó   sN)r
   r   r   r?   r5   r   ÚCONNECTION_LOSTr+   s    r   Útest_writeToClosedÚ!ReadWriteTests.test_writeToClosed’   ó3   € ô
 	�Š�—‘ÔØ×Ñ˜Ÿ™ DÓ)¬5×+@Ñ+@ÕAr   c                 ó    • [         R                  " U R                  5        U R                  U R	                  5       [
        R                  5        g)zr
Verify that reading with L{fdesc.readFromFD} when the read end is
closed results in a connection lost indicator.
N)r
   r   r   r?   r<   r   r\   r+   s    r   Útest_readFromInvalidÚ#ReadWriteTests.test_readFromInvalidš   rY   r   c                 ó¢   • [         R                  " U R                  5        U R                  U R	                  S5      [
        R                  5        g)zr
Verify that writing with L{fdesc.writeToFD} when the write end is
closed results in a connection lost indicator.
r[   N)r
   r   r   r?   r5   r   r\   r+   s    r   Útest_writeToInvalidÚ"ReadWriteTests.test_writeToInvalid¢   r_   r   c                 óP  • [         R                  nS nU[         l         U R                  U R                  S5      S5        U[         l        S nU[         l         U R                  U R                  S5      S5        U[         l        g! U[         l        f = f! U[         l        f = f)z(
Test error path for L{fdesc.writeTod}.
c                 óD   • [        5       n[        R                  Ul        Ue©N)r/   ÚerrnoÚEAGAIN©ÚfdÚdataÚerrs      r   ÚeagainWriteÚ4ReadWriteTests.test_writeErrors.<locals>.eagainWrite°   s   € Ü“)ˆCÜŸ™ˆCŒIØˆIr   r[   r   c                 óD   • [        5       n[        R                  Ul        Uerh   )r/   ri   ÚEINTRrk   s      r   Ú
eintrWriteÚ3ReadWriteTests.test_writeErrors.<locals>.eintrWrite»   s   € Ü“)ˆCÜŸ™ˆCŒIØˆIr   N)r
   r5   r?   )r   Ú
oldOsWritero   rs   s       r   Útest_writeErrorsÚReadWriteTests.test_writeErrorsª   sˆ   € ô —X‘Xˆ
ò	ð
 ŒŒð	"Ø×Ñ˜TŸZ™Z¨Ó-¨qÔ1à!ŒBŒHò	ð
 ŒŒð	"Ø×Ñ˜TŸZ™Z¨Ó-¨qÔ1à!ŒB�Høð "ŒB�Hûð "ŒB�Hús    !B Á!B ÂBÂB%)r   r   N)r!   r"   r#   r$   r%   r,   r0   r5   r<   rC   rO   rS   rW   r]   ra   rd   rv   r&   r    r   r   r(   r(   3   sE   † ñò%òò*òò	*ò1ò("ò=òBò=òBõ"r   r(   c                   ó.   • \ rS rSrSrSrS rS rS rSr	g)	ÚCloseOnExecTestséÇ   zD
Tests for L{fdesc._setCloseOnExec} and L{fdesc._unsetCloseOnExec}.
zÆ
import os, errno
try:
    os.write(%d, b'lul')
except OSError as e:
    if e.errno == errno.EBADF:
        os._exit(0)
    os._exit(5)
except BaseException:
    os._exit(10)
else:
    os._exit(20)
c                 ó�  • [         R                  " 5       nUS:X  aT   [         R                  " [        R                  [        R                  SU R
                  UR                  5       4-  /5        g [        [         R                  US5      S   $ ! [         a-    SS KnUR                  5         [         R                  " S5         g f = f)Nr   z-cé   rH   )r
   ÚforkÚexecvÚsysÚ
executableÚprogramÚfilenoÚBaseExceptionÚ	tracebackÚ	print_excÚ_exitr   Úwaitpid)r   ÚfObjÚpidr„   s       r   Ú_execWithFileDescriptorÚ(CloseOnExecTests._execWithFileDescriptorÚ   s‘   € Ü�gŠg‹iˆØ�!‹8ð	Ü—’Ü—N‘NÜ—^‘^ T¨4¯<©<¸4¿;¹;»=Ð:JÑ+JÐKõô "¤"§*¡*¨c°1Ó5°aÑ8Ð8øô !ó Û à×#Ñ#Ô%Ü—’˜–ð	ús   �AB Â4CÃCc                 ól  • [        U R                  5       S5       n[        R                  " UR	                  5       5        U R                  U5      nU R                  [        R                  " U5      5        U R                  [        R                  " U5      S5        SSS5        g! , (       d  f       g= f)z�
A file descriptor passed to L{fdesc._setCloseOnExec} is not inherited
by a new process image created with one of the exec family of
functions.
Úwbr   N)ÚopenÚmktempr   Ú_setCloseOnExecr‚   rŠ   r   r
   Ú	WIFEXITEDr?   ÚWEXITSTATUS©r   rˆ   Ústatuss      r   Útest_setCloseOnExecÚ$CloseOnExecTests.test_setCloseOnExecì   st   € ô �$—+‘+“- Ô&¨$Ü×!Ò! $§+¡+£-Ô0Ø×1Ñ1°$Ó7ˆFØ�O‰OœBŸLšL¨Ó0Ô1Ø×ÑœRŸ^š^¨FÓ3°QÔ7÷	 '×&Ö&ús   ›BB%Â%
B3c                 ó´  • [        U R                  5       S5       n[        R                  " UR	                  5       5        [        R
                  " UR	                  5       5        U R                  U5      nU R                  [        R                  " U5      5        U R                  [        R                  " U5      S5        SSS5        g! , (       d  f       g= f)zŽ
A file descriptor passed to L{fdesc._unsetCloseOnExec} is inherited by
a new process image created with one of the exec family of functions.
r�   é   N)rŽ   r�   r   r�   r‚   Ú_unsetCloseOnExecrŠ   r   r
   r‘   r?   r’   r“   s      r   Útest_unsetCloseOnExecÚ&CloseOnExecTests.test_unsetCloseOnExecø   sˆ   € ô
 �$—+‘+“- Ô&¨$Ü×!Ò! $§+¡+£-Ô0Ü×#Ò# D§K¡K£MÔ2Ø×1Ñ1°$Ó7ˆFØ�O‰OœBŸLšL¨Ó0Ô1Ø×ÑœRŸ^š^¨FÓ3°RÔ8÷ '×&Ö&ús   ›B%C	Ã	
Cr    N)
r!   r"   r#   r$   r%   r�   rŠ   r•   rš   r&   r    r   r   ry   ry   Ç   s   † ñð€Gò9ò$
8õ
9r   ry   )r%   ri   r
   r   r   Útwisted.internetr   ÚImportErrorÚskipÚtwisted.python.utilr   Útwisted.trialr   ÚSynchronousTestCaser   r(   ry   r    r   r   Ú<module>r¢      sz   ðñó Û 	Û 
ð'Ûõ 'å .Ý "ôH�x×3Ñ3ô Hô8Q"�X×1Ñ1ô Q"ôh;9�x×3Ñ3õ ;9øðs ó ,Ø+‚Dð,ús   �A& Á&A1Á0A1