o
    Zbs                     @   s   d Z ddlmZ ddlmZ ddlmZ ddlZddlZddlZddlmZ	 ddlm
Z
 ddlZddlZG dd	 d	e
jZed
krGe
  dS dS )zTests for the fire module.    )absolute_import)division)print_functionN)test_components)	testutilsc                   @   s2  e 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d Zdd Zdd Zdd Zdd Zeejdd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Z d6d7 Z!d8d9 Z"d:d; Z#d<d= Z$d>d? Z%d@dA Z&dBdC Z'dDdE Z(dFdG Z)dHdI Z*dJdK Z+dLdM Z,dNdO Z-dPdQ Z.dRdS Z/dTdU Z0dVdW Z1dXdY Z2dZd[ Z3d\d] Z4d^d_ Z5d`da Z6dbdc Z7ddde Z8dfdg Z9dhdi Z:djdk Z;dldm Z<dndo Z=dpdq Z>drds Z?dtdu Z@dvdw ZAdxdy ZBeeCjDdzd{ d|kd}d~d ZEeejddd ZFdS )FireTestc                 C   s   t jtddg ttj ttj ttj	 W d    n1 s&w   Y  | 
tjtjddd | 
tjtjddd | 
tjtjdd	gdd | 
tjtjd
dgdd | 
tjtjdd	gdd d S )NargvZprognameztriple 4command   )double2   triple4r   r   )mockpatchobjectsysfireFiretcEmptyZOldStyleEmptyZWithInitassertEqual
NoDefaultsWithDefaultsOldStyleWithDefaultsself r   >D:\Projects\ConvertPro\env\Lib\site-packages\fire\fire_test.pytestFire"   s$   zFireTest.testFirec                 C   s4   |  ttjdd |  ttjddgd d S )Nzdouble 2r   r   r   )r   r   r   r   r   r   r   r   r    testFirePositionalCommand0   s   z"FireTest.testFirePositionalCommandc                 C   s@   |  t tjtjdd W d    d S 1 sw   Y  d S )N
   r	   )assertRaises
ValueErrorr   r   r   r   r   r   r   r    testFireInvalidCommandArg5   s   "z"FireTest.testFireInvalidCommandArgc              	   C   s   t jtdtjdddg. | jdd d t	t
j W d    n1 s(w   Y  W d    d S W d    d S 1 s@w   Y  d S )Nr   zpython-firer   zbase_filename.pyzSYNOPSIS.*base_filename.py)stdoutstderr)r   r   r   r   ospathjoinZassertOutputMatchesr   r   r   r   r   r   r   r    testFireDefaultName:   s   

