ó
    ×›‘h[  ã                   ó  • S r SSKJr  SSKJr   " S S\R
                  5      r " S S\R                  5      r " S S	\R
                  5      r	 " S
 S\R                  5      r
 " S S\R
                  5      r " S S\R
                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R
                  5      r " S S\R
                  5      r " S S\R
                  5      r " S S\R                  5      r " S S\R                  5      r " S S\R                  5      r " S  S!\R                  5      r " S" S#\R                  5      r " S$ S%\R                  5      r " S& S'\R                  5      rg())zK
Tests for L{twisted.python.usage}, a command line option parsing library.
é    ©Úusage)Úunittestc                   óL   • \ rS rSr/ SQ/ SQ/ SQ/ SQ/r/ SQSS//rS	 rS
 rSrg)ÚWellBehavedé   )ÚlongÚwÚdefaultzand a docstring)ÚanotherÚnzno docstring)ÚlongonlyNÚnoshort)Ú	shortlessNÚexceptzthis one got docstring)ÚaflagÚfzO

                 flagallicious docstringness for this here

                 ÚfloutÚoc                 ó"   • SU R                   S'   g )NúPONY!Úmyflag©Úopts©Úselfs    Ú[C:\Users\psant\Downloads\Noiseback\school\venv\Lib\site-packages\twisted/test/test_usage.pyÚ
opt_myflagÚWellBehaved.opt_myflag!   s   € Ø%ˆ�	‰	�(Òó    c                 ó(   • U S3U R                   S'   g )Nz WITH A PONY!Úmyparamr   ©r   Úvalues     r   Úopt_myparamÚWellBehaved.opt_myparam$   s   € Ø"' ¨Ð6ˆ�	‰	�)Òr    © N)	Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__ÚoptParametersÚoptFlagsr   r%   Ú__static_attributes__r'   r    r   r   r      s4   † â3Ú(Ú%Ú?ð	€Mò	
ð 
�#ˆð€Hò&õ7r    r   c                   ó0   • \ rS rSrSrS rS rS rS rSr	g)	ÚParseCorrectnessTestsé(   zN
Test L{usage.Options.parseOptions} for correct values under
good conditions.
c                 ó–   • SR                  5       U l        [        5       U l        U R                  R	                  U R                  5        g)z<
Instantiate and parseOptions a well-behaved Options class.
úA--long Alpha -n Beta --shortless Gamma -f --myflag --myparam TofuN)ÚsplitÚniceArgVr   ÚniceÚparseOptionsr   s    r   ÚsetUpÚParseCorrectnessTests.setUp.   s7   € ð Vß
‰%‹'ð 	Œô  “MˆŒ	à�	‰	×Ñ˜tŸ}™}Õ-r    c                 óL  • U R                  U R                  R                  S   S5        U R                  U R                  R                  S   S5        U R                  U R                  R                  S   S5        U R                  U R                  R                  S   S5        g	)
z!
Parameters have correct values.
r	   ÚAlphar   ÚBetar   r   r   ÚGammaN©ÚassertEqualr6   r   r   s    r   Útest_checkParametersÚ*ParseCorrectnessTests.test_checkParameters;   sx   € ð 	×Ñ˜Ÿ™Ÿ™¨Ñ/°Ô9Ø×Ñ˜Ÿ™Ÿ™¨	Ñ2°FÔ;Ø×Ñ˜Ÿ™Ÿ™¨
Ñ3°YÔ?Ø×Ñ˜Ÿ™Ÿ™¨Ñ4°gÕ>r    c                 ó¨   • U R                  U R                  R                  S   S5        U R                  U R                  R                  S   S5        g)z
Flags have correct values.
r   é   r   r   Nr>   r   s    r   Útest_checkFlagsÚ%ParseCorrectnessTests.test_checkFlagsD   s>   € ð 	×Ñ˜Ÿ™Ÿ™¨Ñ0°!Ô4Ø×Ñ˜Ÿ™Ÿ™¨Ñ0°!Õ4r    c                 ó¨   • U R                  U R                  R                  S   S5        U R                  U R                  R                  S   S5        g)z2
Custom flags and parameters have correct values.
r   r   r"   zTofu WITH A PONY!Nr>   r   s    r   Útest_checkCustomsÚ'ParseCorrectnessTests.test_checkCustomsK   s?   € ð 	×Ñ˜Ÿ™Ÿ™¨Ñ1°7Ô;Ø×Ñ˜Ÿ™Ÿ™¨	Ñ2Ð4GÕHr    ©r6   r5   N)
r(   r)   r*   r+   Ú__doc__r8   r@   rD   rG   r.   r'   r    r   r0   r0   (   s   † ñò
.ò?ò5õIr    r0   c                   óR   • \ rS rSrSSSS\/SSSS\/S	SSS
\/SSSS\//rS r\rSr	g)ÚTypedOptionséS   ÚfoointNéˆ  zFoo intÚfoofloatçìQ¸…ë@z	Foo floatÚeggintzEgg int without defaultÚeggfloatzEgg float without defaultc                 ó   • Xl         g)zO
This option has an underscore in its name to exercise the _ to -
translation.
N©ÚunderscoreValuer#   s     r   Úopt_under_scoreÚTypedOptions.opt_under_score[   s
   € ð
  %Õr    rU   )
