§
    Ètºf�  ã                   ó2  — d Z ddlmZ ddlmZmZmZ ddlZddl	m
Z
 ddlmZ ddlmZmZ ddlmZ d	d
lmZ d	dlmZ d	dlmZ d	dlmZmZ d	dlmZ ddlmZ ddlmZ  G d„ dej         j!        j"        ¦  «        Z# G d„ dej         j!        j"        ¦  «        Z$dS )z0
Tests for L{twisted.application.twist._twist}.
é    )Ústdout)ÚAnyÚDictÚListN)ÚIReactorCore)ÚMemoryReactor)ÚLogLevelÚjsonFileLogObserver)ÚSignalCapturingMemoryReactoré   )Ú
ExitStatus)ÚRunner)Ú	DummyExit)ÚIServiceÚMultiService)Ú_twisté   )ÚTwistOptions)ÚTwistc                   ób   — 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d„Zdd„Zdd„ZdS )Ú
TwistTestsz
    Tests for L{Twist}.
    ÚreturnNc                 ó.   — |                       ¦   «          d S ©N)ÚpatchInstallReactor©Úselfs    úh/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/twisted/application/twist/test/test_twist.pyÚsetUpzTwistTests.setUp   s   € Ø× Ò Ñ"Ô"Ð"Ð"Ð"ó    c                 ón   — t          ¦   «         | _        |                      t          d| j        ¦  «         dS )zX
        Patch L{_twist.exit} so we can capture usage and prevent actual exits.
        ÚexitN)r   r"   Úpatchr   r   s    r   Ú	patchExitzTwistTests.patchExit!   s-   € õ ‘K”KˆŒ	Ø�
Š
•6˜6 4¤9Ñ-Ô-Ð-Ð-Ð-r    c                 ó„   ‡ — i ‰ _         dt          dt          dt          fˆ fd„}‰                      t          d|¦  «         dS )zo
        Patch C{_options.installReactor} so we can capture usage and prevent
        actual installs.
        Ú_Únamer   c                 ó8   •— t          ¦   «         }|‰j        |<   |S r   )r   ÚinstalledReactors)r&   r'   Úreactorr   s      €r   ÚinstallReactorz6TwistTests.patchInstallReactor.<locals>.installReactor/   s   ø€ Ý#‘o”oˆGØ+2ˆDÔ" 4Ñ(ØˆNr    r+   N)r)   r   Ústrr   r#   )r   r+   s   ` r   r   zTwistTests.patchInstallReactor(   s_   ø€ ð
 ;=ˆÔð	�lð 	µ#ð 	½,ð 	ð 	ð 	ð 	ð 	ð 	ð
 	�
Š
•<Ð!1°>ÑBÔBÐBÐBÐBr    c                 ól   ‡ — g ‰ _         dt          ddfˆ fd„}‰                      t          d|¦  «         dS )zo
        Patch L{MultiService.startService} so we can capture usage and prevent
        actual starts.
        Úservicer   Nc                 ó<   •— ‰j                              | ¦  «         d S r   )ÚserviceStartsÚappend)r.   r   s    €r   ÚstartServicez2TwistTests.patchStartService.<locals>.startService=   s    ø€ ØÔ×%Ò% gÑ.Ô.Ð.Ð.Ð.r    r2   )r0   r   r#   r   )r   r2   s   ` r   ÚpatchStartServicezTwistTests.patchStartService6   sW   ø€ ð
 .0ˆÔð	/¥(ð 	/¨tð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	�
Š
•< °Ñ>Ô>Ð>Ð>Ð>r    c                 óh   — t          j        ddg¦  «        }|                      |t          ¦  «         dS )zI
        L{Twist.options} given valid arguments returns options.
        ÚtwistÚwebN)r   ÚoptionsÚassertIsInstancer   )r   r7   s     r   Útest_optionsValidArgumentsz%TwistTests.test_optionsValidArgumentsB   s4   € õ ”- ¨%Ð 0Ñ1Ô1ˆà×Ò˜g¥|Ñ4Ô4Ð4Ð4Ð4r    c                 óÒ  — |                       ¦   «          t          j        ddg¦  «         |                      | j        j        t          j        ¦  «         |                      | j        j	        ¦  «         |  
                    | j        j	                             d¦  «        ¦  «         |  
                    | j        j	                             dt          ¦   «         › �¦  «        ¦  «         dS )z€
        L{Twist.options} given invalid arguments exits with
        L{ExitStatus.EX_USAGE} and an error/usage message.
        r5   z--bogus-bagelszError: z