"zFireTest.testFireDefaultNamec                 C   s   |  tjtjdgdd d S )NZtenr	   r#   r   r   r   r   MixedDefaultsr   r   r   r    testFireNoArgsB   s   zFireTest.testFireNoArgsc                 C   s   |  d tjtjdgd W d    n1 sw   Y  |  d tjtjdgd W d    n1 s7w   Y  |  d tjtjddgd W d    n1 sVw   Y  | t tjtj	ddgd W d    d S 1 svw   Y  d S )	N   Znomethodr	   r   deltaxZ
reciprocalz0.0)
assertRaisesFireExitr   r   r   r   r   TypedPropertiesr$   ZeroDivisionErrorNumberDefaultsr   r   r   r    testFireExceptionsE   s   "zFireTest.testFireExceptionsc                 C   t   |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd d S Nr   --count5r	   r#   r   r;   r<      r   r   r   r   r   r   r   r   r   r    testFireNamedArgsR   $   zFireTest.testFireNamedArgsc                 C   r8   )N)r   -countr<   r	   r#   )r   rB   r<   r>   r?   r   r   r   r    testFireNamedArgsSingleHyphen^   rA   z&FireTest.testFireNamedArgsSingleHyphenc                 C   <   |  tjtjddgdd |  tjtjddgdd d S )Nr   z	--count=5r	   r#   r   r>   r   r   r   r   r   r   r   r   r    testFireNamedArgsWithEqualsj      z$FireTest.testFireNamedArgsWithEqualsc                 C   rD   )Nr   z-count=5r	   r#   r   r>   rE   r   r   r   r    'testFireNamedArgsWithEqualsSingleHyphenp   rG   z0FireTest.testFireNamedArgsWithEqualsSingleHyphenc                 C      |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg d	dd |  tjtjg d
dd d S )N)sum1r   r	      )rJ   --alpharK   r   )rJ   --betarK   r   r   )rJ   rK   rM   r   )rJ   rK   rN   r   )rJ   rM   rK   rN   r   )rJ   rN   rK   rM   r   r-   r   r   r   r    testFireAllNamedArgsv   sB   zFireTest.testFireAllNamedArgsc                 C   sr   |  tjtjdgdd |  tjtjddgdd |  tjtjg ddd |  tjtjg ddd d S )	NrJ   r	   r   rK      )rJ   rM   rK   )rJ   rN   r   r   r-   r   r   r   r    testFireAllNamedArgsOneMissing   s   z'FireTest.testFireAllNamedArgsOneMissingc                 C   rI   )N)identityrK   r   r	   )rP   r0   )rR   rM   rK   r   )rR   rN   rK   r   )r0   rP   )rR   rK   rM   r   )rR   rK   rN   r   )rR   rM   rK   rN   r   )rR   rN   rK   rM   r   r-   r   r   r   r    testFirePartialNamedArgs   sR   z!FireTest.testFirePartialNamedArgsc                 C   s   |  d tjtjdgd W d    n1 sw   Y  |  d tjtjg dd W d    n1 s8w   Y  | tjtjddgdd | tjtjg ddd d S )Nr0   rR   r	   )rR   rN   r   rK   )rP   0)rR   rM   rK   )r3   r   r   r   r.   r   r   r   r   r    "testFirePartialNamedArgsOneMissing   s   z+FireTest.testFirePartialNamedArgsOneMissingc                 C   rD   )Nr   r<   r	   r#   r   r>   )r   r   r   r   ZAnnotationsr   r   r   r    testFireAnnotatedArgs   s    zFireTest.testFireAnnotatedArgsz'Keyword-only arguments not in Python 2.c                 C   s   |  d tjtjjddgd W d    n1 sw   Y  | tjtjjg ddd | tjtjjg ddd d S )	Nr0   r   r<   r	   r:   r#   r=   r>   )r3   r   r   r   py3ZKeywordOnlyr   r   r   r   r    testFireKeywordOnlyArgs   s   z FireTest.testFireKeywordOnlyArgsc                 C   s8   |  tjtjdgdd |  tjtjdgdd d S )Nalphar	   Tbeta)rP   r0      r   r   r   r   r4   r   r   r   r    testFireProperties   s   zFireTest.testFirePropertiesc                 C   <   |  tjtjg ddd |  tjtjg ddd d S )N)charlier   Zhellor	   Z
hellohello)r_   r   wZwwwr\   r   r   r   r    testFireRecursion   s   zFireTest.testFireRecursionc                 C   sD   |  tjtjg ddg d |  tjtjg ddg d d S )N)cumsumsabcdr	   )rc   ababcZabcd)rb   rK   r   3r   )rP   r[      r#   r   r   r   r   ZVarArgsr   r   r   r    testFireVarArgs   s   zFireTest.testFireVarArgsc                 C   r^   )N)varcharsrK   r   re   rf   r	   )rP   r0   cd)rm   ri   r   re   rf   e)r[   r   Zcderk   r   r   r   r    testFireVarArgsWithNamedArgs   s   z%FireTest.testFireVarArgsWithNamedArgsc                 C   s   |  tjtjg ddddd |  tjtjg ddddi |  tjtjg d	dddi |  tjtjd
dddi |  tjtjg ddd |  tjtjg ddd d S )N)propsz--nameDavidz--ageZ24r	   rr      )nameZage)rq   	--messagez#"This is a message it has -- in it"message!This is a message it has -- in it)rq   ru   rw   z3props --message "This is a message it has -- in it")upperrM   ArN   Bz
ALPHA BETA)rx   rM   ry   rN   rz   -lowerz
alpha betar   r   r   r   ZKwargsr   r   r   r    testFireKeywordArgs   sR   zFireTest.testFireKeywordArgsc                 C   sP   |  tjtjg ddddddif |  tjtjg dddd ddif d S )	N)runHelloWorld--cellisr	   r   r   cellr   )r   r   r   okr   r}   r   r   r   r    ,testFireKeywordArgsWithMissingPositionalArgs  s   z5FireTest.testFireKeywordArgsWithMissingPositionalArgsc                 C   s@   |  tjt g ddd |  tjt g ddd d S r9   rE   r   r   r   r    testFireObject  s   zFireTest.testFireObjectc                 C   sF   ddddd}|  tj|ddgdd	 |  tj|d
gdd d S )Nr   c                 S   s   d|  S )Nr0   r   )r2   r   r   r    <lambda>      z'FireTest.testFireDict.<locals>.<lambda>Zswiss)r   cheeser   r<   r	   r#   r   r   r   r   r   r   	componentr   r   r    testFireDict  s
   zFireTest.testFireDictc                 C   st   |  tjtjddgdd |  tjtjg ddd | tjtjddgdt |  tjtjg ddd	 d S )