r(   r)   r*   r+   ÚintÚfloatr,   rW   Úopt_ur.   r'   r    r   rL   rL   S   sO   † à	�4˜˜i¨Ð-Ø	�T˜4 ¨eÐ4Ø	�4˜Ð8¸#Ð>Ø	�T˜4Ð!<¸eÐDð	€Mò%ð ƒEr    rL   c                   ó<   • \ rS rSrSrS rS rS rS rS r	S r
S	rg
)Ú
TypedTestsée   zC
Test L{usage.Options.parseOptions} for options with forced types.
c                 ó"   • [        5       U l        g ©N)rL   r   r   s    r   r8   ÚTypedTests.setUpj   s   € Ü!“^ˆ�
r    c                 ó6  • / nU R                   R                  U5        U R                  U R                   R                  S   S5        U R	                  U R                   R                  S   [
        5        U R                  U R                   R                  S   S5        U R	                  U R                   R                  S   [        5        U R                  U R                   R                  S   5        U R                  U R                   R                  S   5        g)z
Default values are parsed.
rN   rO   rP   rQ   rR   rS   N)r   r7   r?   r   ÚassertIsInstancerY   rZ   ÚassertIsNone©r   ÚargVs     r   Útest_defaultValuesÚTypedTests.test_defaultValuesm   sÅ   € ð ˆØ�
‰
×Ñ Ô%Ø×Ñ˜Ÿ™Ÿ™¨Ñ2°CÔ8Ø×Ñ˜dŸj™jŸo™o¨hÑ7¼Ô=Ø×Ñ˜Ÿ™Ÿ™¨Ñ4°dÔ;Ø×Ñ˜dŸj™jŸo™o¨jÑ9¼5ÔAØ×Ñ˜$Ÿ*™*Ÿ/™/¨(Ñ3Ô4Ø×Ñ˜$Ÿ*™*Ÿ/™/¨*Ñ5Õ6r    c                 ó
  • SR                  5       nU R                  R                  U5        U R                  U R                  R                  S   S5        U R                  U R                  R                  S   [        5        U R                  U R                  R                  S   S5        U R                  U R                  R                  S   [        5        U R                  U R                  R                  S   S5        U R                  U R                  R                  S   [        5        U R                  U R                  R                  S   S	5        U R                  U R                  R                  S   [        5        g
)z"
int and float values are parsed.
z8--fooint 912 --foofloat -823.1 --eggint 32 --eggfloat 21rN   i�  rP   gÍÌÌÌÌ¸‰ÀrR   é    rS   g      5@N)r4   r   r7   r?   r   rc   rY   rZ   re   s     r   Útest_parsingValuesÚTypedTests.test_parsingValuesz   s  € ð N×TÑTÓVˆØ�
‰
×Ñ Ô%Ø×Ñ˜Ÿ™Ÿ™¨Ñ2°CÔ8Ø×Ñ˜dŸj™jŸo™o¨hÑ7¼Ô=Ø×Ñ˜Ÿ™Ÿ™¨Ñ4°fÔ=Ø×Ñ˜dŸj™jŸo™o¨jÑ9¼5ÔAØ×Ñ˜Ÿ™Ÿ™¨Ñ2°BÔ7Ø×Ñ˜dŸj™jŸo™o¨hÑ7¼Ô=Ø×Ñ˜Ÿ™Ÿ™¨Ñ4°dÔ;Ø×Ñ˜dŸj™jŸo™o¨jÑ9¼5ÕAr    c                 óŠ   • U R                   R                  SS/5        U R                  U R                   R                  S5        g)z_
A dash in an option name is translated to an underscore before being
dispatched to a handler.
z--under-scoreÚfooN©r   r7   r?   rV   r   s    r   Útest_underscoreOptionÚ TypedTests.test_underscoreOption‰   s5   € ð
 	�
‰
×Ñ °%Ð 8Ô9Ø×Ñ˜Ÿ™×3Ñ3°UÕ;r    c                 óŠ   • U R                   R                  SS/5        U R                  U R                   R                  S5        g)z5
An option name with a dash in it can have an alias.
z-uÚbarNro   r   s    r   Útest_underscoreOptionAliasÚ%TypedTests.test_underscoreOptionAlias‘   s4   € ð 	�
‰
×Ñ  u Ô.Ø×Ñ˜Ÿ™×3Ñ3°UÕ;r    c                 óŽ   • SR                  5       nU R                  [        R                  U R                  R                  U5        g)z'
Passing wrong values raises an error.
z--fooint eggN)r4   ÚassertRaisesr   Ú
UsageErrorr7   re   s     r   Útest_invalidValuesÚTypedTests.test_invalidValues˜   s4   € ð ×#Ñ#Ó%ˆØ×Ñœ%×*Ñ*¨D¯J©J×,CÑ,CÀTÕJr    r   N)r(   r)   r*   r+   rJ   r8   rg   rk   rp   rt   ry   r.   r'   r    r   r]   r]   e   s'   † ñò$ò7òBò<ò<õKr    r]   c                   ó   • \ rS rSr/ SQ/rSrg)ÚWrongTypedOptionsé    )ÚbarwrongNNzBar with wrong coerceÚher'   N)r(   r)   r*   r+   r,   r.   r'   r    r   r|   r|       s
   † ÚLÐMƒMr    r|   c                   ó<   • \ rS rSrS rS rSSSS\/SSSS\//rS	rg)
