ó
[³XMc           @   sˆ  d  Z  d d l m Z d d l m Z d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d	 „  ƒ  YZ	 d
 e j f d „  ƒ  YZ
 d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d e j f d „  ƒ  YZ d  S(!   sK   
Tests for L{twisted.python.usage}, a command line option parsing library.
iÿÿÿÿ(   t   unittest(   t   usaget   WellBehavedc           B   sq   e  Z d  d d d g d d d g d d d g d	 d d
 d g g Z d d d g d d g g Z d „  Z d „  Z RS(   t   longt   wt   defaults   and a docstringt   anothert   ns   no docstringt   longonlyt   noshortt	   shortlesst   excepts   this one got docstringt   aflagt   fsO   

                 flagallicious docstringness for this here

                 t   floutt   oc         C   s   d |  j  d <d  S(   Ns   PONY!t   myflag(   t   opts(   t   self(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt
   opt_myflag   s    c         C   s   d | f |  j  d <d  S(   Ns   %s WITH A PONY!t   myparam(   R   (   R   t   value(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   opt_myparam    s    N(   t   __name__t
   __module__t   Nonet   optParameterst   optFlagsR   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR      s   		t   ParseCorrectnessTestc           B   s2   e  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sJ   
    Test Options.parseArgs for correct values under good conditions.
    c         C   s2   d j  ƒ  |  _ t ƒ  |  _ |  j j |  j ƒ d S(   sL   
        Instantiate and parseOptions a well-behaved Options class.
        sA   --long Alpha -n Beta --shortless Gamma -f --myflag --myparam TofuN(   t   splitt   niceArgVR   t   nicet   parseOptions(   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   setUp)   s    c         C   sl   |  j  |  j j d d ƒ |  j  |  j j d d ƒ |  j  |  j j d d ƒ |  j  |  j j d d ƒ d	 S(
   s?   
        Checking that parameters have correct values.
        R   t   AlphaR   t   BetaR   R	   R
   t   GammaN(   t   failUnlessEqualR   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_checkParameters6   s    c         C   s8   |  j  |  j j d d ƒ |  j  |  j j d d ƒ d S(   s:   
        Checking that flags have correct values.
        R   i   R   i    N(   R%   R   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_checkFlags?   s    c         C   s8   |  j  |  j j d d ƒ |  j  |  j j d d ƒ d S(   sP   
        Checking that custom flags and parameters have correct values.
        R   s   PONY!R   s   Tofu WITH A PONY!N(   R%   R   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_checkCustomsF   s    (   R   R   t   __doc__R!   R&   R'   R(   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR   %   s
   				t   TypedOptionsc           B   se   e  Z d  d d d e g d d d d e g d d d d e g d d d d	 e g g Z d
 „  Z e Z RS(   t   foointiˆ  s   Foo intt   foofloatgìQ¸…ë@s	   Foo floatt   eggints   Egg int without defaultt   eggfloats   Egg float without defaultc         C   s   | |  _  d S(   sg   
        This option has an underscore in its name to exercise the _ to -
        translation.
        N(   t   underscoreValue(   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   opt_under_scoreW   s    N(   R   R   R   t   intt   floatR   R0   t   opt_u(    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR*   O   s   	t   TypedTestCasec           B   sD   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s?   
    Test Options.parseArgs for options with forced types.
    c         C   s   t  ƒ  |  _ d  S(   N(   R*   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR!   e   s    c         C   sÂ   g  } |  j  j | ƒ |  j |  j  j d d ƒ |  j t |  j  j d t ƒ ƒ |  j |  j  j d d ƒ |  j t |  j  j d t ƒ ƒ |  j |  j  j d d ƒ |  j |  j  j d d ƒ d S(   s1   
        Test parsing of default values.
        R+   iˆ  R,   gìQ¸…ë@R-   R.   N(	   R   R    R%   R   t   assert_t
   isinstanceR1   R2   R   (   R   t   argV(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_defaultValuesh   s      c         C   s  d j  ƒ  } |  j j | ƒ |  j |  j j d d ƒ |  j t |  j j d t ƒ ƒ |  j |  j j d d ƒ |  j t |  j j d t ƒ ƒ |  j |  j j d d ƒ |  j t |  j j d t ƒ ƒ |  j |  j j d d	 ƒ |  j t |  j j d t ƒ ƒ d
 S(   s=   
        Test basic parsing of int and float values.
        s8   --fooint 912 --foofloat -823.1 --eggint 32 --eggfloat 21R+   i  R,   gÍÌÌÌÌ¸‰ÀR-   i    R.   g      5@N(	   R   R   R    R%   R   R5   R6   R1   R2   (   R   R7   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_parsingValuesv   s       c         C   s0   |  j  j d d g ƒ |  j |  j  j d ƒ d S(   sw   
        A dash in an option name is translated to an underscore before being
        dispatched to a handler.
        s   --under-scoret   fooN(   R   R    t   assertEqualsR/   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_underscoreOption‡   s    c         C   s0   |  j  j d d g ƒ |  j |  j  j d ƒ d S(   sE   
        An option name with a dash in it can have an alias.
        s   -ut   barN(   R   R    R;   R/   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_underscoreOptionAlias   s    c         C   s,   d j  ƒ  } |  j t j |  j j | ƒ d S(   sB   
        Check that passing wrong values raises an error.
        s   --fooint eggN(   R   t   assertRaisesR   t
   UsageErrorR    (   R   R7   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_invalidValues˜   s    (	   R   R   R)   R!   R8   R9   R<   R>   RA   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR4   a   s   						t   WrongTypedOptionsc           B   s    e  Z d  d d d d g g Z RS(   t   barwrongs   Bar with wrong coercet   heN(   R   R   R   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRB   ¡   s   t   WeirdCallableOptionsc           B   sD   e  Z d  „  Z d „  Z d d d d e g d d d d e g g Z RS(   c         C   s   t  d ƒ ‚ d  S(   Nt   Ouch(   t   RuntimeError(   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   _bar¨   s    c         C   s   t  d ƒ ‚ d  S(   Nt   Yay(   t
   ValueError(   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   _fooª   s    RC   s   Bar with strange callablet   foowrongs   Foo with strange callableN(   R   R   RH   RK   R   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRE   §   s   		t   WrongTypedTestCasec           B   s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   s:   
    Test Options.parseArgs for wrong coerce options.
    c         C   s/   t  ƒ  } d j ƒ  } |  j t | j | ƒ d S(   s=   
        Check that using a non callable type fails.
        s   --barwrong eggN(   RB   R   R?   t	   TypeErrorR    (   R   t   usR7   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_nonCallable¶   s    	c         C   s    t  ƒ  } g  } | j | ƒ d S(   sb   
        Test that the coerce functions are not called if no values are
        provided.
        N(   RE   R    (   R   RO   R7   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_notCalledInDefault¾   s    	c         C   su   t  ƒ  } d j ƒ  } |  j t j | j | ƒ } |  j t | ƒ d ƒ t  ƒ  } d j ƒ  } |  j t | j | ƒ d S(   sG   
        Test what happens when coerce functions raise errors.
        s   --foowrong blahs&   Parameter type enforcement failed: Yays   --barwrong blahN(	   RE   R   R?   R   R@   R    R;   t   strRG   (   R   RO   R7   t   e(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_weirdCallableÇ   s    		(   R   R   R)   RP   RQ   RT   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRM   ²   s   			t
   OutputTestc           B   s   e  Z d  „  Z RS(   c         C   sA   t  ƒ  } |  j t j | j d g ƒ } |  j t | ƒ d ƒ d S(   sF   
        Error output case adjustment does not mangle options
        s   -Zs   option -Z not recognizedN(   R   R?   R   R@   R    R;   RR   (   R   t   optRS   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_uppercasingØ   s    	(   R   R   RW   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRU   ×   s   t   InquisitionOptionsc           B   s   e  Z d g Z d g Z RS(   t   expectRS   s   torture-devicet   ts   comfy-chairs   set preferred torture device(   RY   RS   (   s   torture-deviceRZ   s   comfy-chairs   set preferred torture device(   R   R   R   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRX   â   s   	  t   HolyQuestOptionsc           B   s   e  Z d d g Z RS(   t	   horsebackt   hs   use a horses	   for-grailt   g(   R\   R]   s   use a horse(   s	   for-grailR^   (   R   R   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR[   í   s    t   SubCommandOptionsc           B   s5   e  Z d	 g Z d d e d f d d e d f g Z RS(
   s   europian-swallows$   set default swallow type to Europiant   inquisitiont   inquests   Perform an inquisitiont	   holyquestt   quests   Embark upon a holy questN(   s   europian-swallowNs$   set default swallow type to Europian(   R   R   R   R   RX   R[   t   subCommands(    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR_   ô   s    			t   SubCommandTestc           B   sP   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 RS(   c         C   sŽ   t  ƒ  } | j d d g ƒ |  j | d t ƒ |  j | j d ƒ |  j t | j t ƒ ƒ |  j | j d t	 ƒ |  j | j d d ƒ d  S(   Ns   --europian-swallowR`   s   europian-swallowRY   s   torture-devices   comfy-chair(
   R_   R    R%   t   Truet
   subCommandt
   failUnlessR6   t
   subOptionsRX   t   False(   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_simpleSubcommand  s    	c         C   s‘   t  ƒ  } | j d d d g ƒ |  j | d t ƒ |  j | j d ƒ |  j t | j t ƒ ƒ |  j | j d t	 ƒ |  j | j d d ƒ d  S(   NR`   s   --expects   --torture-device=feathers   europian-swallowRY   s   torture-devicet   feather(
   R_   R    R%   Rj   Rg   Rh   R6   Ri   RX   Rf   (   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt"   test_subcommandWithFlagsAndOptions  s    	c         C   s‘   t  ƒ  } | j d d d g ƒ |  j | d t ƒ |  j | j d ƒ |  j t | j t ƒ ƒ |  j | j d t	 ƒ |  j | j d d ƒ d  S(	   NRa   s   --expects   --torture-device=feathers   europian-swallowR`   RY   s   torture-deviceRl   (
   R_   R    R%   Rj   Rg   Rh   R6   Ri   RX   Rf   (   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt'   test_subcommandAliasWithFlagsAndOptions  s    	c         C   sŽ   t  ƒ  } | j d d g ƒ |  j | d t ƒ |  j | j d ƒ |  j t | j t ƒ ƒ |  j | j d t ƒ |  j | j d t	 ƒ d  S(   NRb   s   --for-grails   europian-swallowR\   s	   for-grail(
   R_   R    R%   Rj   Rg   Rh   R6   Ri   R[   Rf   (   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt)   test_anotherSubcommandWithFlagsAndOptions  s    	c         C   sZ   t  ƒ  } | j d g ƒ |  j | d t ƒ |  j | j d  ƒ |  j t | d ƒ ƒ d  S(   Ns   --europian-swallows   europian-swallowRi   (   R_   R    R%   Rf   Rg   R   t   failIft   hasattr(   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_noSubcommand&  s
    	c         C   s”   t  ƒ  } d | _ | j d g ƒ |  j | d t ƒ |  j | j d ƒ |  j t | j t	 ƒ ƒ |  j | j d t
 ƒ |  j | j d d ƒ d  S(   NRa   s   --europian-swallows   europian-swallowR`   RY   s   torture-devices   comfy-chair(   R_   t   defaultSubCommandR    R%   Rf   Rg   Rh   R6   Ri   RX   Rj   (   R   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_defaultSubcommand-  s    		c            s„   d t  j f d „  ƒ  Y‰  d t  j f ‡  f d †  ƒ  Y} | ƒ  } | j d g ƒ |  j t | j d ƒ ƒ |  j | j j | ƒ d  S(   Nt   SubOptc           B   s   e  Z d  „  Z RS(   c         _   s&   |  j  |  _ t j j |  | | Ž d  S(   N(   t   parentt	   sawParentR   t   OptionsR    (   R   t   at   kw(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR    9  s    (   R   R   R    (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRu   8  s   t   Optc              s   e  Z d  d ˆ  d f g Z RS(   R:   R   R=   (   R   R   Rd   (    (   Ru   (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR{   <  s   R:   Rw   (   R   Rx   R    Rh   Rq   Ri   R%   Rw   (   R   R{   R   (    (   Ru   s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt$   test_subCommandParseOptionsHasParent7  s    	c            së   d t  j f d „  ƒ  Y‰  d t  j f ‡  f d †  ƒ  Y} d t  j f ‡  f d †  ƒ  Y} | ƒ  } | j d g ƒ | ƒ  } | j d g ƒ |  j t | j d	 ƒ ƒ |  j t | j d	 ƒ ƒ |  j | j j | ƒ |  j | j j | ƒ d
 S(   sh   
        The .parent pointer is correct even when the same Options class is
        used twice.
        Ru   c           B   s   e  Z RS(    (   R   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRu   J  s   t   OptFooc              s   e  Z d  d ˆ  d f g Z RS(   R:   R   t   quux(   R   R   Rd   (    (   Ru   (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR}   L  s   t   OptBarc              s   e  Z d  d ˆ  d f g Z RS(   R=   t   bR~   (   R   R   Rd   (    (   Ru   (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR   P  s   R:   R=   Rv   N(   R   Rx   R    Rh   Rq   Ri   t   failUnlessIdenticalRv   (   R   R}   R   t   oFoot   oBar(    (   Ru   s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_subCommandInTwoPlacesE  s    		(
   R   R   Rk   Rm   Rn   Ro   Rr   Rt   R|   R„   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyRe      s   										
	t   HelpStringTestc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   d j  ƒ  |  _ t ƒ  |  _ d S(   s;   
        Instantiate a well-behaved Options class.
        sA   --long Alpha -n Beta --shortless Gamma -f --myflag --myparam TofuN(   R   R   R   R   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR!   _  s    c         C   s8   y |  j  j ƒ  Wn  t k
 r3 } |  j | ƒ n Xd S(   s,   
        __str__ shouldn't go boom.
        N(   R   t   __str__t	   Exceptiont   fail(   R   RS   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_noGoBoomj  s    c         C   sz   g  t  |  j ƒ j ƒ  D]! } | j d ƒ d k r | ^ q } |  j t | ƒ d k ƒ |  j | d j d ƒ d k ƒ d S(   sK   
        Extra whitespace in flag and parameters docs is stripped.
        R   i    t   flagalliciousN(   RR   R   t
   splitlinest   findRh   t   len(   R   t   st   lines(    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt&   test_whitespaceStripFlagsAndParameterss  s    =(   R   R   R!   R‰   R   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR…   ^  s   			t   PortCoerceTestCasec           B   s    e  Z d  Z d „  Z d „  Z RS(   s3   
    Test the behavior of L{usage.portCoerce}.
    c         C   sO   |  j  d t j d ƒ ƒ |  j  d t j d ƒ ƒ |  j  d t j d ƒ ƒ d S(   s4   
        Test the answers with valid input.
        i    t   0iŠ  t   3210iÿÿ  t   65535N(   R;   R   t
   portCoerce(   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_validCoerce‚  s    c         C   s\   |  j  t t j d ƒ |  j  t t j d ƒ |  j  t t j d ƒ |  j  t t j d ƒ d S(   s"   
        Test error path.
        t    s   -21t   212189R:   N(   R?   RJ   R   R•   (   R   (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   test_errorCoerceŠ  s    (   R   R   R)   R–   R™   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyR‘   ~  s   	N(   R)   t   twisted.trialR    t   twisted.pythonR   Rx   R   t   TestCaseR   R*   R4   RB   RE   RM   RU   RX   R[   R_   Re   R…   R‘   (    (    (    s;   /usr/lib/python2.7/dist-packages/twisted/test/test_usage.pyt   <module>   s    *@%^ 