o
    g¤“c2]  ã                   @   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mZ dd	lmZ dd
lmZ ddlZG dd„ dejƒZG dd„ dejƒZedkr^e ¡  dS dS )zTests for the helptext module.é    )Úabsolute_import)Údivision)Úprint_functionN)Ú
formatting)Úhelptext)Útest_components)Ú	testutils©Útracec                       s–  e Zd Z‡ f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k d¡dd„ ƒZe ejdd… dk d¡dd„ ƒZe ejdd… dk d¡dd„ ƒZe ejdd… dk d¡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e ejd)¡d,d-„ ƒZe ejd.¡d/d0„ ƒZd1d2„ Zd3d4„ Zd5d6„ Z d7d8„ Z!d9d:„ Z"d;d<„ Z#d=d>„ Z$d?d@„ Z%dAdB„ Z&‡  Z'S )CÚHelpTestc                    s   t t| ƒ ¡  dtjd< d S )NÚ1ZANSI_COLORS_DISABLED)Úsuperr   ÚsetUpÚosÚenviron)Úself©Ú	__class__© úBD:\Projects\ConvertPro\env\Lib\site-packages\fire\helptext_test.pyr   #   s   zHelpTest.setUpc                 C   sR   t j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )NÚ
NoDefaults©Úname©Ú	componentr
   úNAME
    NoDefaultszSYNOPSIS
    NoDefaultsÚDESCRIPTIONÚNOTES©Útcr   r   ÚHelpTextr
   Ú	FireTraceÚassertInÚassertNotIn©r   r   Úhelp_screenr   r   r   ÚtestHelpTextNoDefaults'   s   þzHelpTest.testHelpTextNoDefaultsc                 C   sx   t  ¡ }tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d	|¡ |  d
|¡ d S )Nr   r   r   r   zSYNOPSIS
    NoDefaults COMMANDr   z-COMMANDS
    COMMAND is one of the following:ÚdoubleÚtripler   r   r$   r   r   r   ÚtestHelpTextNoDefaultsObject1   s   þÿz%HelpTest.testHelpTextNoDefaultsObjectc                 C   sb   t  ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )	Nr'   r   r   úNAME
    doubleúSYNOPSIS
    double COUNTr   zPOSITIONAL ARGUMENTS
    COUNTú@NOTES
    You can also use flags syntax for POSITIONAL ARGUMENTS)	r   r   r'   r   r    r
   r!   r"   r#   r$   r   r   r   ÚtestHelpTextFunction?   s   
þþzHelpTest.testHelpTextFunctionc                 C   ób   t  ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )	Nr(   r   r   zNAME
    triplezSYNOPSIS
    triple <flags>r   z.FLAGS
    -c, --count=COUNT
        Default: 0r   )	r   ÚWithDefaultsr(   r   r    r
   r!   r"   r#   r$   r   r   r   Ú testHelpTextFunctionWithDefaultsL   s   
þþz)HelpTest.testHelpTextFunctionWithDefaultsc                 C   r.   )	NÚtextr   r   úNAME
    textzSYNOPSIS
    text <flags>r   znFLAGS
    -s, --string=STRING
        Default: '00010203040506070809101112131415161718192021222324252627282...r   )	r   r/   r1   r   r    r
   r!   r"   r#   r$   r   r   r   Ú$testHelpTextFunctionWithLongDefaultsY   s   
þüz-HelpTest.testHelpTextFunctionWithLongDefaultsc                 C   óR   t j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )Nr1   r   r   r2   ú#SYNOPSIS
    text ARG1 ARG2 <flags>ú#DESCRIPTION
    Function with kwargzeFLAGS
    --arg3
        Description of arg3.
    Additional undocumented flags may also be accepted.)r   Zfn_with_kwargr   r    r
   r!   r"   r$   r   r   r   ÚtestHelpTextFunctionWithKwargsh   s   þýz'HelpTest.testHelpTextFunctionWithKwargsc                 C   r4   )Nr1   r   r   r2   r5   r6   z¸FLAGS
    -o, --opt=OPT
        Default: True
    The following flags are also accepted.
    --arg3
        Description of arg3.
    Additional undocumented flags may also be accepted.)r   Zfn_with_kwarg_and_defaultsr   r    r
   r!   r"   r$   r   r   r   Ú)testHelpTextFunctionWithKwargsAndDefaultsu   s   þûz2HelpTest.testHelpTextFunctionWithKwargsAndDefaultsr   é   )é   é   z)Python < 3.5 does not support type hints.c                 C   sd   t j ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  	d|¡ d S )	Nr'   r   r   r*   zSYNOPSIS
    double <flags>r   zBFLAGS
    -c, --count=COUNT
        Type: float
        Default: 0r   )