Nr1   echor	   E)r1   r   r|   ro   nest)r1   r   rT   rc   )r   r   r   r   r4   assertIsInstancedictr   r   r   r    testFireObjectWithDict  s   zFireTest.testFireObjectWithDictc                 C   *   t  }tj|g d}| t|d d S Nr	   r[   )r   Z
simple_setr   r   r   lenr   r   resultr   r   r    testFireSet$     zFireTest.testFireSetc                 C   r   r   )r   Zsimple_frozensetr   r   r   r   r   r   r   r    testFireFrozenset)  r   zFireTest.testFireFrozensetc                 C   sT   g d}|  tj|dgdd |  tj|dgdd |  tj|dgdd d S )N)Zzeroonetwothreer   r	   r   ri   r   z-1r   r   r   r   r    testFireList.  s   zFireTest.testFireListc                 C   <   |  tjtjddgdd |  tjtjddgdd d S )Nr   rT   r	   ZalexrK   bethanyr\   r   r   r   r    testFireObjectWithList4     zFireTest.testFireObjectWithListc                 C   r   )NfoxrT   r	   ZcarryrK   divider\   r   r   r   r    testFireObjectWithTuple:  r   z FireTest.testFireObjectWithTuplec                 C       |  tjtjg ddd d S )N)r   countr   r	   rP   r\   r   r   r   r    testFireObjectWithListAsObject@     z'FireTest.testFireObjectWithListAsObjectc                 C   r   )N)r   r   r   r	   rP   r\   r   r   r   r    testFireObjectWithTupleAsObjectE  r   z(FireTest.testFireObjectWithTupleAsObjectc                 C   sz   |  tjg ddd dd }|  tjddgdd |  tjd	d
gdd ddd}|  tjddgdh d d S )N)r   r   r   10r	      c                 S   s   | d S )Nr   )textr   r   r    r   M  r   z.FireTest.testFireNoComponent.<locals>.<lambda>	last_charz"Hello"oz	last-charz"World"rf   r   c                 S   s   t t| S N)setrange)r   r   r   r    r   P  s    rsetr<   >   r   rP   r0   r[   r   r   r   )r   r   r   r   r   r    testFireNoComponentJ  s   
 zFireTest.testFireNoComponentc                 C   s8   |  tjtjdgdd |  tjtjdgdd d S )Nzunderscore-exampler	   zfish fingersZunderscore_exampler   r   r   r   ZUnderscoresr   r   r   r    testFireUnderscoresS  s   zFireTest.testFireUnderscoresc                 C   sX   |  tjtjddgdd |  tjtjddgdd |  tjtjddgdd d S )Nzunderscore-functionexampler	   Zunderscore_functionz--underscore-arg=scorescorez--underscore_arg=scorer   r   r   r   r    testFireUnderscoresInArg[  s$   z!FireTest.testFireUnderscoresInArgc                 C   s   |  tjtjddgdd |  tjtjddgdd |  tjtjddgdd |  tjtjddgdd |  tjtjdd	gdd |  tjtjdd
gdd d S )Nas-boolTruer	   TFalseFz
--arg=Truez--arg=Falsez--argz--noarg)r   r   r   r   BoolConverterr   r   r   r    testBoolParsingh  s$   zFireTest.testBoolParsingc                 C   s   |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg d	dd
 |  tjtjg ddd d S )N)rR   r   r   r	   TF)rR   z--alpha=Falser   Fr#   )rR   rM   rN   r   Tr#   rR   rM   	--beta=10)rR   z	--noalpharN   FT)rR   r   rN   )r#   Tr-   r   r   r   r    testBoolParsingContinuedv  sD   z!FireTest.testBoolParsingContinuedc                 C   s   |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd |  tjtjg d	dd
 d S )N)rR   z-alpha=Falser   r	   r   )rR   -alpha-betar   r   )rR   r   z-beta=10)rR   z-noalphar   r   )rR   r   z-10r   )iTr-   r   r   r   r    testBoolParsingSingleHyphen  <   z$FireTest.testBoolParsingSingleHyphenc                 C   s   |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd | d tjtjg dd W d    n1 sDw   Y  |  tjtjg d	dd
 |  tjtjddgdd |  tjtjddd d S )N)rR   rM   r   r	   )r#   rT   r   r   )rR   r   r   r0   )rR   rM   --test)rR   rM   r   z"--test")Tr   rR   z--alpha=--test)r   rT   zidentity --alpha \"--test\"r   r   r   r   r.   r3   r   r   r   r     testBoolParsingLessExpectedCases  sJ   z)FireTest.testBoolParsingLessExpectedCasesc                 C   s   |  tjtjddgdd |  tjtjg ddd |  tjtjg ddd |  tjtjg d	dd
 |  tjtjg ddd |  tjtjg ddd | d tjtjddgd W d    d S 1 sow   Y  d S )NrR   -ar	   TrT   )rR   r   r   r   )rR   r   -bTT)rR   r   42r   )*   T)rR   r   r   r   r   r   r#   )rR   rM   r   r   r   r0   r   )r   r   r   r   r.   r3   SimilarArgNamesr   r   r   r    testSingleCharFlagParsing  sN   "z"FireTest.testSingleCharFlagParsingc                 C   s   |  tjtjddgdd |  tjtjg ddd |  tjtjg ddd |  tjtjg d	dd
 |  tjtjg ddd d S )NrR   z-a=Truer	   r   )rR   z-a=3r   )r[   r#   )rR   z-a=Falsez-b=15)Fr>   )rR   r   r   z-b=12)r   r   )rR   z-a=42r   r   r   r-   r   r   r   r    "testSingleCharFlagParsingEqualSign  r   z+FireTest.testSingleCharFlagParsingEqualSignc                 C   s   |  tjtjddgdd |  tjtjddgdd |  tjtjddgdd |  tjtjddgdd	 |  tjtjg d
dd d S )N	identity2r   r	   )TNz-a=10)r#   Nz--ar   )NT)r   r   r   r   )r   r   r   r   r   r   r   r   r    #testSingleCharFlagParsingExactMatch  r   z,FireTest.testSingleCharFlagParsingExactMatchc                 C   r   )N)rJ   z-Dr<   z-Gr   r	   r>   )r   r   r   r   ZCapitalizedArgNamesr   r   r   r    &testSingleCharFlagParsingCapitalLetter     z/FireTest.testSingleCharFlagParsingCapitalLetterc                 C   s  dd }|  tj|ddgdd |  tj|ddgdd | d	 tj|ddgd W d    n1 s7w   Y  d
d }|  tj|dgddi f |  tj|dgddi f | d	 tj|dgd W d    n1 stw   Y  |  tj|ddgddddif dd }|  tj|ddgddddif |  tj|ddgddddif |  tj|ddgddddif d S )Nc                 S      | |fS r   r   )thingnothingr   r   r    fn1     z+FireTest.testBoolParsingWithNo.<locals>.fn1z--thingz	--nothingr	   r   z--nonothingr   r0   c                 [   r   r   r   )r   kwargsr   r   r    fn2
  r   z+FireTest.testBoolParsingWithNo.<locals>.fn2TFz--nothing=Truer   c                 [   r   r   r   )argr   r   r   r    fn3  r   z+FireTest.testBoolParsingWithNo.<locals>.fn3z--arg=valuevaluer   )r   r   r   r3   )r   r   r   r   r   r   r    testBoolParsingWithNo  s:   



