
    Vh                        d Z ddlmZ ddlZddlmZ ddlmZ 	 ddlm	Z	m
Z
 dZddZdd	Z G d
 de      Zy# e$ r dZY w xY w)z.
Tests for L{twisted.internet.kqueuereactor}.
    )annotationsN)implementer)TestCase)KQueueReactor_IKQueuezKQueue not available.c                      y)z
    Do nothing.
    N )argskwargss     X/home/dcms/DCMS/lib/python3.12/site-packages/twisted/internet/test/test_kqueuereactor.py_fakeKEventr      s        c                R     t        t               G  fdd             } |       S )a  
    Create a fake that implements L{_IKQueue}.

    @param testKQueue: Something that acts like L{select.kqueue}.
    @param testKEvent: Something that acts like L{select.kevent}.
    @return: An implementation of L{_IKQueue} that includes C{testKQueue} and
        C{testKEvent}.
    c                      e Zd ZW ZW  Zy)"makeFakeKQueue.<locals>.FakeKQueueN)__name__
__module____qualname__kqueuekevent)
testKEvent
testKQueues   r   
FakeKQueuer   '   s    r   r   )r   r   )r   r   r   s   `` r   makeFakeKQueuer      s+        <r   c                      e Zd ZdZeZddZy)KQueueTestsz
    These are tests for L{KQueueReactor}'s implementation, not its real world
    behaviour. For that, look at
    L{twisted.internet.test.reactormixins.ReactorBuilder}.
    c                l     G d d      }t        t        |t                    }|j                  d       y)zV
        L{KQueueReactor} handles L{errno.EINTR} in C{doKEvent} by returning.
        c                      e Zd ZdZddZy)*KQueueTests.test_EINTR.<locals>.FakeKQueuez
            A fake KQueue that raises L{errno.EINTR} when C{control} is called,
            like a real KQueue would if it was interrupted.
            c                6    t        t        j                  d      )NInterrupted)OSErrorerrnoEINTR)selfr
   r   s      r   controlz2KQueueTests.test_EINTR.<locals>.FakeKQueue.controlC   s    ekk=99r   Nr
   objectr   r(   returnNone)r   r   r   __doc__r&   r	   r   r   r   r   =   s    
:r   r   r   N)r   r   r   doKEvent)r%   r   reactors      r   
test_EINTRzKQueueTests.test_EINTR8   s/    
	: 	:  z; GH 	r   N)r)   r*   )r   r   r   r+   
kqueueSkipskipr.   r	   r   r   r   r   /   s     Dr   r   r'   )r   r(   r   r(   r)   r   )r+   
__future__r   r#   zope.interfacer   twisted.trial.unittestr   twisted.internet.kqreactorr   r   r/   ImportErrorr   r   r   r	   r   r   <module>r6      sQ    #  & +)BJ
$( 9  )(J)s   
8 AA