ÚWeirdCallableOptionsé¤   c                 ó   • [        S5      e)NÚOuch)ÚRuntimeError©r$   s    r   Ú_barÚWeirdCallableOptions._bar¥   s   € Ü˜6Ó"Ð"r    c                 ó   • [        S5      e)NÚYay)Ú
ValueErrorr†   s    r   Ú_fooÚWeirdCallableOptions._foo¨   s   € Ü˜ÓÐr    r~   NzBar with strange callableÚfoowrongzFoo with strange callabler'   )r(   r)   r*   r+   r‡   rŒ   r,   r.   r'   r    r   r�   r�   ¤   s3   † ò#ò ð 
�T˜4Ð!<¸dÐCØ	�T˜4Ð!<¸dÐCðƒMr    r�   c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚWrongTypedTestsé±   z>
Test L{usage.Options.parseOptions} for wrong coerce options.
c                 óz   • [        5       nSR                  5       nU R                  [        UR                  U5        g)z"
Using a non-callable type fails.
z--barwrong eggN)r|   r4   rw   Ú	TypeErrorr7   ©r   Úusrf   s      r   Útest_nonCallableÚ WrongTypedTests.test_nonCallable¶   s0   € ô Ó ˆØ×%Ñ%Ó'ˆØ×Ñœ) R§_¡_°dÕ;r    c                 ó>   • [        5       n/ nUR                  U5        g)z@
The coerce functions are not called if no values are provided.
N)r�   r7   r”   s      r   Útest_notCalledInDefaultÚ'WrongTypedTests.test_notCalledInDefault¾   s   € ô "Ó#ˆØˆØ
�‰˜Õr    c                 ó:  • [        5       nSR                  5       nU R                  [        R                  UR
                  U5      nU R                  [        U5      S5        [        5       nSR                  5       nU R                  [        UR
                  U5        g)z9
Errors raised by coerce functions are handled properly.
z--foowrong blahz&Parameter type enforcement failed: Yayz--barwrong blahN)	r�   r4   rw   r   rx   r7   r?   Ústrr…   )r   r•   rf   Úes       r   Útest_weirdCallableÚ"WrongTypedTests.test_weirdCallableÆ   sy   € ô "Ó#ˆØ ×&Ñ&Ó(ˆà×Ñœe×.Ñ.°·±ÀÓFˆØ×Ñœ˜Q›Ð!IÔJä!Ó#ˆØ ×&Ñ&Ó(ˆà×Ñœ,¨¯©¸Õ>r    r'   N)	r(   r)   r*   r+   rJ   r–   r™   rž   r.   r'   r    r   r�   r�   ±   s   † ñò<òõ?r    r�   c                   ó   • \ rS rSrS rSrg)ÚOutputTestséÖ   c                 ó¦   • [        5       nU R                  [        R                  UR                  S/5      nU R                  [        U5      S5        g)z6
Error output case adjustment does not mangle options
z-Zzoption -Z not recognizedN)r   rw   r   rx   r7   r?   rœ   )r   Úoptr�   s      r   Útest_uppercasingÚOutputTests.test_uppercasing×   sB   € ô ‹mˆØ×Ñœe×.Ñ.°×0@Ñ0@À4À&ÓIˆØ×Ñœ˜Q›Ð!;Õ<r    r'   N)r(   r)   r*   r+   r¥   r.   r'   r    r   r¡   r¡   Ö   s   † õ=r    r¡   c                   ó    • \ rS rSrS/rS/rSrg)ÚInquisitionOptionséà   )Úexpectr�   )útorture-deviceÚtúcomfy-chairzset preferred torture devicer'   N)r(   r)   r*   r+   r-   r,   r.   r'   r    r   r¨   r¨   à   s   † àð€Hð 	OðƒMr    r¨   c                   ó   • \ rS rSrSS/rSrg)ÚHolyQuestOptionséé   )Ú	horsebackÚhzuse a horse)ú	for-grailÚgr'   N)r(   r)   r*   r+   r-   r.   r'   r    r   r¯   r¯   é   s   † à)ØðƒHr    r¯   c                   ó2   • \ rS rSrS/rSS\S4SS\S4/rS	rg
)ÚSubCommandOptionséð   )úeuropian-swallowNz$set default swallow type to EuropianÚinquisitionÚinquestzPerform an inquisitionÚ	holyquestÚquestzEmbark upon a holy questr'   N)	r(   r)   r*   r+   r-   r¨   r¯   ÚsubCommandsr.   r'   r    r   r¶   r¶   ð   s1   † àJð€Hð 
˜	Ð#5Ð7OÐPØ	�gÐ/Ð1KÐLðƒKr    r¶   c                   óH   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rSrg)ÚSubCommandTestséú   zB
Test L{usage.Options.parseOptions} for options with subcommands.
c                 óX  • [        5       nUR                  SS/5        U R                  US   5        U R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S   5        U R                  UR                  S   S5        g)z
A subcommand is recognized.
ú--europian-swallowr¹   r¸   rª   r«   r­   N)	r¶   r7   Ú
assertTruer?   Ú
subCommandrc   Ú
subOptionsr¨   ÚassertFalse©r   r   s     r   Útest_simpleSubcommandÚ%SubCommandTests.test_simpleSubcommandÿ   sŠ   € ô ÓˆØ	�‰Ð,¨mÐ<Ô=Ø�‰˜Ð,Ñ-Ô.Ø×Ñ˜Ÿ™ }Ô5Ø×Ñ˜aŸl™lÔ,>Ô?Ø×Ñ˜Ÿ™ hÑ/Ô0Ø×Ñ˜Ÿ™Ð&6Ñ7¸ÕGr    c                 óX  • [        5       nUR                  / SQ5        U R                  US   5        U R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S   5        U R                  UR                  S   S5        g)z1
Flags and options of a subcommand are assigned.
)r¹   ú--expectú--torture-device=featherr¸   r¹   rª   r«   ÚfeatherN©	r¶   r7   rÆ   r?   rÄ   rc   rÅ   r¨   rÃ   rÇ   s     r   Ú"test_subcommandWithFlagsAndOptionsÚ2SubCommandTests.test_subcommandWithFlagsAndOptions  s…   € ô ÓˆØ	�‰ÒNÔOØ×Ñ˜Ð-Ñ.Ô/Ø×Ñ˜Ÿ™ }Ô5Ø×Ñ˜aŸl™lÔ,>Ô?Ø�‰˜Ÿ™ XÑ.Ô/Ø×Ñ˜Ÿ™Ð&6Ñ7¸ÕCr    c                 óX  • [        5       nUR                  / SQ5        U R                  US   5        U R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S   5        U R                  UR                  S   S5        g)z7
Flags and options of a subcommand alias are assigned.
)rº   rË   rÌ   r¸   r¹   rª   r«   rÍ   NrÎ   rÇ   s     r   Ú'test_subcommandAliasWithFlagsAndOptionsÚ7SubCommandTests.test_subcommandAliasWithFlagsAndOptions  s…   € ô ÓˆØ	�‰ÒJÔKØ×Ñ˜Ð-Ñ.Ô/Ø×Ñ˜Ÿ™ }Ô5Ø×Ñ˜aŸl™lÔ,>Ô?Ø�‰˜Ÿ™ XÑ.Ô/Ø×Ñ˜Ÿ™Ð&6Ñ7¸ÕCr    c                 óV  • [        5       nUR                  SS/5        U R                  US   5        U R                  UR                  S5        U R                  UR                  [        5        U R                  UR                  S   5        U R                  UR                  S   5        g)z7
Flags and options of another subcommand are assigned.
r»   z--for-grailr¸   r±   r³   N)	r¶   r7   rÆ   r?   rÄ   rc   rÅ   r¯   rÃ   rÇ   s     r   Ú)test_anotherSubcommandWithFlagsAndOptionsÚ9SubCommandTests.test_anotherSubcommandWithFlagsAndOptions#  s†   € ô ÓˆØ	�‰˜ ]Ð3Ô4Ø×Ñ˜Ð-Ñ.Ô/Ø×Ñ˜Ÿ™ {Ô3Ø×Ñ˜aŸl™lÔ,<Ô=Ø×Ñ˜Ÿ™ kÑ2Ô3Ø�‰˜Ÿ™ [Ñ1Õ2r    c                 óÐ   • [        5       nUR                  S/5        U R                  US   5        U R                  UR                  5        U R                  [        US5      5        g)zh
If no subcommand is specified and no default subcommand is assigned,
a subcommand will not be implied.
rÂ   r¸   rÅ   N)r¶   r7   rÃ   rd   rÄ   rÆ   ÚhasattrrÇ   s     r   Útest_noSubcommandÚ!SubCommandTests.test_noSubcommand/  sU   € ô
 ÓˆØ	�‰Ð,Ð-Ô.Ø�‰˜Ð,Ñ-Ô.Ø×Ñ˜!Ÿ,™,Ô'Ø×Ñœ  LÓ1Õ2r    c                 ód  • [        5       nSUl        UR                  S/5        U R                  US   5        U R	                  UR
                  S5        U R                  UR                  [        5        U R                  UR                  S   5        U R	                  UR                  S   S5        g)	z;
