
    |hkY                         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	ej                        Z G d
 dej                        Zedk(  r ej                          yy)zTests for the helptext module.    N)
formatting)helptext)test_components)	testutilstracec                        e Zd Z fdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z  xZ!S )HelpTestc                 H    t         |           dt        j                  d<   y )N1ANSI_COLORS_DISABLED)supersetUposenviron)self	__class__s    Q/var/www/html/test/engine/venv/lib/python3.12/site-packages/fire/helptext_test.pyr   zHelpTest.setUp   s    	GMO),BJJ%&    c                    t         j                  }t        j                  |t	        j
                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )N
NoDefaultsname	componentr   NAME
    NoDefaultszSYNOPSIS
    NoDefaultsDESCRIPTIONNOTEStcr   r   HelpTextr   	FireTraceassertInassertNotInr   r   help_screens      r   testHelpTextNoDefaultszHelpTest.testHelpTextNoDefaults!   sl    I##ooil;=K 	MM(+6MM,k:]K0Wk*r   c                    t        j                         }t        j                  |t	        j
                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d	|       | j                  d
|       y )Nr   r   r   r   zSYNOPSIS
    NoDefaults COMMANDr   z-COMMANDS
    COMMAND is one of the following:doubletripler   r   r%   s      r   testHelpTextNoDefaultsObjectz%HelpTest.testHelpTextNoDefaultsObject+   s    I##ooil;=K 	MM(+6MM4kB]K0MMBMM(K(MM(K(Wk*r   c                 L   t        j                         j                  }t        j                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	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%   s      r   testHelpTextFunctionzHelpTest.testHelpTextFunction9   s    &&I##ooih79K 	MM$k2MM.<]K0MM3[AMMKr   c                 L   t        j                         j                  }t        j                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	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%   s      r    testHelpTextFunctionWithDefaultsz)HelpTest.testHelpTextFunctionWithDefaultsF   s    !((I##ooih79K 	MM$k2MM0+>]K0MM: 	Wk*r   c                 L   t        j                         j                  }t        j                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	Ntextr   r   NAME
    textzSYNOPSIS
    text <flags>r   znFLAGS
    -s, --string=STRING
        Default: '00010203040506070809101112131415161718192021222324252627282...r   )	r    r2   r5   r   r!   r   r"   r#   r$   r%   s      r   $testHelpTextFunctionWithLongDefaultsz-HelpTest.testHelpTextFunctionWithLongDefaultsS   s    !&&I##ooif57K 	MM"K0MM.<]K0MM	3 		
 	Wk*r   c                    t         j                  }t        j                  |t	        j
                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )Nr5   r   r   r6   #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%   s      r   testHelpTextFunctionWithKwargsz'HelpTest.testHelpTextFunctionWithKwargsb   sq      I##ooif57K 	MM"K0MM8+FMM8+FMM	>r   c                    t         j                  }t        j                  |t	        j
                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )Nr5   r   r   r6   r9   r:   zFLAGS
    -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%   s      r   )testHelpTextFunctionWithKwargsAndDefaultsz2HelpTest.testHelpTextFunctionWithKwargsAndDefaultso   ss    --I##ooif57K 	MM"K0MM8+FMM8+FMM	> 	r   c                 `   t         j                  j                         j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	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%   s      r   (testHelpTextFunctionWithDefaultsAndTypesz1HelpTest.testHelpTextFunctionWithDefaultsAndTypes~   s    
##%,, ##ooih79K 	MM$k2MM0+>MM--MMO 	Wk*r   c                 `   t         j                  j                         j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	Nget_intr   r   zNAME
    get_intzSYNOPSIS
    get_int <flags>r   zMFLAGS
    -v, --value=VALUE
        Type: Optional[int]
        Default: Noner   )