r   Úpy3ÚWithDefaultsAndTypesr'   r   r    r
   r!   r"   r#   r$   r   r   r   Ú(testHelpTextFunctionWithDefaultsAndTypes„   s   
ÿþþz1HelpTest.testHelpTextFunctionWithDefaultsAndTypesc                 C   sd   t j ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  	d|¡ |  d|¡ |  	d|¡ d S )	NÚget_intr   r   zNAME
    get_intzSYNOPSIS
    get_int <flags>r   zMFLAGS
    -v, --value=VALUE
        Type: Optional[int]
        Default: Noner   )
r   r<   r=   r?   r   r    r
   r!   r"   r#   r$   r   r   r   Ú+testHelpTextFunctionWithTypesAndDefaultNone•   s   
ÿþýz4HelpTest.testHelpTextFunctionWithTypesAndDefaultNonec                 C   sd   t j ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )	Nr'   r   r   r*   r+   r   z2POSITIONAL ARGUMENTS
    COUNT
        Type: floatr,   )	r   r<   Ú	WithTypesr'   r   r    r
   r!   r"   r$   r   r   r   ÚtestHelpTextFunctionWithTypes§   s    þþþz&HelpTest.testHelpTextFunctionWithTypesc                 C   sX   t j ¡ j}tj|tj|ddd}|  d|¡ |  d|¡ |  	d|¡ |  d|¡ d S )NÚ	long_typer   r   zNAME
    long_typezSYNOPSIS
    long_type LONG_OBJr   r,   )
r   r<   rA   rC   r   r    r
   r!   r"   r#   r$   r   r   r   Ú!testHelpTextFunctionWithLongTypes¹   s   þþz*HelpTest.testHelpTextFunctionWithLongTypesc                 C   sP   dj }tj|t |d¡d}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )NÚtestÚupperr   zNAME
    upperzSYNOPSIS
    upperúDESCRIPTION
r   )rF   r   r    r
   r!   r"   r#   r$   r   r   r   ÚtestHelpTextFunctionWithBuiltinÏ   s   
þz(HelpTest.testHelpTextFunctionWithBuiltinc                 C   sB   t }tj|t |d¡d}|  d|¡ |  d|¡ |  d|¡ d S )NÚintr   zNAME
    intzSYNOPSIS
    intrG   )rI   r   r    r
   r!   r"   r$   r   r   r   ÚtestHelpTextFunctionIntTypeÛ   s   ÿz$HelpTest.testHelpTextFunctionIntTypec                 C   sN   g }t j|t |d¡d}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )NÚlistr   úNAME
    listúSYNOPSIS
    list COMMANDr   ú.COMMANDS
    COMMAND is one of the following:
©r   r    r
   r!   r"   r#   r$   r   r   r   ÚtestHelpTextEmptyListå   s   
þÿzHelpTest.testHelpTextEmptyListc                 C   s\   dg}t j|t |d¡d}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )	Né
   rK   r   rL   rM   r   rN   z     append
rO   r$   r   r   r   ÚtestHelpTextShortListô   s   
þÿzHelpTest.testHelpTextShortListc                 C   sZ   d}t j|t |d¡d}|  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )	Né   Ú7r   z
NAME
    7zSYNOPSIS
    7 COMMAND | VALUEr   rN   z*VALUES
    VALUE is one of the following:
rO   r$   r   r   r   ÚtestHelpTextInt  s   ÿÿzHelpTest.testHelpTextIntc                 C   s8   t j}tj|t |d¡d}|  d|¡ |  d|¡ d S )NÚOldStyleEmptyr   zNAME
    OldStyleEmptyzSYNOPSIS
    OldStyleEmpty)r   rV   r   r    r
   r!   r"   r$   r   r   r   ÚtestHelpTextNoInit  s   
þzHelpTest.testHelpTextNoInitz1Python 2 does not support keyword-only arguments.c                 C   ó<   t jjj}tj|t |d¡d}|  d|¡ |  d|¡ d S )NÚwith_defaultr   zNAME
    with_defaultzFLAGS
    -x, --x=X)	r   r<   ÚKeywordOnlyrY   r   r    r
   r!   r"   ©r   r   Úoutputr   r   r   Ú+testHelpTextKeywordOnlyArgumentsWithDefault  ó   