Flags and options in the default subcommand are assigned.
rº   rÂ   r¸   r¹   rª   r«   r­   N)
r¶   ÚdefaultSubCommandr7   rÃ   r?   rÄ   rc   rÅ   r¨   rÆ   rÇ   s     r   Útest_defaultSubcommandÚ&SubCommandTests.test_defaultSubcommand:  s�   € ô ÓˆØ'ˆÔØ	�‰Ð,Ð-Ô.Ø�‰˜Ð,Ñ-Ô.Ø×Ñ˜Ÿ™ }Ô5Ø×Ñ˜aŸl™lÔ,>Ô?Ø×Ñ˜Ÿ™ hÑ/Ô0Ø×Ñ˜Ÿ™Ð&6Ñ7¸ÕGr    c                 ó8  ^•  " S S[         R                  5      m " U4S jS[         R                  5      nU" 5       nUR                  S/5        U R                  [	        UR
                  S5      5        U R                  UR
                  R                  U5        g)z_
The parseOptions method from the Options object specified for the
given subcommand is called.
c                   ó   • \ rS rSrS rSrg)ÚDSubCommandTests.test_subCommandParseOptionsHasParent.<locals>.SubOptiM  c                 ón   • U R                   U l        [        R                  R                  " U /UQ70 UD6  g r`   )ÚparentÚ	sawParentr   ÚOptionsr7   )r   ÚaÚkws      r   r7   ÚQSubCommandTests.test_subCommandParseOptionsHasParent.<locals>.SubOpt.parseOptionsN  s)   € Ø!%§¡�”Ü—‘×*Ò*¨4Ð:°!Ò:°rÓ:r    )rä   N)r(   r)   r*   r+   r7   r.   r'   r    r   ÚSubOptrá   M  s   † õ;r    ré   c                   ó&   >• \ rS rSrSS Y S4/rSrg)ÚASubCommandTests.test_subCommandParseOptionsHasParent.<locals>.OptiR  rn   r   rs   r'   N©r(   r)   r*   r+   r½   r.   ©ré   s   €r   ÚOptrë   R  s   ø† à˜™V UÐ+ð‹Kr    rî   rn   rä   N)r   rå   r7   rÃ   rØ   rÅ   r?   rä   )r   rî   r   ré   s      @r   Ú$test_subCommandParseOptionsHasParentÚ4SubCommandTests.test_subCommandParseOptionsHasParentG  sk   ø€ ô	;”U—]‘]ô 	;÷
	”%—-‘-ô 	ñ
 ‹EˆØ	�‰˜�wÔØ�‰œ §¡¨kÓ:Ô;Ø×Ñ˜Ÿ™×/Ñ/°Õ3r    c                 ó8  ^•  " S S[         R                  5      m " U4S jS[         R                  5      n " U4S jS[         R                  5      nU" 5       nUR                  S/5        U" 5       nUR                  S/5        U R                  [	        UR
                  S	5      5        U R                  [	        UR
                  S	5      5        U R                  UR
                  R                  U5        U R                  UR
                  R                  U5        g
)zP
The .parent pointer is correct even when the same Options class is
used twice.
c                   ó   • \ rS rSrSrg)Ú:SubCommandTests.test_subCommandInTwoPlaces.<locals>.SubOptib  r'   N)r(   r)   r*   r+   r.   r'   r    r   ré   ró   b  s   † Úr    ré   c                   ó&   >• \ rS rSrSS Y S4/rSrg)Ú:SubCommandTests.test_subCommandInTwoPlaces.<locals>.OptFooie  rn   r   Úquuxr'   Nrì   rí   s   €r   ÚOptFoorõ   e  ó   ø† à˜™V VÐ,ð‹Kr    r÷   c                   ó&   >• \ rS rSrSS Y S4/rSrg)Ú:SubCommandTests.test_subCommandInTwoPlaces.<locals>.OptBarij  rs   Úbrö   r'   Nrì   rí   s   €r   ÚOptBarrú   j  rø   r    rü   rn   rs   rã   N)r   rå   r7   rÃ   rØ   rÅ   ÚfailUnlessIdenticalrã   )r   r÷   rü   ÚoFooÚoBarré   s        @r   Útest_subCommandInTwoPlacesÚ*SubCommandTests.test_subCommandInTwoPlaces\  sÅ   ø€ ô	”U—]‘]ô 	÷	”U—]‘]ô 	÷
	”U—]‘]ô 	ñ
 ‹xˆØ×Ñ˜5˜'Ô"Ù‹xˆØ×Ñ˜5˜'Ô"Ø�‰œ §¡°Ó:Ô;Ø�‰œ §¡°Ó:Ô;Ø× Ñ  §¡×!7Ñ!7¸Ô>Ø× Ñ  §¡×!7Ñ!7¸Õ>r    r'   N)r(   r)   r*   r+   rJ   rÈ   rÏ   rÒ   rÕ   rÙ   rÝ   rï   r   r.   r'   r    r   r¿   r¿   ú   s3   † ñò
