o
    ŠÄŽi±X  ã                   @   sŒ   d 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	 G dd	„ d	ej
ƒZG d
d„ dej
ƒZedkrDe ¡  dS dS )zTests for the helptext module.é    N)Ú
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
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d/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Z ‡  Z!S )=ÚHelpTestc                    s   t ƒ  ¡  dtjd< d S )NÚ1ÚANSI_COLORS_DISABLED)ÚsuperÚsetUpÚosÚenviron)Úself©Ú	__class__© úN/home/jeff/fluffinator/venv/lib/python3.10/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   ÚtestHelpTextNoDefaultsObject+   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   ÚtestHelpTextFunction9   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   Ú testHelpTextFunctionWithDefaultsF   s   
þþz)HelpTest.testHelpTextFunctionWithDefaultsc                 C   r,   )	NÚtextr   r   úNAME
    textzSYNOPSIS
    text <flags>r   znFLAGS
    -s, --string=STRING
        Default: '00010203040506070809101112131415161718192021222324252627282...r   )	r   r-   r/   r   r   r   r   r    r!   r"   r   r   r   Ú$testHelpTextFunctionWithLongDefaultsS   s   
þüz-HelpTest.testHelpTextFunctionWithLongDefaultsc                 C   óR   t j}tj|tj|ddd}|  d|¡ |  d|¡ |  d|¡ |  d|¡ d S )Nr/   r   r   r0   ú#SYNOPSIS
    text ARG1 ARG2 <flags>ú#DESCRIPTION
    Function with kwargzeFLAGS
    --arg3
        Description of arg3.
    Additional undocumented flags may also be accepted.)r   Úfn_with_kwargr   r   r   r   r    r"   r   r   r   ÚtestHelpTextFunctionWithKwargsb   s   þýz'HelpTest.testHelpTextFunctionWithKwargsc                 C   r2   )Nr/   r   r   r0   r3   r4   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   Úfn_with_kwarg_and_defaultsr   r   r   r   r    r"   r   r   r   Ú)testHelpTextFunctionWithKwargsAndDefaultso   s   þûz2HelpTest.testHelpTextFunctionWithKwargsAndDefaultsc                 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   r9   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   r9   Ú	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   r9   r>   r@   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   )rC   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
    intrD   )rF   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é
   rH   r   rI   rJ   r   rK   z     append
rL   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   rK   z*VALUES
    VALUE is one of the following:
rL   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   rS   r   r   r   r   r    r"   r   r   r   ÚtestHelpTextNoInit  s   
þzHelpTest.testHelpTextNoInitc                 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   r9   ÚKeywordOnlyrV   r   r   r   r   r    ©r   r   Úoutputr   r   r   Ú+testHelpTextKeywordOnlyArgumentsWithDefault	  ó   
ÿz4HelpTest.testHelpTextKeywordOnlyArgumentsWithDefaultc                 C   rU   )Nr%   r   r(   z&FLAGS
    -c, --count=COUNT (required))	r   r9   rW   r%   r   r   r   r   r    rX   r   r   r   Ú.testHelpTextKeywordOnlyArgumentsWithoutDefault  r[   z7HelpTest.testHelpTextKeywordOnlyArgumentsWithoutDefaultc                 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   r9   ÚHelpTextComponentÚidentityr   r   r   r   r    )r   r   ÚtrY   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   rb   r   r   r   r   ÚassertEqualÚtextwrapÚdedentÚstrip©r   r   r`   Úhelp_outputÚexpected_outputr   r   r   ÚtestHelpScreen   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   ÚClassWithMultilineDocstringrk   r   r   r   r   rc   rd   re   rf   rg   r   r   r   Ú/testHelpScreenForFunctionDocstringWithLineBreak<  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   rc   rd   re   rf   rg   r   r   r   Ú0testHelpScreenForFunctionFunctionWithDefaultArgsS  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   ÚBoldÚ	Underline©r   r   r`   r#   r   r   r   ÚtestHelpTextUnderlineFlagh  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 )
Nrb   r   ro   z
    ClassWithDocstringÚCOMMANDSÚ
ÚCOMMANDz is one of the following:
Ú	print_msg)
r   rb   r   r   r   r   r    r   rs   ÚBoldUnderlineru   r   r   r   ÚtestHelpTextBoldCommandNameu  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   ÚverboseÚGROUPSzGROUP is one of the following:z@charlie
       Class with functions that have default arguments.ÚVALUESzVALUE is one of the following:Úalpha)r   r}   r   r   r   r   Úprintr    ru   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é	   rF   ú-©r   Ú	separatorFr~   zint -zint - -)r   r   ÚAddSeparatorr   r   r    r!   ru   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    ru   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 )NÚ	shortargsr   ro   z
    shortargsrp   z
    shortargs <flags>rq   z
    -f, --firstz
    --lastz
    --late)	r   Úfn_with_multiple_defaultsr   r   r   r   r    r   rs   ru   r   r   r   Ú2testHelpTextMultipleKeywoardArgumentsWithShortArgs   s   þþz;HelpTest.testHelpTextMultipleKeywoardArgumentsWithShortArgs)"Ú__name__Ú
__module__Ú__qualname__r   r$   r'   r+   r.   r1   r6   r8   r;   r=   r?   rA   rE   rG   rM   rO   rR   rT   rZ   r\   ra   rj   rm   rn   rv   r|   r„   rŠ   r‹   rŽ   Ú__classcell__r   r   r   r   r      s>    

	r   c                   @   sl   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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   Ú	UsageTextrc   rd   re   Úlstrip©r   r   r`   Úusage_outputri   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   ÚAddAccessedPropertyr   r˜   rc   rd   re   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˜   rc   rd   re   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˜   rc   rd   re   r™   rš   r   r   r   Ú$testUsageOutputFunctionWithDocstringê  ó   þz.UsageTest.testUsageOutputFunctionWithDocstringc                 C   sN   t j ¡ j}tj|dd}tj||dd}d}t 	|¡ 
d¡}|  ||¡ d S )Nr]   r   Fr•   zÉ
    Usage: FunctionMixedDefaults <flags>
      optional flags:        --beta
      required flags:        --alpha

    For detailed information on this command, run:
      FunctionMixedDefaults --helprx   )r   r9   r^   r_   r   r   r   r˜   rd   re   r™   rc   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˜   rc   rd   re   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˜   rc   rd   re   r™   rš   r   r   r   Ú'testUsageOutputConstructorWithParameter  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   Ú.testUsageOutputConstructorWithParameterVerbose$  r¥   z8UsageTest.testUsageOutputConstructorWithParameterVerbosec                 C   sB   i }t j|dd}tj||dd}d}|  t |¡ d¡|¡ d S )NÚ	EmptyDictr   Tr•   z`
    Usage: EmptyDict

    For detailed information on this command, run:
      EmptyDict --helprx   ©r   r   r   r˜   rc   rd   re   r™   rš   r   r   r   ÚtestUsageOutputEmptyDict2  ó   þ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   Ú,testInitRequiresFlagSyntaxSubclassNamedTupleL  s
   z6UsageTest.testInitRequiresFlagSyntaxSubclassNamedTupleN)r   r   r‘   rœ   r   rŸ   r¡   r¤   r¦   r©   r¬   r­   r°   r³   rµ   r   r   r   r   r“   ¯  s    r“   Ú__main__)Ú__doc__r   rd   Úfirer   r   r   r   r   r   ÚBaseTestCaser   r“   r   Úmainr   r   r   r   Ú<module>   s"       %ÿ