ÿz4HelpTest.testHelpTextKeywordOnlyArgumentsWithDefaultc                 C   rX   )Nr'   r   r*   z&FLAGS
    -c, --count=COUNT (required))	r   r<   rZ   r'   r   r    r
   r!   r"   r[   r   r   r   Ú.testHelpTextKeywordOnlyArgumentsWithoutDefault$  r^   z7HelpTest.testHelpTextKeywordOnlyArgumentsWithoutDefaultú7Python 2 does not support required name-only arguments.c                 C   s\   t j ¡ j}tj|dd}tj||d}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )NÚFunctionMixedDefaultsr   r	   zNAME
    FunctionMixedDefaultszFunctionMixedDefaults <flags>z--alpha=ALPHA (required)z --beta=BETA
        Default: '0')	r   r<   ÚHelpTextComponentÚidentityr
   r!   r   r    r"   )r   r   Útr\   r   r   r   Ú!testHelpTextFunctionMixedDefaults-  s   z*HelpTest.testHelpTextFunctionMixedDefaultsc                 C   sD   t  ¡ }tj|dd}t ||¡}d}|  t |¡ 	¡ | 	¡ ¡ d S )NÚClassWithDocstringr   as  
NAME
    ClassWithDocstring - Test class for testing help text output.

SYNOPSIS
    ClassWithDocstring COMMAND | VALUE

DESCRIPTION
    This is some detail description of this test class.

COMMANDS
    COMMAND is one of the following:

     print_msg
       Prints a message.

VALUES
    VALUE is one of the following:

     message
       The default message to print.)
r   rf   r
   r!   r   r    ÚassertEqualÚtextwrapÚdedentÚstrip©r   r   rd   Zhelp_outputÚexpected_outputr   r   r   ÚtestHelpScreen9  s   ÿzHelpTest.testHelpScreenc                 C   sD   t jj}tj|dd}t ||¡}d}|  t 	|¡ 
¡ | 
¡ ¡ d S )NÚexample_generatorr   a­  
    NAME
        example_generator - Generators have a ``Yields`` section instead of a ``Returns`` section.

    SYNOPSIS
        example_generator N

    DESCRIPTION
        Generators have a ``Yields`` section instead of a ``Returns`` section.

    POSITIONAL ARGUMENTS
        N
            The upper limit of the range to generate, from 0 to `n` - 1.

    NOTES
        You can also use flags syntax for POSITIONAL ARGUMENTS)r   ZClassWithMultilineDocstringrn   r
   r!   r   r    rg   rh   ri   rj   rk   r   r   r   Ú/testHelpScreenForFunctionDocstringWithLineBreakU  s   ÿz8HelpTest.testHelpScreenForFunctionDocstringWithLineBreakc                 C   sF   t  ¡ j}tj|dd}t ||¡}d}|  t 	|¡ 
¡ | 
¡ ¡ d S )Nr'   r   a  
    NAME
        double - Returns the input multiplied by 2.

    SYNOPSIS
        double <flags>

    DESCRIPTION
        Returns the input multiplied by 2.

    FLAGS
        -c, --count=COUNT
            Default: 0
            Input number that you want to double.)r   r/   r'   r
   r!   r   r    rg   rh   ri   rj   rk   r   r   r   Ú0testHelpScreenForFunctionFunctionWithDefaultArgsl  s   
ÿz9HelpTest.testHelpScreenForFunctionFunctionWithDefaultArgsc                 C   st   t  ¡ j}tj|dd}t ||¡}|  t 	d¡d |¡ |  t 	d¡d |¡ |  t 	d¡d t 
d	¡ |¡ d S )
Nr(   r   ÚNAMEz
    tripleÚSYNOPSISz
    triple <flags>ÚFLAGSz
    -c, --Úcount)r   r/   r(   r
   r!   r   r    r"   r   ÚBoldZ	Underline©r   r   rd   r%   r   r   r   ÚtestHelpTextUnderlineFlag  s   
þÿýz"HelpTest.testHelpTextUnderlineFlagc                 C   s~   t  ¡ }tj|dd}t ||¡}|  t d¡d |¡ |  t d¡d |¡ |  t 	d¡d |¡ |  t d	¡d |¡ d S )
Nrf   r   rq   z
    ClassWithDocstringZCOMMANDSÚ
ZCOMMANDz is one of the following:
Z	print_msg)
r   rf   r
   r!   r   r    r"   r   ru   ZBoldUnderlinerv   r   r   r   ÚtestHelpTextBoldCommandNameŽ  s   ÿþz$HelpTest.testHelpTextBoldCommandNamec                 C   sz   t  ¡ }tj|dd}tj||dd}t|ƒ |  d|¡ |  d|¡ |  d|¡ |  d|¡ |  d	|¡ |  d