Hò
Dò
Dò
3ò	3òHò4õ*?r    r¿   c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚHelpStringTestsiy  z
Test generated help strings.
c                 óL   • SR                  5       U l        [        5       U l        g)z+
Instantiate a well-behaved Options class.
r3   N)r4   r5   r   r6   r   s    r   r8   ÚHelpStringTests.setUp~  s!   € ð Vß
‰%‹'ð 	Œô  “Mˆ�	r    c                 óŠ   •  U R                   R                  5         g! [         a  nU R                  U5         SnAgSnAff = f)z
__str__ shouldn't go boom.
N)r6   Ú__str__Ú	ExceptionÚfail)r   r�   s     r   Útest_noGoBoomÚHelpStringTests.test_noGoBoom‰  s4   € ð	Ø�I‰I×ÑÕøÜó 	Ø�I‰I�a�L‰Lûð	ús   ‚ �
A§=½Ac                 ó&  • [        U R                  5      R                  5        Vs/ s H  oR                  S5      S:¼  d  M  UPM     nnU R	                  [        U5      S:„  5        U R	                  US   R                  S5      S:¬  5        gs  snf )z;
Extra whitespace in flag and parameters docs is stripped.
r   r   ÚflagalliciousN)rœ   r6   Ú
splitlinesÚfindrÃ   Úlen)r   ÚsÚliness      r   Ú&test_whitespaceStripFlagsAndParametersÚ6HelpStringTests.test_whitespaceStripFlagsAndParameters’  sp   € ô   §	¡	›N×5Ñ5Ô7ÓPÒ7�q¿6¹6À'»?ÈaÑ;O—Ñ7ˆÐPØ�‰œ˜E›
 Q™Ô'Ø�‰˜˜a™Ÿ™ oÓ6¸!Ñ;Õ<ùò Qs   ¦BÁBrI   N)	r(   r)   r*   r+   rJ   r8   r
  r  r.   r'   r    r   r  r  y  s   † ñò	"òõ=r    r  c                   ó$   • \ rS rSrSrS rS rSrg)ÚPortCoerceTestsi�  z+