zFireTest.testBoolParsingWithNoc                 C   s   |  dd tjtjg dd W d    n1 sw   Y  |  dd tjtjg dd W d    n1 s;w   Y  |  dd tjtjddgd W d    d S 1 s\w   Y  d S )Nr   zFire trace:
)r   r   ----tracer	   )r   r   r   -tr   r   r3   r   r   r   r   r   r   r   r    testTraceFlag  s   "zFireTest.testTraceFlagc                 C   s   |  d tjtjg dd W d    n1 sw   Y  |  d tjtjg dd W d    n1 s9w   Y  |  d tjtjddgd W d    d S 1 sYw   Y  d S )Nr   )r   r   r   --helpr	   )r   r   r   -hr   r   r   r   r   r   r    testHelpFlag%  s   "zFireTest.testHelpFlagc                 C   s   |  dd tjtjg dd W d    n1 sw   Y  |  dd tjtjg dd W d    n1 s;w   Y  |  dd tjtjg dd W d    d S 1 s\w   Y  d S )Nr   zFire trace:
.*SYNOPSIS)r   r   r   r   r   r	   )r   r   r   r   r   )r   r   r   r   r   r   r   r    testHelpFlagAndTraceFlag-  s   "z!FireTest.testHelpFlagAndTraceFlagc                 C   s0   t jtjddgd}| d| | d| d S )Nr   --completionr	   r   r   r   r   r   r   assertInr   completion_scriptr   r   r    testTabCompletionNoName6  s   z FireTest.testTabCompletionNoNamec                 C   s2   t jtjddgdd}| d| | d| d S )Nr   r   re   r
   rt   r   r   r   r   r   r   r    testTabCompletion;  s
   zFireTest.testTabCompletionc                 C   s<   ddd i}t j|ddgdd}| d| | d| d S )NZmultiplyc                 S   s   | | S r   r   )rc   rd   r   r   r    r   B  r   z4FireTest.testTabCompletionWithDict.<locals>.<lambda>r   r   ZactCLIr   )r   r   r   )r   actionsr   r   r   r    testTabCompletionWithDictA  s   