|¡ d S )NÚTypedPropertiesr   T©r   r
   ÚverboseZGROUPSzGROUP is one of the following:z@charlie
       Class with functions that have default arguments.ZVALUESzVALUE is one of the following:Úalpha)r   rz   r
   r!   r   r    Úprintr"   rv   r   r   r   Ú$testHelpTextObjectWithGroupAndValuesš  s   ÿþz-HelpTest.testHelpTextObjectWithGroupAndValuesc                 C   sH   d}t j|ddd}| ¡  tj||dd}|  d|¡ |  d|¡ d S )	Né	   rI   ú-©r   Ú	separatorFr{   zint -zint - -)r
   r!   ÚAddSeparatorr   r    r"   r#   rv   r   r   r   Ú+testHelpTextNameSectionCommandWithSeparator©  s   z4HelpTest.testHelpTextNameSectionCommandWithSeparatorc                 C   sN   t  ¡ j}tj|ddd}| ¡  tj||dd}|  d|¡ |  d|¡ d S )Nr'   r   r‚   Tr{   zdouble -z
double - -)	r   r/   r'   r
   r!   r„   r   r    r"   rv   r   r   r   Ú2testHelpTextNameSectionCommandWithSeparatorVerbose±  s   
z;HelpTest.testHelpTextNameSectionCommandWithSeparatorVerbosec                 C   s~   t j}tj|dd}t ||¡}|  t d¡d |¡ |  t d¡d |¡ |  t d¡d |¡ |  d	|¡ |  d
|¡ d S )NZ	shortargsr   rq   z
    shortargsrr   z
    shortargs <flags>rs   z
    -f, --firstz
    --lastz
    --late)	r   Zfn_with_multiple_defaultsr
   r!   r   r    r"   r   ru   rv   r   r   r   Ú2testHelpTextMultipleKeywoardArgumentsWithShortArgs¹  s   þþz;HelpTest.testHelpTextMultipleKeywoardArgumentsWithShortArgs)(Ú__name__Ú
__module__Ú__qualname__r   r&   r)   r-   r0   r3   r7   r8   r   ÚskipIfÚsysÚversion_infor>   r@   rB   rD   rH   rJ   rP   rR   rU   rW   ÚsixÚPY2r]   r_   re   rm   ro   rp   rw   ry   r   r…   r†   r‡   Ú__classcell__r   r   r   r   r   !   sr    
þ
þ
þ
þ

ÿ
ÿ
þ
	r   c                   @   sz   e Z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S )Ú	UsageTestc                 C   óF   t  ¡ }tj|dd}tj||dd}d}|  |t |¡ 	d¡¡ d S )Nr   r   F©r
   r|   ú™
    Usage: NoDefaults <command>
      available commands:    double | triple

    For detailed information on this command, run:
      NoDefaults --helprx   ©
r   r   r
   r!   r   Ú	UsageTextrg   rh   ri   Úlstrip©r   r   rd   Zusage_outputrl   r   r   r   ÚtestUsageOutputË  s   þzUsageTest.testUsageOutputc                 C   r’   )Nr   r   Tr“   r”   rx   r•   r˜   r   r   r   ÚtestUsageOutputVerboseÚ  s   þz UsageTest.testUsageOutputVerbosec                 C   s\   t  ¡ j}tj|dd}| |ddgd d ¡ tj||dd}d}|  |t	 
|¡ d¡¡ d S )Nr   r   r'   Fr“   zv
    Usage: NoDefaults double COUNT

    For detailed information on this command, run:
      NoDefaults double --helprx   )r   r   r'   r
   r!   ZAddAccessedPropertyr   r–   rg   rh   ri   r—   r˜   r   r   r   ÚtestUsageOutputMethodè  s   
þzUsageTest.testUsageOutputMethodc                 C   sD   t j}tj|dd}tj||dd}d}|  |t |¡ 	d¡¡ d S )NÚfunction_with_helpr   Fr“   z¡
    Usage: function_with_help <flags>
      optional flags:        --help

    For detailed information on this command, run:
      function_with_help -- --helprx   )
