U
    +c1                     @   sd   d Z ddlZddlZddlmZ ddlmZ G dd dejZG dd dejZe	d	kr`e
  dS )
z%Test using Fire via `python -m fire`.    N)__main__)	testutilsc                   @   s    e Zd ZdZdd Zdd ZdS )MainModuleTestz:Tests to verify the behavior of __main__ (python -m fire).c              	   C   s(   |  d tddg W 5 Q R X d S )N
gettempdir__main__.pytempfile)assertOutputMatchesr   mainself r   2/tmp/pip-unpacked-wheel-1xt1w7un/fire/main_test.pytestNameSetting   s    zMainModuleTest.testNameSettingc                 C   sx   t jddd}| d|  tddddddg W 5 Q R X | d|   tddd	d
ddddg W 5 Q R X d S )NZpart1Zpart2Zpart3z%s
r   zos.pathjoinospath-)r   r   r   r   r   r	   )r   expectedr   r   r   testArgPassing    s    zMainModuleTest.testArgPassingN)__name__
__module____qualname____doc__r   r   r   r   r   r   r      s   r   c                       s@   e Zd ZdZ fddZdd Zdd Zdd	 Zd
d Z  Z	S )MainModuleFileTestz=Tests to verify correct import behavior for file executables.c                    s@   t t|   tjdd| _| jd | j  t | _d S )Nz.py)suffixs3   class Foo:
  def double(self, n):
    return 2 * n
)	superr   setUpr   NamedTemporaryFilefilewriteflushfile2r
   	__class__r   r   r   -   s
    
zMainModuleFileTest.setUpc              	   C   s4   |  d  td| jjddddg W 5 Q R X d S )N4r   Foodouble--n2)r   r   r	   r   namer
   r   r   r   testFileNameFire5   s    z#MainModuleFileTest.testFileNameFirec              	   C   s4   |  t  td| jjddddg W 5 Q R X d S )Nr   r%   r&   r'   r(   )assertRaises
ValueErrorr   r	   r!   r)   r
   r   r   r   testFileNameFailure;   s    z&MainModuleFileTest.testFileNameFailurec                 C   sn   |  dZ tj| jj}t|4 tdd t	
ddg W 5 Q R X td W 5 Q R X W 5 Q R X d S )Nr   r   wr   )r   r   r   dirnamer   r)   r   ChangeDirectoryopenr   r	   remover   r/   r   r   r   testFileNameModuleDuplicationA   s    z0MainModuleFileTest.testFileNameModuleDuplicationc                 C   sp   |  tdZ tj| jj}t|4 t	dd t
ddg W 5 Q R X td W 5 Q R X W 5 Q R X d S )Nz'Fire can only be called on \.py files\.Zfoobarr.   r   )assertRaisesRegexr,   r   r   r/   r   r)   r   r0   r1   r   r	   r2   r3   r   r   r   testFileNameModuleFileFailureN   s    z0MainModuleFileTest.testFileNameModuleFileFailure)
r   r   r   r   r   r*   r-   r4   r6   __classcell__r   r   r"   r   r   *   s   r   r   )r   r   r   Zfirer   r   ZBaseTestCaser   r   r   r	   r   r   r   r   <module>   s   3