Test the behavior of L{usage.portCoerce}.
c                 óè   • U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        U R                  S[        R                  " S5      5        g)z$
Test the answers with valid input.
r   Ú0iŠ  Ú3210iÿÿ  Ú65535N)r?   r   Ú
portCoercer   s    r   Útest_validCoerceÚ PortCoerceTests.test_validCoerce¢  sU   € ð 	×Ñ˜œE×,Ò,¨SÓ1Ô2Ø×Ñ˜œu×/Ò/°Ó7Ô8Ø×Ñ˜¤× 0Ò 0°Ó 9Õ:r    c                 ó,  • U R                  [        [        R                  S5        U R                  [        [        R                  S5        U R                  [        [        R                  S5        U R                  [        [        R                  S5        g)z
Test error path.
Ú z-21Ú212189rn   N)rw   r‹   r   r  r   s    r   Útest_errorCoerceÚ PortCoerceTests.test_errorCoerceª  sd   € ð 	×Ñœ*¤e×&6Ñ&6¸Ô;Ø×Ñœ*¤e×&6Ñ&6¸Ô>Ø×Ñœ*¤e×&6Ñ&6¸ÔAØ×Ñœ*¤e×&6Ñ&6¸Õ>r    r'   N)r(   r)   r*   r+   rJ   r  r!  r.   r'   r    r   r  r  �  s   † ñò;õ?r    r  c                   óT   • \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rSrg)ÚZshCompleterTestsi´  z
Test the behavior of the various L{twisted.usage.Completer} classes
for producing output usable by zsh tab-completion system.
c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)zH
Completer produces zsh shell-code that produces no completion matches.
úsome-optionz:some-option:úsome actionT©ÚdescrÚrepeatú*:some action:N)r   Ú	CompleterÚ
_shellCodeÚ_ZSHr?   ©r   ÚcÚgots      r   Útest_completerÚ ZshCompleterTests.test_completerº  si   € ô �OŠOÓˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜˜oÔ.ä�OŠO -¸Ñ=ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð.Õ/r    c                 ó²  • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " S5      nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSSS9nUR                  S[         R                  5      nU R	                  US5        g	)
zV
CompleteFiles produces zsh shell-code that completes file names
according to a glob.
r&  z:some-option (*):_files -g "*"z*.pyz$:some-option (*.py):_files -g "*.py"r'  Tr(  z%*:some action (*.py):_files -g "*.py"N)r   ÚCompleteFilesr-  r.  r?   r/  s      r   Ú
test_filesÚZshCompleterTests.test_filesÆ  s¥   € ô
 ×ÒÓ!ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð>Ô?ä×Ò Ó'ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜ÐDÔEä×Ò ¨mÀDÑIˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜ÐEÕFr    c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)zF
CompleteDirs produces zsh shell-code that completes directory names.
r&  z:some-option:_directoriesr'  Tr(  z*:some action:_directoriesN)r   ÚCompleteDirsr-  r.  r?   r/  s      r   Ú	test_dirsÚZshCompleterTests.test_dirs×  sn   € ô ×ÒÓ ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð9Ô:ä×Ò ]¸4Ñ@ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð:Õ;r    c                 ó¼  • [         R                  " S5      nUR                  S[         R                  5      nU R	                  US5        [         R                  " / SQ5      nUR                  S[         R                  5      nU R	                  US5        [         R                  " / SQSSS9nUR                  S[         R                  5      nU R	                  US	5        g
)z_
CompleteList produces zsh shell-code that completes words from a fixed
list of possibilities.
ÚABCr&  z:some-option:(A B C)©Ú1Ú2Ú3z:some-option:(1 2 3)r'  Tr(  z*:some action:(1 2 3)N)r   ÚCompleteListr-  r.  r?   r/  s      r   Ú	test_listÚZshCompleterTests.test_listã  s§   € ô
 ×Ò˜uÓ%ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð4Ô5ä×ÒšÓ/ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð4Ô5ä×Òš°mÈDÑQˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð5Õ6r    c                 ó¾  • [         R                  " S5      nUR                  S[         R                  5      nU R	                  US5        [         R                  " / SQ5      nUR                  S[         R                  5      nU R	                  US5        [         R                  " / SQSSS9nUR                  S[         R                  5      nS	nU R	                  X#5        g
)z}
CompleteMultiList produces zsh shell-code that completes multiple
comma-separated words from a fixed list of possibilities.
r=  r&  z-:some-option:_values -s , 'some-option' A B Cr>  z-:some-option:_values -s , 'some-option' 1 2 3r'  Tr(  z.*:some action:_values -s , 'some action' 1 2 3N)r   ÚCompleteMultiListr-  r.  r?   )r   r0  r1  Úexpecteds       r   Útest_multiListÚ ZshCompleterTests.test_multiListô  sª   € ô
 ×#Ò# EÓ*ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜ÐMÔNä×#Ò#¢OÓ4ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜ÐMÔNä×#Ò#¢O¸=ÐQUÑVˆØ�l‰l˜=¬%¯*©*Ó5ˆØCˆØ×Ñ˜Õ'r    c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)zL
CompleteUsernames produces zsh shell-code that completes system
usernames.
r&  z:some-option:_usersr'  Tr(  z*:some action:_usersN)r   ÚCompleteUsernamesr-  r.  r?   ©r   r0  Úouts      r   Útest_usernamesÚ ZshCompleterTests.test_usernames  sn   € ô
 ×#Ò#Ó%ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð3Ô4ä×#Ò#¨-ÀÑEˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð4Õ5r    c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)zK
CompleteGroups produces zsh shell-code that completes system group
names.
r&  z:group:_groupsr'  Tr(  z*:some action:_groupsN)r   ÚCompleteGroupsr-  r.  r?   rL  s      r   Útest_groupsÚZshCompleterTests.test_groups  sn   € ô
 × Ò Ó"ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð.Ô/ä× Ò  }¸TÑBˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð5Õ6r    c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)zE
CompleteHostnames produces zsh shell-code that completes hostnames.
r&  z:some-option:_hostsr'  Tr(  z*:some action:_hostsN)r   ÚCompleteHostnamesr-  r.  r?   rL  s      r   Útest_hostnamesÚ ZshCompleterTests.test_hostnames   sn   € ô ×#Ò#Ó%ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð3Ô4ä×#Ò#¨-ÀÑEˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð4Õ5r    c                 óX  • [         R                  " 5       nUR                  S[         R                  5      nU R	                  UR                  S5      5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  UR                  S5      5        g)zr
CompleteUserAtHost produces zsh shell-code that completes hostnames or
a word of the form <username>@<hostname>.
r&  z:host | user@host:r'  Tr(  r+  N)r   ÚCompleteUserAtHostr-  r.  rÃ   Ú
startswithrL  s      r   Útest_userAtHostÚ!ZshCompleterTests.test_userAtHost,  sx   € ô
 ×$Ò$Ó&ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ�‰˜Ÿ™Ð';Ó<Ô=ä×$Ò$¨=ÀÑFˆØ�l‰l˜=¬%¯*©*Ó5ˆØ�‰˜Ÿ™Ð'7Ó8Õ9r    c                 ó   • [         R                  " 5       nUR                  S[         R                  5      nU R	                  US5        [         R                  " SSS9nUR                  S[         R                  5      nU R	                  US5        g)z^
CompleteNetInterfaces produces zsh shell-code that completes system
network interface names.
r&  z:some-option:_net_interfacesr'  Tr(  z*:some action:_net_interfacesN)r   ÚCompleteNetInterfacesr-  r.  r?   rL  s      r   Útest_netInterfacesÚ$ZshCompleterTests.test_netInterfaces9  sn   € ô
 ×'Ò'Ó)ˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð<Ô=ä×'Ò'¨mÀDÑIˆØ�l‰l˜=¬%¯*©*Ó5ˆØ×Ñ˜Ð=Õ>r    r'   N)r(   r)   r*   r+   rJ   r2  r6  r:  rC  rH  rN  rR  rV  r[  r_  r.   r'   r    r   r$  r$  ´  s:   † ñò

0òGò"
<ò7ò"(ò$6ò7ò
6ò:õ?r    r$  c                   ó   • \ rS rSrSrS rSrg)ÚCompleterNotImplementedTestsiG  zg
Using an unknown shell constant with the various Completer() classes
should raise NotImplementedError
c           
      óÊ  • [         R                  [         R                  [         R                  [         R                  [         R
                  [         R                  [         R                  [         R                  [         R                  [         R                  /
nU H-  n U" 5       nU R                  [        UR                  SS5        M/     g! [         a    U" S5      n N;f = f)z=
Using an unknown shellType should raise NotImplementedError
NÚbad_shell_type)r   r,  r5  r9  rB  rF  rK  rQ  rU  rY  r^  ÚBaseExceptionrw   ÚNotImplementedErrorr-  )r   ÚclassesÚclsÚactions       r   Útest_unknownShellÚ.CompleterNotImplementedTests.test_unknownShellM  sµ   € ô
 �O‰OÜ×ÑÜ×ÑÜ×ÑÜ×#Ñ#Ü×#Ñ#Ü× Ñ Ü×#Ñ#Ü×$Ñ$Ü×'Ñ'ð
ˆó ˆCð#Ù›�ð ×ÑÜ# V×%6Ñ%6¸Ð>Nöò øô !ó #Ù˜T›’ð#ús   ÂCÃC"Ã!C"r'   N)r(   r)   r*   r+   rJ   rj  r.   r'   r    r   rb  rb  G  s   † ñõ
r    rb  c                   óD   • \ rS rSrSr " S S5      rS rS rS rS r	S	r
g
)ÚFlagFunctionTestsih  z"
Tests for L{usage.flagFunction}.
c                   ó*   • \ rS rSrSrS rS rS rSrg)ÚFlagFunctionTests.SomeClassim  z.
Dummy class for L{usage.flagFunction} tests.
c                 ó   • g)z�
A one argument method to be tested by L{usage.flagFunction}.

@param a: a useless argument to satisfy the function's signature.
Nr'   )r   ræ   s     r   ÚoneArgÚ"FlagFunctionTests.SomeClass.oneArgr  ó   � r    c                 ó   • g)z=
A no argument method to be tested by L{usage.flagFunction}.
Nr'   r   s    r   ÚnoArgÚ!FlagFunctionTests.SomeClass.noArgy  rs  r    c                 ó   • g)a  
A multiple arguments method to be tested by L{usage.flagFunction}.

@param a: a useless argument to satisfy the function's signature.
@param b: a useless argument to satisfy the function's signature.
@param c: a useless argument to satisfy the function's signature.
Nr'   )r   ræ   rû   r0  s       r   ÚmanyArgsÚ$FlagFunctionTests.SomeClass.manyArgs~  rs  r    r'   N)	r(   r)   r*   r+   rJ   rq  ru  rx  r.   r'   r    r   Ú	SomeClassro  m  s   † ñ	ò	ò	õ
	r    rz  c                 ó€   • U R                  S[        R                  " U R                  5       R                  5      5        g)z[
L{usage.flagFunction} returns C{False} if the method checked allows
exactly one argument.
FN)ÚassertIsr   ÚflagFunctionrz  rq  r   s    r   Útest_hasArgÚFlagFunctionTests.test_hasArg‡  s*   € ð
 	�‰�eœU×/Ò/°·±Ó0@×0GÑ0GÓHÕIr    c                 ó€   • U R                  S[        R                  " U R                  5       R                  5      5        g)zY
L{usage.flagFunction} returns C{True} if the method checked allows
exactly no argument.
TN)r|  r   r}  rz  ru  r   s    r   Ú
test_noArgÚFlagFunctionTests.test_noArgŽ  s*   € ð
 	�‰�dœE×.Ò.¨t¯~©~Ó/?×/EÑ/EÓFÕGr    c                 óÈ   • U R                  [        R                  [        R                  U R	                  5       R
                  5      nU R                  S[        U5      5        g)zg
L{usage.flagFunction} raises L{usage.UsageError} if the method checked
allows more than one argument.
z$Invalid Option function for manyArgsN©rw   r   rx   r}  rz  rx  r?   rœ   ©r   Úexcs     r   Útest_tooManyArgumentsÚ'FlagFunctionTests.test_tooManyArguments•  sK   € ð
 ×ÑÜ×Ñœe×0Ñ0°$·.±.Ó2B×2KÑ2Kó
ˆð 	×ÑÐ?ÄÀSÃÕJr    c                 óÊ   • U R                  [        R                  [        R                  U R	                  5       R
                  S5      nU R                  S[        U5      5        g)zy
L{usage.flagFunction} uses the given method name in the error message
raised when the method allows too many arguments.
Úflubudufz$Invalid Option function for flubudufNr„  r…  s     r   Ú,test_tooManyArgumentsAndSpecificErrorMessageÚ>FlagFunctionTests.test_tooManyArgumentsAndSpecificErrorMessageŸ  sM   € ð
 ×ÑÜ×Ñœe×0Ñ0°$·.±.Ó2B×2KÑ2KÈZó
ˆð 	×ÑÐ?ÄÀSÃÕJr    r'   N)r(   r)   r*   r+   rJ   rz  r~  r�  r‡  r‹  r.   r'   r    r   rm  rm  h  s)   † ñ÷ñ ò4JòHòKõKr    rm  c                   ó   • \ rS rSrSrS rSrg)ÚOptionsInternalTestsiª  z.
Tests internal behavior of C{usage.Options}.
c                 óê   •  " S S[         R                  5      nU" 5       nU R                  [        R	                  / SQS5      UR
                  S   UR
                  S   UR
                  S   S.5        g)z[
Options which are synonyms to another option are aliases towards the
longest option name.
c                   ó"   • \ rS rSrS r\r\rSrg)Ú;OptionsInternalTests.test_optionsAliasesOrder.<locals>.Optsiµ  c                 ó   • g)zN
This is an option method with a very long name, that is going to
be aliased.
Nr'   r   s    r   Úopt_very_very_longÚNOptionsInternalTests.test_optionsAliasesOrder.<locals>.Opts.opt_very_very_long¶  rs  r    r'   N)r(   r)   r*   r+   r“  Ú	opt_shortÚopt_sr.   r'   r    r   ÚOptsr‘  µ  s   † òð +ˆIØ&‹Er    r—  )r  Úshortúvery-very-longr™  r  r˜  N)r   rå   r?   ÚdictÚfromkeysÚsynonyms)r   r—  r   s      r   Útest_optionsAliasesOrderÚ-OptionsInternalTests.test_optionsAliasesOrder¯  sc   € ô	'”5—=‘=ô 	'ñ ‹vˆà×ÑÜ�M‰MÒ:Ð<LÓMà—]‘] 3Ñ'ØŸ™ wÑ/Ø"&§-¡-Ð0@Ñ"Añõ	
r    r'   N)r(   r)   r*   r+   rJ   r�  r.   r'   r    r   rŽ  rŽ  ª  s   † ñõ
r    rŽ  N)rJ   Útwisted.pythonr   Útwisted.trialr   rå   r   ÚTestCaser0   rL   r]   r|   r�   r�   r¡   r¨   r¯   r¶   r¿   r  r  r$  rb  rm  rŽ  r'   r    r   Ú<module>r¢     s\  ðñõ
 !Ý "ô7�%—-‘-ô 7ô6(I˜H×-Ñ-ô (IôV�5—=‘=ô ô$8K�×"Ñ"ô 8KôvN˜Ÿ™ô Nô
˜5Ÿ=™=ô 
ô"?�h×'Ñ'ô "?ôJ=�(×#Ñ#ô =ô˜Ÿ™ô ô�u—}‘}ô ô˜Ÿ™ô ô|?�h×'Ñ'ô |?ô~!=�h×'Ñ'ô !=ôH?�h×'Ñ'ô ?ô.P?˜×)Ñ)ô P?ôf 8×#4Ñ#4ô ôB?K˜×)Ñ)ô ?KôD
˜8×,Ñ,õ 
r    