z"FireTest.testTabCompletionWithDictc                 C   s   |  tjtjg ddd |  tjtjg ddd |  tjtjg ddd | d tjtjg d	d W d    d S 1 sEw   Y  d S )
N)rR   +_r	   )r   r   )rR   r   r   r{   )r   r   )rR   r{   r   r   --separator&)r{   r   r0   )rR   r{   r   r   r   r   r   r   r    testBasicSeparatorH  s*   "zFireTest.testBasicSeparatorc                 C   sV   |  tjtjddtj |  tjtjg dtj |  tjtjddgdtj dS )z8Fire should work with classes that disallow comparisons. r	   r{   N)r   r   r   r   ZNonComparabler   r   r   r    testNonComparable[  s   zFireTest.testNonComparablec                 C   s<   |  tjtjg ddd |  tjtjg ddd d S )N)get-objarg1arg2r{   r{   r   r   r	   T)r  r  r  r{   r{   r{   r   r   )r   r   r   r   
ReturnsObjr   r   r   r    testExtraSeparatorsh  s   zFireTest.testExtraSeparatorsc                 C   sv   |  tjtjg ddtj | tjtjg ddd | tjtjg ddd | tjtjg ddd d S )N)r  r  r  r   r   r	   )r  r  r  r{   r   r   T)	r  r  r  r   r   r   r   r   r   )r  r  $$r   r   r   r   r	  )r   r   r   r   r  r   r   r   r   r   r    testSeparatorForChainingu  s2   z!FireTest.testSeparatorForChainingc                 C   r   )N)rJ   rM   z-3rN   z-4r	   ir-   r   r   r   r    testNegativeNumbers  r   zFireTest.testNegativeNumbersc                 C   sX   |  tjtjg ddd |  tjtjg ddd |  tjtjddgdd d S )	N)rJ   rM   z2.2rN   z3.0r	   gffffff @)integer_reciprocalz	--divisorz5.0g?r  z4.0g      ?)r   r   r   r   r.   r6   r   r   r   r    testFloatForExpectedInt  s"   z FireTest.testFloatForExpectedIntc                 C   sb   |  tjtjddgdtj | d tjtjddgd W d    d S 1 s*w   Y  d S )N	--arg1=a1	--arg2=a2r	   r0   a1a2)r   r   r   r   InstanceVarsr3   r   r   r   r    testClassInstantiation  s   "zFireTest.testClassInstantiationc                 C   s  |  d tjtjdgd W d    n1 sw   Y  |  d tjtjdgd W d    n1 s7w   Y  |  d tjtjg dd W d    n1 sVw   Y  |  d tjtjg dd W d    n1 suw   Y  |  d tjtjg dd W d    n1 sw   Y  |  d tjtjg dd W d    n1 sw   Y  |  d tjtjg d	d W d    n1 sw   Y  |  d tjtjg d
d W d    d S 1 sw   Y  d S )Nr0   r  r	   r  )r  r  r{   r   b1)r  r  r{   zrun b1)r  r  r{   r   r  b2b3)r  r  r{   r   r  r  r  )r  r  r{   jog)r  r  r{   r  )r3   r   r   r   r  r   r   r   r    testTraceErrors  s>   "zFireTest.testTraceErrorsc                 C       |  tjtjddgdd d S Nr   r   r	   r   )r   r   r   r   ZDefaultMethodr   r   r   r    testClassWithDefaultMethod     z#FireTest.testClassWithDefaultMethodc                 C   r  r  )r   r   r   r   ZInvalidPropertyr   r   r   r    testClassWithInvalidProperty  r  z%FireTest.testClassWithInvalidPropertyr   r0   )r[   r   z5Cannot inspect wrapped signatures in Python 2 or 3.4.c                 C   s~   |  d tjtjdgd W d    n1 sw   Y  |  d tjtjdgd W d    d S 1 s8w   Y  d S )Nr   r   r	   r   )r3   r   r   r   Zdecorated_methodr   r   r   r    testHelpKwargsDecorator  s   "z FireTest.testHelpKwargsDecoratorz"Asyncio not available in Python 2.c                 C   s"   |  tjtjjg ddd d S )N)r   r;   r   r	   r   )r   r   r   r   rW   ZWithAsyncior   r   r   r    testFireAsyncio  s
   zFireTest.testFireAsyncioN)G__name__
__module____qualname__r!   r"   r&   r,   r/   r7   r@   rC   rF   rH   rO   rQ   rS   rU   rV   r   skipIfsixZPY2rX   r]   ra   rl   rp   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r   version_infor  r  r   r   r   r    r       s    

	"
	#	
r   __main__)__doc__Z
__future__r   r   r   r)   r   r   r   r   r   r   r$  ZBaseTestCaser   r   mainr   r   r   r    <module>   s(        ?