r    rA   rB   rE   r   r!   r   r"   r#   r$   r%   s      r   +testHelpTextFunctionWithTypesAndDefaultNonez4HelpTest.testHelpTextFunctionWithTypesAndDefaultNone   s    
##%-- ##ooii8:K 	MM%{3MM1;?]K0MM	= 	Wk*r   c                 `   t         j                  j                         j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d|       y )	Nr)   r   r   r-   r.   r   z2POSITIONAL ARGUMENTS
    COUNT
        Type: floatr/   )	r    rA   	WithTypesr)   r   r!   r   r"   r#   r%   s      r   testHelpTextFunctionWithTypesz&HelpTest.testHelpTextFunctionWithTypes   s      "))I##ooih79K 	MM$k2MM.<MM--MM> 	MMKr   c                 <   t         j                  j                         j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )N	long_typer   r   zNAME
    long_typezSYNOPSIS
    long_type LONG_OBJr   r/   )
r    rA   rH   rK   r   r!   r   r"   r#   r$   r%   s      r   !testHelpTextFunctionWithLongTypesz*HelpTest.testHelpTextFunctionWithLongTypes   s      ",,I##ooik:<K 	MM'5MM4kB]K0 	MMKr   c                    dj                   }t        j                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )Ntestupperr   zNAME
    upperzSYNOPSIS
    upperDESCRIPTION
r   )rO   r   r!   r   r"   r#   r$   r%   s      r   testHelpTextFunctionWithBuiltinz(HelpTest.testHelpTextFunctionWithBuiltin   sl    I##ooi13K 	MM#[1MM'5 	MM/;/Wk*r   c                     t         }t        j                  |t        j                  |d            }| j                  d|       | j                  d|       | j                  d|       y )Nintr   zNAME
    intzSYNOPSIS
    intrP   )rS   r   r!   r   r"   r#   r%   s      r   testHelpTextFunctionIntTypez$HelpTest.testHelpTextFunctionIntType   sU    I##5??9e#DFKMM/;/MM%{3 	MM/;/r   c                     g }t        j                  |t        j                  |d            }| j	                  d|       | j	                  d|       | j                  d|       | j	                  d|       y )Nlistr   NAME
    listSYNOPSIS
    list COMMANDr   .COMMANDS
    COMMAND is one of the following:
r   r!   r   r"   r#   r$   r%   s      r   testHelpTextEmptyListzHelpTest.testHelpTextEmptyList   sn    I##ooi02K 	MM"K0MM.< 	]K0 	MMDr   c                    dg}t        j                  |t        j                  |d            }| j	                  d|       | j	                  d|       | j                  d|       | j	                  d|       | j	                  d|       y )	N
   rV   r   rW   rX   r   rY   z     append
rZ   r%   s      r   testHelpTextShortListzHelpTest.testHelpTextShortList   s~    I##ooi02K 	MM"K0MM.< 	]K0
 	MMDMM/;/r   c                    d}t        j                  |t        j                  |d            }| j	                  d|       | j	                  d|       | j                  d|       | j	                  d|       | j	                  d|       y )	N   7r   z
NAME
    7zSYNOPSIS
    7 COMMAND | VALUEr   rY   z*VALUES
    VALUE is one of the following:
rZ   r%   s      r   testHelpTextIntzHelpTest.testHelpTextInt   sx    I##5??9c#BDKMM--MM3[A 	]K0MMDMM@+Nr   c                     t         j                  }t        j                  |t	        j
                  |d            }| j                  d|       | j                  d|       y )NOldStyleEmptyr   zNAME
    OldStyleEmptyzSYNOPSIS
    OldStyleEmpty)r    rd   r   r!   r   r"   r#   r%   s      r   testHelpTextNoInitzHelpTest.testHelpTextNoInit  sN      I##ooi9;K 	MM+[9MM/=r   c                     t         j                  j                  j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       y )Nwith_defaultr   zNAME
    with_defaultzFLAGS
    -x, --x=X)	r    rA   KeywordOnlyrg   r   r!   r   r"   r#   r   r   outputs      r   +testHelpTextKeywordOnlyArgumentsWithDefaultz4HelpTest.testHelpTextKeywordOnlyArgumentsWithDefault	  sV    ""//I5??9n#MOFMM*F3MM(&1r   c                     t         j                  j                  j                  }t	        j
                  |t        j                  |d            }| j                  d|       | j                  d|       y )Nr)   r   r-   z&FLAGS
    -c, --count=COUNT (required))	r    rA   rh   r)   r   r!   r   r"   r#   ri   s      r   .testHelpTextKeywordOnlyArgumentsWithoutDefaultz7HelpTest.testHelpTextKeywordOnlyArgumentsWithoutDefault  sV    ""))I5??9h#GIFMM$f-MM;VDr   c                 @   t         j                  j                         j                  }t	        j
                  |d      }t        j                  ||      }| j                  d|       | j                  d|       | j                  d|       | j                  d|       y )NFunctionMixedDefaultsr   r   zNAME
    FunctionMixedDefaultszFunctionMixedDefaults <flags>z--alpha=ALPHA (required)z --beta=BETA
        Default: '0')	r    rA   HelpTextComponentidentityr   r"   r   r!   r#   )r   r   trj   s       r   !testHelpTextFunctionMixedDefaultsz*HelpTest.testHelpTextFunctionMixedDefaults  sy    ((*33I	(?@Ay2FMM3V<MM16:MM,f5MM7@r   c                    t        j                         }t        j                  |d      }t	        j
                  ||      }d}| j                  t        j                  |      j                         |j                                y )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    ru   r   r"   r   r!   assertEqualtextwrapdedentstripr   r   rr   help_outputexpected_outputs        r   testHelpScreenzHelpTest.testHelpScreen   sj    %%'I	(<=A##Iq1K(O* 	X___5;;= &&(*r   c                    t         j                  j                  }t        j                  |d      }t        j                  ||      }d}| j                  t        j                  |      j                         |j                                y )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    ClassWithMultilineDocstringr   r   r"   r   r!   rv   rw   rx   ry   rz   s        r   /testHelpScreenForFunctionDocstringWithLineBreakz8HelpTest.testHelpScreenForFunctionDocstringWithLineBreak<  sn    ..@@I	(;<A##Iq1KBO  	X___5;;= &&(*r   c                     t        j                         j                  }t        j                  |d      }t        j                  ||      }d}| j                  t        j                  |      j                         |j                                y )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    r2   r)   r   r"   r   r!   rv   rw   rx   ry   rz   s        r   0testHelpScreenForFunctionFunctionWithDefaultArgsz9HelpTest.testHelpScreenForFunctionFunctionWithDefaultArgsS  sm    !((I	1A##Iq1K5O 	X___5;;= &&(*r   c                    t        j                         j                  }t        j                  |d      }t        j                  ||      }| j                  t        j                  d      dz   |       | j                  t        j                  d      dz   |       | j                  t        j                  d      dz   t        j                  d	      z   |       y )
Nr*   r   NAMEz
    tripleSYNOPSISz
    triple <flags>FLAGSz
    -c, --count)r    r2   r*   r   r"   r   r!   r#   r   Bold	Underliner   r   rr   r&   s       r   testHelpTextUnderlineFlagz"HelpTest.testHelpTextUnderlineFlagh  s    !((I	1A##Iq1KMM*//&)N:KHMM
#&<< 	MM >1W%	&r   c                    t        j                         }t        j                  |d      }t	        j
                  ||      }| j                  t        j                  d      dz   |       | j                  t        j                  d      dz   |       | j                  t        j                  d      dz   |       | j                  t        j                  d	      dz   |       y )
Nru   r   r   z
    ClassWithDocstringCOMMANDS
COMMANDz is one of the following:
	print_msg)
r    ru   r   r"   r   r!   r#   r   r   BoldUnderliner   s       r   testHelpTextBoldCommandNamez$HelpTest.testHelpTextBoldCommandNameu  s    %%'I	(<=A##Iq1KMM"<<kKMM*//*-4kBMM  +.KK 	MM*//+.5{Cr   c                 x   t        j                         }t        j                  |d      }t	        j
                  ||d      }t        |       | j                  d|       | j                  d|       | j                  d|       | j                  d|       | j                  d	|       | j                  d