N)r$   r   r7   ÚassertIdenticalr"   Ústatusr   ÚEX_USAGEÚassertIsNotNoneÚmessageÚ
assertTrueÚ
startswithÚendswithr   r   s    r   Útest_optionsInvalidArgumentsz'TwistTests.test_optionsInvalidArgumentsJ   sÖ   € ð
 	�ŠÑÔÐåŒ�wÐ 0Ð1Ñ2Ô2Ð2à×Ò˜TœYÔ-­zÔ/BÑCÔCÐCØ×Ò˜TœYÔ.Ñ/Ô/Ð/Ø�ŠØŒIÔ×(Ò(¨Ñ3Ô3ñ	
ô 	
ð 	
ð 	�ŠØŒIÔ×&Ò&Ø'•|‘~”~Ð'Ð'ñô ñ	
ô 	
ð 	
ð 	
ð 	
r    c                 óÊ   — t          j        ddg¦  «        }t          j        |j        d         |j        ¦  «        }|                      t          j        |¦  «        ¦  «         dS )z:
        L{Twist.service} returns an L{IService}.
        r5   r6   N)r   r7   r.   ÚpluginsÚ
subOptionsr@   r   Ú
providedBy)r   r7   r.   s      r   Útest_servicezTwistTests.test_service^   sV   € õ ”- ¨%Ð 0Ñ1Ô1ˆÝ”- ¤°Ô 6¸Ô8JÑKÔKˆØ�Š�Ô+¨GÑ4Ô4Ñ5Ô5Ð5Ð5Ð5r    c                 óŽ  — t          j        ddg¦  «        }|d         }|j        }|€J ‚t          j        |j        |         |j        ¬¦  «        }|                      ¦   «          t          j        ||¦  «         |                      | j	        |g¦  «         |                      |j
        d         d         |j        di fg¦  «         dS )	z‹
        L{Twist.startService} starts the service and registers a trigger to
        stop the service when the reactor shuts down.
        r5   r6   r*   N)Úpluginr7   ÚbeforeÚshutdown© )r   r7   Ú
subCommandr.   rE   rF   r3   r2   ÚassertEqualr0   ÚtriggersÚstopService)r   r7   r*   rN   r.   s        r   Útest_startServicezTwistTests.test_startServicef   sß   € õ
 ”- ¨%Ð 0Ñ1Ô1ˆà˜)Ô$ˆØÔ'ˆ
ØÐ%Ð%Ð%Ý”-Ø”? :Ô.ØÔ&ð
ñ 
ô 
ˆð
 	×ÒÑ Ô Ð åÔ˜7 GÑ,Ô,Ð,à×Ò˜Ô+¨g¨YÑ7Ô7Ð7Ø×ÒØÔ˜XÔ& zÔ2°gÔ6IÈ2ÈrÐ5RÐ4Sñ	
ô 	
ð 	
ð 	
ð 	
r    c           	      ó¶  ‡— g Š|                       t          dˆfd„¦  «         |                       t          dd„ ¦  «         t          j        g d¢¦  «        }t          j        |¦  «         |                      t          ‰¦  «        d¦  «         |                      ‰d         t          | j        d         t          j
        t          t          ¬	¦  «        ¦  «         d
S )zi
        L{Twist.run} runs the runner with arguments corresponding to the given
        options.
        Ú__init__c                 ó.   •— ‰                      |¦  «        S r   )r1   )r   ÚargsÚargsSeens     €r   ú<lambda>z%TwistTests.test_run.<locals>.<lambda>…   s   ø€ ¸H¿OºOÈDÑ<QÔ<Q€ r    Úrunc                 ó   — d S r   rM   r   s    r   rX   z%TwistTests.test_run.<locals>.<lambda>†   s   € ¨t€ r    ©r5   z--reactor=defaultz--log-format=jsonr6   é   r   Údefault©r*   ÚdefaultLogLevelÚlogFileÚfileLogObserverFactoryN)r#   r   r   r7   rY   rO   ÚlenÚdictr)   r	   Úinfor   r
   )r   ÚtwistOptionsrW   s     @r   Útest_runzTwistTests.test_run~   sÝ   ø€ ð
 ˆà�
Š
•6˜:Ð'QÐ'QÐ'QÐ'QÑRÔRÐRØ�
Š
•6˜5Ð"3Ð"3Ñ4Ô4Ð4å”}ØFÐFÐFñ
ô 
ˆõ 	Œ	�,ÑÔÐà×Ò�˜X™œ¨Ñ*Ô*Ð*Ø×ÒØ�QŒKÝØÔ.¨yÔ9Ý (¤ÝÝ':ð	ñ ô ñ	
ô 	
ð 	
ð 	
ð 	
r    c           	      ó0  ‡— |                       ¦   «          g Š G ˆfd„d¦  «        }|                      t          d|¦  «         t          j        g d¢¦  «         |                      t          | j        ¦  «        d¦  «         |                      t          ‰¦  «        d¦  «         |                      ‰d         j        t          | j
        d         t          j        t          t          ¬¦  «        ¦  «         |                      ‰d         j        d¦  «         dS )	zy
        L{Twist.main} runs the runner with arguments corresponding to the given
        command line arguments.
        c                   ó,   •— e Zd Zdeddfˆ fd„Zdd„ZdS )ú$TwistTests.test_main.<locals>.RunnerÚkwargsr   Nc                 óN   •— || _         d| _        ‰                     | ¦  «         d S )Nr   )rV   Úrunsr1   )r   rj   Úrunnerss     €r   rT   z-TwistTests.test_main.<locals>.Runner.__init__¢   s)   ø€ Ø"�”	Ø�”	Ø—’˜tÑ$Ô$Ð$Ð$Ð$r    c                 ó&   — | xj         dz  c_         d S )Nr\   )rl   r   s    r   rY   z(TwistTests.test_main.<locals>.Runner.run§   s   € Ø�	”	˜Q‘�	”	�	�	r    ©r   N)Ú__name__Ú
__module__Ú__qualname__r   rT   rY   )rm   s   €r   r   ri   ¡   sU   ø€ € € € € ð%¨ð %°ð %ð %ð %ð %ð %ð %ð
ð ð ð ð ð r    r   r[   r\   r   r]   r^   N)r3   r#   r   r   ÚmainrO   rb   r0   rV   rc   r)   r	   rd   r   r
   rl   )r   r   rm   s     @r   Ú	test_mainzTwistTests.test_main˜   s'  ø€ ð
 	×ÒÑ Ô Ð àˆð	ð 	ð 	ð 	ð 	ð 	ð 	ñ 	ô 	ð 	ð 	�
