o
    bv                     @   sT   d Z ddlZddlmZ ddlmZmZ ddlmZ ddl	m
Z
 G dd de
ZdS )	z6
Test that twisted scripts can be invoked as modules.
    N)StringIO)deferreactor)Accumulator)TestCasec                   @   s(   e Zd ZdZdd Zdd Zdd ZdS )		MainTestsz4Test that twisted scripts can be invoked as modules.c                    v   t j}t  t  } _tj ||dddgdd  j	  ddl
m} t d|jdg  fd	d
}||S )z0Invoking python -m twisted should execute twist.-mtwisted--helpNenvr   __main__argvc                    "    j }| }d|v | d S )Ns,   -m twisted [options] plugin [plugin_options]outFgetvalue
assertTrueignfoutputpself 8/usr/lib/python3/dist-packages/twisted/test/test_main.pyprocessEnded!   s
   z,MainTests.test_twisted.<locals>.processEnded)sys
executabler   r   DeferredendedDeferredr   spawnProcess	transport
closeStdinr
   r   patch__file__addCallbackr   cmddr   r   r   r   r   test_twisted   s   

zMainTests.test_twistedc                    r   )z6Invoking python -m twisted.trial should execute trial.r	   ztwisted.trialr   Nr   r   r   r   c                    r   )Ns   -j, --jobs= r   r   r   r   r   r   8   s   z*MainTests.test_trial.<locals>.processEnded)r    r!   r   r   r"   r#   r   r$   r%   r&   twisted.trialr   r'   r(   r)   r*   r   r   r   
test_trial+   s   

zMainTests.test_trialc                 C   sD   t  }| td|}ddl}| |j |  | | d dS )z2Importing twisted.__main__ does not execute twist.stdoutr   N )	r   r'   r    twisted.__main__r   r   restoreassertEqualr   )r   r   monkeyr
   r   r   r   test_twisted_import@   s   zMainTests.test_twisted_importN)__name__
__module____qualname____doc__r-   r/   r6   r   r   r   r   r      s
    r   )r:   r    ior   twisted.internetr   r   twisted.test.test_processr   twisted.trial.unittestr   r   r   r   r   r   <module>   s   