|       y )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#   r   s       r   $testHelpTextObjectWithGroupAndValuesz-HelpTest.testHelpTextObjectWithGroupAndValues  s    ""$I	(9:A##1d4K	+MM(K(MM2K@MMK 	MM(K(MM2K@MM';'r   c                     d}t        j                  |dd      }|j                          t        j                  ||d      }| j                  d|       | j                  d|       y )	N	   rS   -r   	separatorFr   zint -zint - -)r   r"   AddSeparatorr   r!   r#   r$   r   s       r   +testHelpTextNameSectionCommandWithSeparatorz4HelpTest.testHelpTextNameSectionCommandWithSeparator  sU    I	=ANN##iq%PKMM';'Y,r   c                    t        j                         j                  }t        j                  |dd      }|j                          t        j                  ||d      }| j                  d|       | j                  d|       y )Nr)   r   r   Tr   zdouble -z
double - -)	r    r2   r)   r   r"   r   r   r!   r#   r   s       r   2testHelpTextNameSectionCommandWithSeparatorVerbosez;HelpTest.testHelpTextNameSectionCommandWithSeparatorVerbose  s`    !((I	C@ANN##iq$OKMM*k*MM,,r   c                    t         j                  }t        j                  |d      }t	        j
                  ||      }| j                  t        j                  d      dz   |       | j                  t        j                  d      dz   |       | j                  t        j                  d      dz   |       | j                  d	|       | j                  d
|       y )N	shortargsr   r   z
    shortargsr   z
    shortargs <flags>r   z
    -f, --firstz
    --lastz
    --late)	r    fn_with_multiple_defaultsr   r"   r   r!   r#   r   r   r   s       r   2testHelpTextMultipleKeywoardArgumentsWithShortArgsz;HelpTest.testHelpTextMultipleKeywoardArgumentsWithShortArgs  s    ,,I	4A##Iq1KMM*//&),=={KMM
#&?? 	MM #66 	MM.+.MM.+.r   )"__name__
__module____qualname__r   r'   r+   r0   r3   r7   r<   r?   rC   rF   rI   rL   rQ   rT   r[   r^   rb   re   rk   rm   rs   r}   r   r   r   r   r   r   r   r   __classcell__)r   s   @r   r
   r
      s    -++++++&
+00$O>2EA*8*.**
D(--/r   r
   c                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zy)	UsageTestc                     t        j                         }t        j                  |d      }t	        j
                  ||d      }d}| j                  |t        j                  |      j                  d             y )Nr   r   Fr   r   
    Usage: NoDefaults <command>
      available commands:    double | triple

    For detailed information on this command, run:
      NoDefaults --helpr   
