§
    Ètºf  ã                  ó�   — d Z ddlmZ ddlZddlZddlZddlmZ ddlm	Z	 edk    rddl
mZmZ ddlmZ nd	Z G d
„ de	¦  «        ZdS )zX
Tests for L{twisted.internet._sigchld}, an alternate, superior SIGCHLD
monitoring API.
é    )ÚannotationsN)ÚplatformType)ÚSynchronousTestCaseÚposix)ÚinstallHandlerÚisDefaultHandler)ÚsetNonBlockingz,These tests can only run on POSIX platforms.c                  óJ   — e Zd 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S )ÚSetWakeupSIGCHLDTestszy
    Tests for the L{signal.set_wakeup_fd} implementation of the
    L{installHandler} and L{isDefaultHandler} APIs.
    Úreturnútuple[int, int]c                óò   — t          j        ¦   «         \  }}|                      t           j        |¦  «         |                      t           j        |¦  «         t	          |¦  «         t	          |¦  «         ||fS )zk
        Create a non-blocking pipe which will be closed after the currently
        running test.
        )ÚosÚpipeÚ
addCleanupÚcloser	   ©ÚselfÚreadÚwrites      úa/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/internet/test/test_sigchld.pyr   zSetWakeupSIGCHLDTests.pipe   se   € õ
 ”g‘i”i‰ˆˆeØ�Š�œ $Ñ'Ô'Ð'Ø�Š�œ %Ñ(Ô(Ð(Ý�tÑÔÐÝ�uÑÔÐØ�Uˆ{Ðó    ÚNonec                ót   — t          j        t           j        ¦  «        | _        t	          d¦  «        | _        dS )z�
        Save the current SIGCHLD handler as reported by L{signal.signal} and
        the current file descriptor registered with L{installHandler}.
        éÿÿÿÿN)ÚsignalÚ	getsignalÚSIGCHLDÚsignalModuleHandlerr   ÚoldFD©r   s    r   ÚsetUpzSetWakeupSIGCHLDTests.setUp*   s,   € õ
 $*Ô#3µF´NÑ#CÔ#CˆÔ Ý# BÑ'Ô'ˆŒ
ˆ
ˆ
r   c                óv   — t          | j        ¦  «         t          j        t          j        | j        ¦  «         dS )zM
        Restore whatever signal handler was present when setUp ran.
        N)r   r    r   r   r   r!   s    r   ÚtearDownzSetWakeupSIGCHLDTests.tearDown2   s1   € õ
 	�t”zÑ"Ô"Ð"ÝŒ•f”n dÔ&>Ñ?Ô?Ð?Ð?Ð?r   c                óò  — |                       t          ¦   «         ¦  «         t          j        t          j        t          j        ¦  «         |                      t          ¦   «         ¦  «         t          j        t          j        t          j        ¦  «         |                       t          ¦   «         ¦  «         t          j        t          j        d„ ¦  «         |                      t          ¦   «         ¦  «         dS )zn
        L{isDefaultHandler} returns true if the SIGCHLD handler is SIG_DFL,
        false otherwise.
        c                 ó   — d S )N© )Úargss    r   ú<lambda>z=SetWakeupSIGCHLDTests.test_isDefaultHandler.<locals>.<lambda>D   s   € °D€ r   N)Ú
