o
    Ďi                     @   sh   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r2e
  dS 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 d    d S 1 sw   Y  d S )N
gettempdir__main__.pytempfile)assertOutputMatchesr   mainself r   J/home/jeff/fluffinator/venv/lib/python3.10/site-packages/fire/main_test.pytestNameSetting   s   "zMainModuleTest.testNameSettingc                 C   s   t jddd}| d|  tg d W d    n1 s!w   Y  | d|  tg d W d    d S 1 s@w   Y  d S )Npart1part2part3z%s
)r   zos.pathjoinr   r   r   )r   ospath-r   r   r   r   )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jdd| _| jd | j  t | _d S )Nz.py)suffixs3   class Foo:
  def double(self, n):
    return 2 * n
)supersetUpr   NamedTemporaryFilefilewriteflushfile2r
   	__class__r   r   r   -   s
   

zMainModuleFileTest.setUpc              	   C   sJ   |  d td| jjddddg W d    d S 1 sw   Y  d S )N4r   Foodouble--n2)r   r   r	   r!   namer
   r   r   r   testFileNameFire5   
   "z#MainModuleFileTest.testFileNameFirec              	   C   sJ   |  t td| jjddddg W d    d S 1 sw   Y  d S )Nr   r(   r)   r*   r+   )assertRaises
ValueErrorr   r	   r$   r,   r
   r   r   r   testFileNameFailure;   r.   z&MainModuleFileTest.testFileNameFailurec              
   C   s   |  dO tj| jj}t|) tdd t	
ddg W d    n1 s+w   Y  td W d    n1 s?w   Y  W d    d S W d    d S 1 sWw   Y  d S )Nr   r   wr   )r   r   r   dirnamer!   r,   r   ChangeDirectoryopenr   r	   remover   r3   r   r   r   testFileNameModuleDuplicationA   s   "z0MainModuleFileTest.testFileNameModuleDuplicationc              
   C   s   |  tdO tj| jj}t|) t	dd t
ddg W d    n1 s,w   Y  td W d    n1 s@w   Y  W d    d S W d    d S 1 sXw   Y  d S )Nz'Fire can only be called on \.py files\.foobarr2   r   )assertRaisesRegexr0   r   r   r3   r!   r,   r   r4   r5   r   r	   r6   r7   r   r   r   testFileNameModuleFileFailureN   s    "z0MainModuleFileTest.testFileNameModuleFileFailure)
r   r   r   r   r   r-   r1   r8   r;   __classcell__r   r   r%   r   r   *   s    r   r   )r   r   r   firer   r   BaseTestCaser   r   r   r	   r   r   r   r   <module>   s   3