
    `j                         d Z ddlZddlZddlmZ ddlmZ  G d dej                  Z G d dej                  Ze	d	k    r ej
                     dS dS )
z%Test using Fire via `python -m fire`.    N)__main__)	testutilsc                       e Zd ZdZd Zd ZdS )MainModuleTestz:Tests to verify the behavior of __main__ (python -m fire).c                     |                      d          5  t          j        ddg           d d d            d S # 1 swxY w Y   d S )N
gettempdir__main__.pytempfile)assertOutputMatchesr   mainselfs    R/home/jworkman/hermes-web-chat/venv/lib/python3.11/site-packages/fire/main_test.pytestNameSettingzMainModuleTest.testNameSetting   s    		!	!,	/	/ 1 1m]J/0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1s   :>>c                 b   t           j                            ddd          }|                     d|z            5  t	          j        g d           d d d            n# 1 swxY w Y   |                     d|z            5  t	          j        g d           d d d            d S # 1 swxY 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   expecteds     r   testArgPassingzMainModuleTest.testArgPassing    sk   w||GWg66H		!	!&8"3	4	4 I Im
G
G
GI I II I I I I I I I I I I I I I I 
	!	!&8"3	4	4 Q Qm
O
O
OQ Q QQ Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Q Qs#   AA!$A! B$$B(+B(N)__name__
__module____qualname____doc__r   r        r   r   r      s=        BB1 1 1
Q Q Q Q Qr    r   c                   :     e Zd ZdZ fdZd Zd Zd Zd Z xZ	S )MainModuleFileTestz=Tests to verify correct import behavior for file executables.c                    t                                                       t          j        d          | _        | j                            d           | j                                         t          j                    | _        d S )Nz.py)suffixs3   class Foo:
  def double(self, n):
    return 2 * n
)supersetUpr
   NamedTemporaryFilefilewriteflushfile2)r   	__class__s    r   r&   zMainModuleFileTest.setUp-   sd    	GGMMOOO+5999DIIOOMNNNIOO,..DJJJr    c           	          |                      d          5  t          j        d| j        j        ddddg           d d d            d S # 1 swxY w Y   d S )N4r	   Foodouble--n2)r   r   r   r(   namer   s    r   testFileNameFirez#MainModuleFileTest.testFileNameFire5   s    		!	!#	&	& H Hm$).%5#
FH H HH H H H H H H H H H H H H H H H H Hs   %AAAc           	          |                      t                    5  t          j        d| j        j        ddddg           d d d            d S # 1 swxY w Y   d S )Nr	   r/   r0   r1   r2   )assertRaises
ValueErrorr   r   r+   r3   r   s    r   testFileNameFailurez&MainModuleFileTest.testFileNameFailure;   s    			:	&	& I Im$*/5(E3
GI I II I I I I I I I I I I I I I I I I Is   %AAAc                    |                      d          5  t          j                            | j        j                  }t          j        |          5  t          dd          5  t          j
        ddg           d d d            n# 1 swxY w Y   t          j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nr   r
   wr	   )r   r   r   dirnamer(   r3   r   ChangeDirectoryopenr   r   remover   r;   s     r   testFileNameModuleDuplicationz0MainModuleFileTest.testFileNameModuleDuplicationA   s   		!	!,	/	/ 	 		//g$W--  *c"" 	 	
-   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		*              	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	sY   >CB3%B<B3BB3BB3'C3B7	7C:B7	;CCCc                    |                      t          d          5  t          j                            | j        j                  }t          j        |          5  t          dd          5  t          j        ddg           d d d            n# 1 swxY w Y   t          j        d           d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nz'Fire can only be called on \.py files\.foobarr:   r	   )assertRaisesRegexr7   r   r   r;   r(   r3   r   r<   r=   r   r   r>   r?   s     r   testFileNameModuleFileFailurez0MainModuleFileTest.testFileNameModuleFileFailureN   s   			
 J
L 
L 
 
	//g$W--  (C   	 	
-   	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 		(              
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
sY   >CB9+BB9BB9BB9-C9B=	=C B=	CCC)
r   r   r   r   r&   r4   r8   r@   rD   __classcell__)r,   s   @r   r"   r"   *   s        EE/ / / / /H H HI I I        r    r"   r   )r   r   r
   firer   r   BaseTestCaser   r"   r   r   r   r    r   <module>rH      s    , + 				             Q Q Q Q QY+ Q Q Q$0 0 0 0 0/ 0 0 0f z). r    