assertTruer   r   r   ÚSIG_IGNÚassertFalseÚSIG_DFLr!   s    r   Útest_isDefaultHandlerz+SetWakeupSIGCHLDTests.test_isDefaultHandler:   s¶   € ð
 	�ŠÕ(Ñ*Ô*Ñ+Ô+Ð+ÝŒ•f”n¥f¤nÑ5Ô5Ð5Ø×ÒÕ)Ñ+Ô+Ñ,Ô,Ð,ÝŒ•f”n¥f¤nÑ5Ô5Ð5Ø�ŠÕ(Ñ*Ô*Ñ+Ô+Ð+ÝŒ•f”nÐ&8Ð&8Ñ9Ô9Ð9Ø×ÒÕ)Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,r   c                ó˜   — |                       ¦   «         \  }}t          |¦  «        }|                      t          |¦  «        |¦  «         dS )zV
        L{installHandler} returns the previously registered file descriptor.
        N)r   r   ÚassertEqual)r   r   r   r    s       r   Útest_returnOldFDz&SetWakeupSIGCHLDTests.test_returnOldFDG   sF   € ð —i’i‘k”k‰ˆˆeÝ˜uÑ%Ô%ˆØ×Ò�¨Ñ.Ô.°Ñ6Ô6Ð6Ð6Ð6r   c                ó6  — |                       ¦   «         \  }}|                      t          ¦   «         ¦  «         t          |¦  «         |                      t          ¦   «         ¦  «         t          d¦  «         |                      t          ¦   «         ¦  «         dS )zO
        C{installHandler(-1)} removes the SIGCHLD handler completely.
        r   N)r   r*   r   r   r,   r   s      r   Útest_uninstallHandlerz+SetWakeupSIGCHLDTests.test_uninstallHandlerO   s„   € ð —i’i‘k”k‰ˆˆeØ�ŠÕ(Ñ*Ô*Ñ+Ô+Ð+Ý�uÑÔÐØ×ÒÕ)Ñ+Ô+Ñ,Ô,Ð,Ý�rÑÔÐØ�ŠÕ(Ñ*Ô*Ñ+Ô+Ð+Ð+Ð+r   c                ó¶  — |                       ¦   «         \  }}t          |¦  «         |                      t          t          j        |d¦  «        }|                      |j        t          j        ¦  «         t	          j	        t	          j
        ¦   «         t          j        ¦  «         |                      t          t	          j        |d¦  «        ¦  «        d¦  «         dS )zŒ
        The file descriptor passed to L{installHandler} has a byte written to
        it when SIGCHLD is delivered to the process.
        é   é   N)r   r   ÚassertRaisesÚOSErrorr   r   r0   ÚerrnoÚEAGAINÚkillÚgetpidr   r   Úlen)r   r   r   Úexcs       r   Útest_installHandlerz)SetWakeupSIGCHLDTests.test_installHandlerZ   s¢   € ð
 —i’i‘k”k‰ˆˆeÝ�uÑÔÐà×Ò¥­¬°$¸Ñ:Ô:ˆØ×Ò˜œ¥E¤LÑ1Ô1Ð1å
Œ•”	‘”�Vœ^Ñ,Ô,Ð,à×Ò��RœW T¨1Ñ-Ô-Ñ.Ô.°Ñ2Ô2Ð2Ð2Ð2r   N)r   r   )r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r"   r$   r.   r1   r3   r?   r'   r   r   r   r      s®   € € € € € ðð ð

ð 
ð 
ð 
ð(ð (ð (ð (ð@ð @ð @ð @ð-ð -ð -ð -ð7ð 7ð 7ð 7ð	,ð 	,ð 	,ð 	,ð3ð 3ð 3ð 3ð 3ð 3r   r   )rC   Ú
__future__r   r9   r   r   Útwisted.python.runtimer   Útwisted.trial.unittestr   Útwisted.internet._signalsr   r   Útwisted.internet.fdescr	   Úskipr   r'   r   r   ú<module>rJ      sÞ   ððð ð #Ð "Ð "Ð "Ð "Ð "à €€€Ø 	€	€	€	Ø €€€à /Ð /Ð /Ð /Ð /Ð /Ø 6Ð 6Ð 6Ð 6Ð 6Ð 6à�7ÒÐØJÐJÐJÐJÐJÐJÐJÐJØ5Ð5Ð5Ð5Ð5Ð5Ð5à9€DðO3ð O3ð O3ð O3ð O3Ð/ñ O3ô O3ð O3ð O3ð O3r   