Š
•6˜8 VÑ,Ô,Ð,åŒ
ÐMÐMÐMÑNÔNÐNà×Ò�˜TÔ/Ñ0Ô0°!Ñ4Ô4Ð4Ø×Ò�˜W™œ qÑ)Ô)Ð)Ø×ÒØ�AŒJŒOÝØÔ.¨yÔ9Ý (¤ÝÝ':ð	ñ ô ñ	
ô 	
ð 	
ð 	×Ò˜ œœ¨!Ñ,Ô,Ð,Ð,Ð,r    ro   )rp   rq   rr   Ú__doc__r   r$   r   r3   r9   rC   rH   rR   rf   rt   rM   r    r   r   r      sê   € € € € € ðð ð#ð #ð #ð #ð.ð .ð .ð .ðCð Cð Cð Cð
?ð 
?ð 
?ð 
?ð5ð 5ð 5ð 5ð
ð 
ð 
ð 
ð(6ð 6ð 6ð 6ð
ð 
ð 
ð 
ð0
ð 
ð 
ð 
ð4!-ð !-ð !-ð !-ð !-ð !-r    r   c                   ó2   — e Zd ZdZdd„Zdd„Zdd„Zdd„ZdS )	ÚTwistExitTestszr
    Tests to verify that the Twist script takes the expected actions related
    to signals and the reactor.
    r   Nc                 ó¾   ‡ — d‰ _         dt          dd fˆ fd„}‰                      t          d|¦  «         dt          dd fd„}‰                      t          d|¦  «         d S )	NFÚsigr   c                 ó   •— d‰_         dS )z³
            Fake to capture whether L{twisted.application._exitWithSignal
            was called.

            @param sig: Signal value
            @type sig: C{int}
            TN)ÚexitWithSignalCalled)ry   r   s    €r   ÚfakeExitWithSignalz0TwistExitTests.setUp.<locals>.fakeExitWithSignalÅ   s   ø€ ð )-ˆDÔ%Ð%Ð%r    Ú_exitWithSignalr&   c                 ó   — dS )z©
            Prevent Runner from adding new log observers or other
            tests outside this module will fail.

            @param _: Unused self param
            NrM   )r&   s    r   ÚstartLoggingz*TwistExitTests.setUp.<locals>.startLoggingÑ   s   € € € r    r   )r{   Úintr#   r   r   )r   r|   r   s   `  r   r   zTwistExitTests.setUpÂ   s‘   ø€ Ø$)ˆÔ!ð	-¥Cð 	-¨Dð 	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	�
Š
•6Ð,Ð.@ÑAÔAÐAð	�Fð 	 tð 	ð 	ð 	ð 	ð 	�
Š
•6˜>¨<Ñ8Ô8Ð8Ð8Ð8r    c                 óÆ   — t          ¦   «         }d|_        t          ¦   «         }||d<   t          |d<   t	          j        |¦  «         |                      | j        ¦  «         dS )zg
        _exitWithSignal is not called if the reactor's _exitSignal attribute
        is zero.
        Nr*   ra   )r   Ú_exitSignalr   r
   r   rY   ÚassertFalser{   ©r   r*   r7   s      r   Ú%test_twistReactorDoesntExitWithSignalz4TwistExitTests.test_twistReactorDoesntExitWithSignalÛ   sb   € õ
 /Ñ0Ô0ˆØ"ˆÔÝ‘.”.ˆØ$ˆ�	ÑÝ,?ˆÐ(Ñ)åŒ	�'ÑÔÐØ×Ò˜Ô2Ñ3Ô3Ð3Ð3Ð3r    c                 ó¸   — t          ¦   «         }t          ¦   «         }||d<   t          |d<   t          j        |¦  «         |                      | j        ¦  «         dS )zŸ
        _exitWithSignal is not called if the runner's reactor does not
        implement L{twisted.internet.interfaces._ISupportsExitSignalCapturing}
        r*   ra   N)r   r   r
   r   rY   rƒ   r{   r„   s      r   Ú$test_twistReactorHasNoExitSignalAttrz3TwistExitTests.test_twistReactorHasNoExitSignalAttré   sX   € õ
  ‘/”/ˆÝ‘.”.ˆØ$ˆ�	ÑÝ,?ˆÐ(Ñ)ÝŒ	�'ÑÔÐØ×Ò˜Ô2Ñ3Ô3Ð3Ð3Ð3r    c                 óÆ   — t          ¦   «         }d|_        t          ¦   «         }||d<   t          |d<   t	          j        |¦  «         |                      | j        ¦  «         dS )zb
        _exitWithSignal is called if the runner's reactor exits due
        to a signal.
        r   r*   ra   N)r   r‚   r   r
   r   rY   r@   r{   r„   s      r   Ú test_twistReactorExitsWithSignalz/TwistExitTests.test_twistReactorExitsWithSignalõ   s`   € õ
 /Ñ0Ô0ˆØˆÔÝ‘.”.ˆØ$ˆ�	ÑÝ,?ˆÐ(Ñ)ÝŒ	�'ÑÔÐØ�Š˜Ô1Ñ2Ô2Ð2Ð2Ð2r    ro   )rp   rq   rr   ru   r   r…   r‡   r‰   rM   r    r   rw   rw   ¼   sn   € € € € € ðð ð
9ð 9ð 9ð 9ð24ð 4ð 4ð 4ð
4ð 
4ð 
4ð 
4ð3ð 3ð 3ð 3ð 3ð 3r    rw   )%ru   Úsysr   Útypingr   r   r   Útwisted.trial.unittestÚtwistedÚtwisted.internet.interfacesr   Útwisted.internet.testingr   Útwisted.loggerr	   r
   Útwisted.test.test_twistdr   Úrunner._exitr   Úrunner._runnerr   Úrunner.test.test_runnerr   r.   r   r   r5   r   Ú_optionsr   r   ÚtrialÚunittestÚTestCaser   rw   rM   r    r   ú<module>r™      s   ððð ð Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø AÐ AÐ AÐ AÐ AÐ AØ &Ð &Ð &Ð &Ð &Ð &Ø $Ð $Ð $Ð $Ð $Ð $Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø -Ð -Ð -Ð -Ð -Ð -Ð -Ð -Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð ð`-ð `-ð `-ð `-ð `-�”Ô'Ô0ñ `-ô `-ð `-ðFD3ð D3ð D3ð D3ð D3�W”]Ô+Ô4ñ D3ô D3ð D3ð D3ð D3r    