r   rœ   r
   r!   r   r–   rg   rh   ri   r—   r˜   r   r   r   ÚtestUsageOutputFunctionWithHelpö  s   þz)UsageTest.testUsageOutputFunctionWithHelpc                 C   óD   t j}tj|dd}tj||dd}d}|  t |¡ 	d¡|¡ d S )NÚmultiplier_with_docstringr   Fr“   z°
    Usage: multiplier_with_docstring NUM <flags>
      optional flags:        --rate

    For detailed information on this command, run:
      multiplier_with_docstring --helprx   )
r   rŸ   r
   r!   r   r–   rg   rh   ri   r—   r˜   r   r   r   Ú$testUsageOutputFunctionWithDocstring  ó   þz.UsageTest.testUsageOutputFunctionWithDocstringr`   c                 C   sN   t j ¡ j}tj|dd}tj||dd}d}t 	|¡ 
d¡}|  ||¡ d S )Nra   r   Fr“   zÉ
    Usage: FunctionMixedDefaults <flags>
      optional flags:        --beta
      required flags:        --alpha

    For detailed information on this command, run:
      FunctionMixedDefaults --helprx   )r   r<   rb   rc   r
   r!   r   r–   rh   ri   r—   rg   r˜   r   r   r   Ú$testUsageOutputFunctionMixedDefaults  s   z.UsageTest.testUsageOutputFunctionMixedDefaultsc                 C   sH   t  ¡ }tj|ddd}tj||dd}d}|  t |¡ 	d¡|¡ d S )NÚCallableWithKeywordArgumentú@r‚   Fr“   zÛ
    Usage: CallableWithKeywordArgument <command> | <flags>
      available commands:    print_msg
      flags are accepted

    For detailed information on this command, run:
      CallableWithKeywordArgument -- --helprx   )
r   r£   r
   r!   r   r–   rg   rh   ri   r—   r˜   r   r   r   ÚtestUsageOutputCallable#  s   ÿþz!UsageTest.testUsageOutputCallablec                 C   rž   )NÚInstanceVarsr   Fr“   z~
    Usage: InstanceVars --arg1=ARG1 --arg2=ARG2

    For detailed information on this command, run:
      InstanceVars --helprx   ©
r   r¦   r
   r!   r   r–   rg   rh   ri   r—   r˜   r   r   r   Ú'testUsageOutputConstructorWithParameter4  s   þz1UsageTest.testUsageOutputConstructorWithParameterc                 C   rž   )Nr¦   r   Tr“   z«
    Usage: InstanceVars <command> | --arg1=ARG1 --arg2=ARG2
      available commands:    run

    For detailed information on this command, run:
      InstanceVars --helprx   r§   r˜   r   r   r   Ú.testUsageOutputConstructorWithParameterVerboseA  r¡   z8UsageTest.testUsageOutputConstructorWithParameterVerbosec                 C   sB   i }t j|dd}tj||dd}d}|  t |¡ d¡|¡ d S )NZ	EmptyDictr   Tr“   z`
    Usage: EmptyDict

    For detailed information on this command, run:
      EmptyDict --helprx   ©r
   r!   r   r–   rg   rh   ri   r—   r˜   r   r   r   ÚtestUsageOutputEmptyDictO  ó   þz"UsageTest.testUsageOutputEmptyDictc                 C   sB   d }t j|dd}tj||dd}d}|  t |¡ d¡|¡ d S )NÚNoner   Tr“   zV
    Usage: None

    For detailed information on this command, run:
      None --helprx   rª   r˜   r   r   r   ÚtestUsageOutputNone\  r¬   zUsageTest.testUsageOutputNonec                 C   s8   t j}tj|dd}tj||dd}d}|  ||¡ d S )NÚSubPointr   Fr“   zUsage: SubPoint --x=X --y=Y)r   r¯   r
   r!   r   r–   r"   r˜   r   r   r   Ú,testInitRequiresFlagSyntaxSubclassNamedTuplei  s
   z6UsageTest.testInitRequiresFlagSyntaxSubclassNamedTupleN)rˆ   r‰   rŠ   r™   rš   r›   r   r    r   r‹   rŽ   r   r¢   r¥   r¨   r©   r«   r®   r°   r   r   r   r   r‘   É  s"    þ
r‘   Ú__main__)Ú__doc__Z
__future__r   r   r   r   rŒ   rh   Úfirer   r   r   r   r   r
   rŽ   ZBaseTestCaser   r‘   rˆ   Úmainr   r   r   r   Ú<module>   s,      + (ÿ