r    r   r   r"   r   	UsageTextrv   rw   rx   lstripr   r   rr   usage_outputr|   s        r   testUsageOutputzUsageTest.testUsageOutput  sb    I	5A%%iq%HLO 	(//57r   c                     t        j                         }t        j                  |d      }t	        j
                  ||d      }d}| j                  |t        j                  |      j                  d             y )Nr   r   Tr   r   r   r   r   s        r   testUsageOutputVerbosez UsageTest.testUsageOutputVerbose  sb    I	5A%%iq$GLO 	(//57r   c                 6   t        j                         j                  }t        j                  |d      }|j                  |ddgd d        t        j                  ||d      }d}| j                  |t        j                  |      j                  d             y )Nr   r   r)   Fr   zv
    Usage: NoDefaults double COUNT

    For detailed information on this command, run:
      NoDefaults double --helpr   )r    r   r)   r   r"   AddAccessedPropertyr   r   rv   rw   rx   r   r   s        r   testUsageOutputMethodzUsageTest.testUsageOutputMethod  s    &&I	5A)Xz4F%%iq%HL"O
 	(//57r   c                     t         j                  }t        j                  |d      }t	        j
                  ||d      }d}| j                  |t        j                  |      j                  d             y )Nfunction_with_helpr   Fr   z
    Usage: function_with_help <flags>
      optional flags:        --help

    For detailed information on this command, run:
      function_with_help -- --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputFunctionWithHelpz)UsageTest.testUsageOutputFunctionWithHelp  sc    %%I	(<=A%%iq%HL&O 	(//57r   c                     t         j                  }t        j                  |d      }t	        j
                  ||d      }d}| j                  t        j                  |      j                  d      |       y )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 --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   $testUsageOutputFunctionWithDocstringz.UsageTest.testUsageOutputFunctionWithDocstring  sc    ,,I	(CDA%%iq%HL*O 	(//5r   c                 "   t         j                  j                         j                  }t	        j
                  |d      }t        j                  ||d      }d}t        j                  |      j                  d      }| j                  ||       y )Nro   r   Fr   z
    Usage: FunctionMixedDefaults <flags>
      optional flags:        --beta
      required flags:        --alpha

    For detailed information on this command, run:
      FunctionMixedDefaults --helpr   )r    rA   rp   rq   r   r"   r   r   rw   rx   r   rv   r   s        r   $testUsageOutputFunctionMixedDefaultsz.UsageTest.testUsageOutputFunctionMixedDefaults  sq    ((*33I	(?@A%%iq%HL&O ooo6==dCO_l3r   c                     t        j                         }t        j                  |dd      }t	        j
                  ||d      }d}| j                  t        j                  |      j                  d      |       y )NCallableWithKeywordArgument@r   Fr   z
    Usage: CallableWithKeywordArgument <command> | <flags>
      available commands:    print_msg
      flags are accepted

    For detailed information on this command, run:
      CallableWithKeywordArgument -- --helpr   )
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputCallablez!UsageTest.testUsageOutputCallable  sk    ..0I	(E"%	'A%%iq%HL/O 	(//5r   c                     t         j                  }t        j                  |d      }t	        j
                  ||d      }d}| j                  t        j                  |      j                  d      |       y )NInstanceVarsr   Fr   z~
    Usage: InstanceVars --arg1=ARG1 --arg2=ARG2

    For detailed information on this command, run:
      InstanceVars --helpr   
r    r   r   r"   r   r   rv   rw   rx   r   r   s        r   'testUsageOutputConstructorWithParameterz1UsageTest.testUsageOutputConstructorWithParameter  s`    I	7A%%iq%HLO
 	(//5r   c                     t         j                  }t        j                  |d      }t	        j
                  ||d      }d}| j                  t        j                  |      j                  d      |       y )Nr   r   Tr   z
    Usage: InstanceVars <command> | --arg1=ARG1 --arg2=ARG2
      available commands:    run

    For detailed information on this command, run:
      InstanceVars --helpr   r   r   s        r   .testUsageOutputConstructorWithParameterVerbosez8UsageTest.testUsageOutputConstructorWithParameterVerbose$  s`    I	7A%%iq$GLO 	(//5r   c                     i }t        j                  |d      }t        j                  ||d      }d}| j	                  t        j                  |      j                  d      |       y )N	EmptyDictr   Tr   z`
    Usage: EmptyDict

    For detailed information on this command, run:
      EmptyDict --helpr   r   r"   r   r   rv   rw   rx   r   r   s        r   testUsageOutputEmptyDictz"UsageTest.testUsageOutputEmptyDict2  s\    I	4A%%iq$GLO
 	(//5r   c                     d }t        j                  |d      }t        j                  ||d      }d}| j	                  t        j                  |      j                  d      |       y )NNoner   Tr   zV
    Usage: None

    For detailed information on this command, run:
      None --helpr   r   r   s        r   testUsageOutputNonezUsageTest.testUsageOutputNone?  s\    I	/A%%iq$GLO
 	(//5r   c                     t         j                  }t        j                  |d      }t	        j
                  ||d      }d}| j                  ||       y )NSubPointr   Fr   zUsage: SubPoint --x=X --y=Y)r    r   r   r"   r   r   r#   r   s        r   ,testInitRequiresFlagSyntaxSubclassNamedTuplez6UsageTest.testInitRequiresFlagSyntaxSubclassNamedTupleL  sB    I	
3A%%iq%HL3OMM/<0r   N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r   r   r   r     s>    77774"1r   r   __main__)__doc__r   rw   firer   r   r   r    r   r   BaseTestCaser
   r   r   mainr   r   r   <module>r      sd    % 	    &  Q/y%% Q/hb1	&& b1H z).. r   