ó
¨œž[c           @` s0  d  d l  m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l m Z m	 Z	 d  d l
 m Z m Z d  d l m Z m Z e r› d  d l m Z n d  d l m Z y d  d l m Z Wn; e k
 rü y d  d l Z Wqý e k
 rø d Z qý Xn Xd e f d	 „  ƒ  YZ d
 e j f d „  ƒ  YZ d S(   i    (   t   absolute_importt   divisiont   print_functionN(   t   OptionParsert   Error(   t   basestring_typet   PY3(   t   unittestt   subTest(   t   StringIO(   t   mockt   Emailc           B` s    e  Z d  „  Z e d „  ƒ Z RS(   c         C` s4   t  | t ƒ r' d | k r' | |  _ n	 t ƒ  ‚ d  S(   Nt   @(   t
   isinstancet   strt   _valuet
   ValueError(   t   selft   value(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   __init__   s    c         C` s   |  j  S(   N(   R   (   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyR   "   s    (   t   __name__t
   __module__R   t   propertyR   (    (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyR      s   	t   OptionsTestc           B` s  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 d „  Z d „  Z e j e d k d ƒ d „  ƒ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z  RS(   c         C` sF   t  ƒ  } | j d d d ƒ| j d d g ƒ |  j | j d ƒ d  S(   Nt   portt   defaultiP   s   main.pys
   --port=443i»  (   R   t   definet   parse_command_linet   assertEqualR   (   R   t   options(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_parse_command_line(   s    	c         C` s³   t  ƒ  } | j d d d ƒ| j d d d ƒ| j d ƒ t j j t j j t j j t ƒ ƒ d ƒ } | j | ƒ |  j	 | j
 d ƒ |  j	 | j d	 ƒ |  j	 | j | ƒ d  S(
   NR   R   iP   t   usernamet   foot   my_paths   options_test.cfgi»  s   æŽåº·(   R   R   t   ost   patht   joint   dirnamet   abspatht   __file__t   parse_config_fileR   R   R   R!   (   R   R   t   config_path(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_parse_config_file.   s    	$	c         ` s¡   t  ƒ  } t ˆ  _ ‡  f d †  } | j | ƒ | j d g d t ƒˆ  j ˆ  j ƒ | j d g ƒ ˆ  j ˆ  j ƒ t ˆ  _ | j d g ƒ ˆ  j ˆ  j ƒ d  S(   Nc           ` s   t  ˆ  _ d  S(   N(   t   Truet   called(    (   R   (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   callback>   s    s   main.pyt   final(   R   t   FalseR,   t   add_parse_callbackR   t   assertFalset
   assertTrue(   R   R   R-   (    (   R   s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_parse_callbacks:   s    			c         C` s{   t  ƒ  } zQ t j } t ƒ  t _ |  j t ƒ  | j d d g ƒ Wd  QXt j j ƒ  } Wd  | t _ X|  j d | ƒ d  S(   Ns   main.pys   --helps   Usage:(	   R   t   syst   stderrR	   t   assertRaisest
   SystemExitR   t   getvaluet   assertIn(   R   R   t   orig_stderrt   usage(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt	   test_helpP   s    		
c         C` sþ   t  ƒ  } | j d d t ƒt  ƒ  } | j d d t ƒ| j d d d d g ƒ } |  j | d d g ƒ |  j | j ƒ | j | ƒ } |  j | g  ƒ |  j | j d	 ƒ zB t	 j
 } t ƒ  t	 _
 |  j t ƒ  | j d d g ƒ Wd  QXWd  | t	 _
 Xd  S(
   Nt   verboseR   R    t   types   main.pys	   --verboset
   subcommands	   --foo=bart   bar(   R   R   R/   R   R   R   R2   R=   R    R4   R5   R	   R6   R   (   R   t   base_optionst   sub_optionst   restt   rest2R:   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_subcommand\   s"    			c         C` sB   t  ƒ  } | j d d d d t ƒd | _ |  j | j d ƒ d  S(   NR    R   i   R>   i   (   R   R   t   intR    R   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_setattrr   s    		c         C` sE   t  ƒ  } | j d d d d t ƒ|  j t ƒ  d | _ Wd  QXd  S(   NR    R   i   R>   t   2(   R   R   RF   R6   R   R    (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_setattr_type_checkx   s    	c         C` sQ   g  } t  ƒ  } | j d d d d t d | j ƒd | _ |  j | d g ƒ d  S(   NR    R   i   R>   R-   i   (   R   R   RF   t   appendR    R   (   R   t   valuesR   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_setattr_with_callback€   s
    	"	c         C` s3   t  ƒ  } | j d d d ƒ| j d d d ƒ| S(   Nt   aR   i   t   bi   (   R   R   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   _sample_options‡   s    	c         C` s;   |  j  ƒ  } |  j t d d d g ƒ t t | ƒ ƒ ƒ d  S(   NRM   RN   t   help(   RO   R   t   sett   iter(   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt	   test_iter   s    c         C` s$   |  j  ƒ  } |  j d | d ƒ d  S(   Ni   RM   (   RO   R   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_getitem’   s    c         C` sD   t  ƒ  } | j d d d d t ƒd | d <|  j | d d ƒ d  S(   NR    R   i   R>   i   (   R   R   RF   R   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_setitem–   s    	
c         C` sJ   |  j  ƒ  } d d d | j f g } t | j ƒ  ƒ } |  j | | ƒ d  S(   NRM   i   RN   i   RP   (   RM   i   (   RN   i   (   RO   RP   t   sortedt   itemsR   (   R   R   t   expectedt   actual(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt
   test_itemsœ   s    c         C` sD   |  j  ƒ  } i d d 6d d 6| j d 6} |  j | | j ƒ  ƒ d  S(   Ni   RM   i   RN   RP   (   RO   RP   R   t   as_dict(   R   R   RX   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_as_dict£   s    c         C` s¸   t  ƒ  } | j d d d ƒ| j d d d d d ƒt j d ƒ } | j j } |  j t d d	 | g ƒ | j ƒ  ƒ | j	 d ƒ } |  j i d d 6| ƒ |  j i  | j	 d
 ƒ ƒ d  S(   NRM   R   i   RN   t   groupt   b_groupi   i    t    t   nonexistent(
   R   R   R4   t	   _getframet   f_codet   co_filenameR   RQ   t   groupst
   group_dict(   R   R   t   framet	   this_filet   b_group_dict(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_group_dict¨   s    	%s   mock package not presentc         C` sC  t  ƒ  } | j d d d ƒ| j d d g ƒ |  j | j d ƒ t j j | j ƒ  d d ƒ  |  j | j d ƒ Wd  QX|  j | j d ƒ t j j | j ƒ  d d ƒ  |  j | j d ƒ d	 | _ |  j | j d	 ƒ t j j | j ƒ  d d
 ƒ  |  j | j d
 ƒ Wd  QX|  j | j d	 ƒ Wd  QX|  j | j d ƒ d  S(   NR    R   i   s   main.pys   --foo=2i   i   i   i   i   (	   R   R   R   R   R    R
   t   patcht   objectt   mockable(   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_mock_patch¶   s    		c         C` s±   t  ƒ  } | j d d t ƒ| j d d t ƒ| j d d t ƒ| j d d t ƒ| j d d t j ƒ| j d d t j ƒ| j d d t ƒ| j d	 d t d
 t	 ƒ| S(   NR   R>   t
   basestringRF   t   floatt   datetimet	   timedeltat   emails   list-of-intt   multiple(
   R   R   R   R   RF   Ro   Rp   Rq   R   R+   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   _define_optionsÌ   s    	c         C` sâ   |  j  | j d ƒ |  j  | j d ƒ |  j  | j d ƒ |  j  | j d ƒ |  j  | j t j d d d d d	 ƒ ƒ |  j  | j t j d
 d ƒ ƒ |  j  | j j d ƒ |  j	 t
 | j t ƒ ƒ |  j  | j d d d g ƒ d  S(   Nt   asdft   qweri*   g      ø?iÝ  i   i   i   i   t   secondsi-   s   tornado@web.comi   i   i   (   R   R   Rn   RF   Ro   Rp   Rq   Rr   R   R2   R   R   t   list_of_int(   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   _check_options_valuesØ   s    c      
   C` sE   |  j  ƒ  } | j d d d d d d d d d	 g	 ƒ |  j | ƒ d  S(
   Ns   main.pys
   --str=asdfs   --basestring=qwers   --int=42s   --float=1.5s   --datetime=2013-04-28 05:16s   --timedelta=45ss   --email=tornado@web.coms   --list-of-int=1,2,3(   Rt   R   Ry   (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt
   test_typesä   s    	
c         C` sV   xO d D]G } |  j  ƒ  } | j t j j t j j t ƒ | ƒ ƒ |  j | ƒ q Wd  S(   Ns   options_test_types.cfgs   options_test_types_str.cfg(   s   options_test_types.cfgs   options_test_types_str.cfg(   Rt   R(   R"   R#   R$   R%   R'   Ry   (   R   t   config_file_nameR   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_types_with_conf_fileñ   s    

c         C` sU   t  ƒ  } | j d d t d t ƒ| j d d g ƒ |  j | j d d d g ƒ d  S(	   NR    R>   Rs   s   main.pys   --foo=a,b,cRM   RN   t   c(   R   R   R   R+   R   R   R    (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_multiple_stringù   s    	c         C` s[   t  ƒ  } | j d d t d t ƒ| j d d g ƒ |  j | j d d d d	 d
 g ƒ d  S(   NR    R>   Rs   s   main.pys   --foo=1,3,5:7i   i   i   i   i   (   R   R   RF   R+   R   R   R    (   R   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_multiple_intÿ   s    	c         C` sX   t  ƒ  } | j d ƒ |  j t ƒ  } | j d ƒ Wd  QX|  j t | j ƒ d ƒ d  S(   NR    s   Option.*foo.*already defined(   R   R   R6   R   t   assertRegexpMatchesR   t	   exception(   R   R   t   cm(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_error_redefine  s    	c         C` s    d d d d	 g } x‡ | D] \ } } t  |  d | d | ƒY t ƒ  } | j | ƒ |  j t ƒ  } | j | ƒ Wd  QX|  j t | j ƒ d ƒ Wd  QXq Wd  S(
   Ns   foo-bart   foo_barRM   RN   s    Option.*foo.bar.*already defined(   s   foo-bars   foo-bar(   R„   R„   (   s   foo-barR„   (   R„   s   foo-bar(   R   R   R   R6   R   R€   R   R   (   R   t   testsRM   RN   R   R‚   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_error_redefine_underscore  s    		c         C` s–   x d d g D] } xx d d g D]j } t  ƒ  } | j | ƒ | j d | g ƒ |  j | j d ƒ |  j | d d ƒ |  j | d d ƒ q  Wq Wd  S(   Ns   foo-barR„   s   --foo-bar=as   --foo_bar=as   main.pyRM   (   R   R   R   R   R„   (   R   t   defined_namet   flagR   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_dash_underscore_cli  s    	c         C` sl   xe d d g D]W } t  ƒ  } | j | ƒ | j t j j t j j t ƒ d ƒ ƒ |  j | j	 d ƒ q Wd  S(   Ns   foo-barR„   s   options_test.cfgRM   (
   R   R   R(   R"   R#   R$   R%   R'   R   R„   (   R   R‡   R   (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   test_dash_underscore_file,  s    	
c         C` s  t  ƒ  } | j d d d ƒ| j d d d ƒd d d g } |  j t | ƒ | ƒ |  j t d „  | j ƒ  Dƒ ƒ | ƒ |  j t | j ƒ  j ƒ  ƒ | ƒ |  j t | j d ƒ ƒ d d g ƒ t ƒ  } | j	 | ƒ |  j
 d | j ƒ  ƒ |  j
 d | j ƒ  ƒ d  S(	   Ns	   with-dashR]   t   gt   with_underscoreRP   c         s` s   |  ] \ } } | Vq d  S(   N(    (   t   .0t   kt   v(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pys	   <genexpr>=  s    s   --with-dashs   --with-underscore(   R   R   R   RV   RW   R[   t   keysRe   R	   t
   print_helpR9   R8   (   R   R   t   all_optionst   buf(    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt"   test_dash_underscore_introspection6  s    	&"	N(!   R   R   R   R*   R3   R<   RE   RG   RI   RL   RO   RS   RT   RU   RZ   R\   Ri   R   t   skipIfR
   t   NoneRm   Rt   Ry   Rz   R|   R~   R   Rƒ   R†   R‰   RŠ   R”   (    (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyR   '   s6   															!										
(   t
   __future__R    R   R   Rp   R"   R4   t   tornado.optionsR   R   t   tornado.utilR   R   t   tornado.test.utilR   R   t   ioR	   t	   cStringIOR
   t   ImportErrorR–   Rk   R   t   TestCaseR   (    (    (    s8   lib/python2.7/site-packages/tornado/test/options_test.pyt   <module>   s$   