
    Mhi.                         d dl Z d dlmZ d dlZd dlZd dlmZ d dlZd dlmZm	Z	 d dl
mZ d dlZej        rd dlmZ  G d d          Z G d	 d
ej                  ZdS )    N)StringIO)mock)OptionParserError)basestring_type)Listc                   *    e Zd Zd Zed             ZdS )Emailc                 b    t          |t                    rd|v r	|| _        d S t                      )N@)
isinstancestr_value
ValueError)selfvalues     Y/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/tornado/test/options_test.py__init__zEmail.__init__   s1    eS!! 	cUllDKKK,,    c                     | j         S N)r   r   s    r   r   zEmail.value   s
    {r   N)__name__
__module____qualname__r   propertyr    r   r   r
   r
      s>             X  r   r
   c                       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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S )OptionsTestc                     t                      }|                    dd           |                    ddg           |                     |j        d           d S )NportP   defaultmain.pyz
--port=443  )r   defineparse_command_lineassertEqualr!   r   optionss     r   test_parse_command_linez#OptionsTest.test_parse_command_line   sX    ..vr***""I|#<===s+++++r   c                 2   t                      }|                    dd           |                    dd           |                    d           t          j                            t          j                            t          j                            t                              d          }|                    |           | 	                    |j
        d           | 	                    |j        d	           | 	                    |j        |           d S )
Nr!   r"   r#   usernamefoomy_pathoptions_test.cfgr&   u   李康)r   r'   ospathjoindirnameabspath__file__parse_config_filer)   r!   r.   r0   )r   r+   config_paths      r   test_parse_config_filez"OptionsTest.test_parse_config_file$   s    ..vr***z5111y!!!gllGOOBGOOH55668J
 
 	!!+...s+++)8444+66666r   c                     t                      }d _         fd}|                    |           |                    dgd                                 j                   |                    dg                                 j                   d _        |                    dg                                 j                   d S )NFc                      d _         d S )NT)calledr   s   r   callbackz2OptionsTest.test_parse_callbacks.<locals>.callback5   s    DKKKr   r%   )final)r   r=   add_parse_callbackr(   assertFalse
assertTrue)r   r+   r>   s   `  r   test_parse_callbacksz OptionsTest.test_parse_callbacks1   s    ..	 	 	 	 	 	""8,,, 	""I;e"<<<%%% 	""I;///$$$ ""I;///$$$$$r   c                    t                      }	 t          j        }t                      t          _        |                     t
                    5  |                    ddg           d d d            n# 1 swxY w Y   t          j                                        }|t          _        n# |t          _        w xY w|                     d|           d S )Nr%   z--helpzUsage:)	r   sysstderrr   assertRaises
SystemExitr(   getvalueassertIn)r   r+   orig_stderrusages       r   	test_helpzOptionsTest.test_helpH   s    ..	%*K!CJ"":.. B B**Ix+@AAAB B B B B B B B B B B B B B BJ''))E$CJJCJ$$$$h&&&&&s/   >B( A2&B( 2A66B( 9A6:!B( (B6c                    t                      }|                    dd           t                      }|                    dt                     |                    g d          }|                     |ddg           |                     |j                   |                    |          }|                     |g            |                     |j        d	           	 t          j	        }t                      t          _	        |                     t                    5  |                    dd
g           d d d            n# 1 swxY w Y   |t          _	        d S # |t          _	        w xY w)NverboseFr#   r/   type)r%   	--verbose
subcommand	--foo=barrS   rT   barrR   )r   r'   r   r(   r)   rB   rO   r/   rE   rF   r   rG   r   )r   base_optionssub_optionsrestrest2rK   s         r   test_subcommandzOptionsTest.test_subcommandT   s   #~~Iu555"nn5s+++..???
 
 	k:;;;,---..t44###%000	%*K!CJ""5)) L L..k/JKKKL L L L L L L L L L L L L L L %CJJJCJ$$$$s0    >E E6E EE 	E
E E)c                     t                      }|                    ddt                     d|_        |                     |j        d           d S Nr/      r$   rQ      )r   r'   intr/   r)   r*   s     r   test_setattrzOptionsTest.test_setattrk   sH    ..uac222a(((((r   c                     t                      }|                    ddt                     |                     t                    5  d|_        d d d            d S # 1 swxY w Y   d S )Nr/   r]   r^   2)r   r'   r`   rG   r   r/   r*   s     r   test_setattr_type_checkz#OptionsTest.test_setattr_type_checkq   s     ..uac222u%% 	 	GK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"Ac                     g }t                      }|                    ddt          |j                   d|_        |                     |dg           d S )Nr/   r]   )r$   rQ   r>   r_   )r   r'   r`   appendr/   r)   )r   valuesr+   s      r   test_setattr_with_callbackz&OptionsTest.test_setattr_with_callbacky   sQ    ..uacFMJJJ!%%%%%r   c                 ~    t                      }|                    dd           |                    dd           |S )Nar]   r#   br_   )r   r'   r*   s     r   _sample_optionszOptionsTest._sample_options   s<    ..sA&&&sA&&&r   c                     |                                  }|                     h dt          t          |                               d S )N>   rj   rk   help)rl   r)   setiterr*   s     r   	test_iterzOptionsTest.test_iter   sD    &&((+++Sg-?-?@@@@@r   c                 f    |                                  }|                     d|d                    d S )Nr]   rj   )rl   r)   r*   s     r   test_getitemzOptionsTest.test_getitem   s3    &&((GCL)))))r   c                     t                      }|                    ddt                     d|d<   |                     |d         d           d S r\   )r   r'   r`   r)   r*   s     r   test_setitemzOptionsTest.test_setitem   sL    ..uac222+++++r   c                     |                                  }ddd|j        fg}t          |                                          }|                     ||           d S )N)rj   r]   )rk   r_   rn   )rl   rn   sorteditemsr)   )r   r+   expectedactuals       r   
test_itemszOptionsTest.test_items   sW    &&((h(>?((6*****r   c                     |                                  }dd|j        d}|                     ||                                           d S )Nr]   r_   )rj   rk   rn   )rl   rn   r)   as_dict)r   r+   ry   s      r   test_as_dictzOptionsTest.test_as_dict   sJ    &&((GL997??#4#455555r   c                    t                      }|                    dd           |                    ddd           t          j        d          }|j        j        }|                     dd	|h|                                           |                    d          }|                     ddi|           |                     i |                    d
                     d S )Nrj   r]   r#   rk   b_groupr_   )groupr$   r    nonexistent)	r   r'   rE   	_getframef_codeco_filenamer)   groups
group_dict)r   r+   frame	this_fileb_group_dicts        r   test_group_dictzOptionsTest.test_group_dict   s    ..sA&&&s)Q777a  L,	)R3W^^5E5EFFF)))44#q<000W//>>?????r   c                    t                      }|                    dd           |                    ddg           |                     |j        d           t
          j                            |                                dd          5  |                     |j        d           d d d            n# 1 swxY w Y   |                     |j        d           t
          j                            |                                dd          5  |                     |j        d           d	|_        |                     |j        d	           t
          j                            |                                dd
          5  |                     |j        d
           d d d            n# 1 swxY w Y   |                     |j        d	           d d d            n# 1 swxY w Y   |                     |j        d           d S )Nr/   r]   r#   r%   z--foo=2r_               )	r   r'   r(   r)   r/   r   patchobjectmockabler*   s     r   test_mock_patchzOptionsTest.test_mock_patch   s|   ..ua(((""Iy#9:::a(((Zw//115!<< 	- 	-W[!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-a((( Zw//115!<< 	- 	-W[!,,,GKW[!,,,""7#3#3#5#5ua@@ 1 1  a0001 1 1 1 1 1 1 1 1 1 1 1 1 1 1W[!,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	a(((((sI   B33B7:B7A1G=F%G%F)	)G,F)	-GGGc                 2   t                      }|                    dt                     |                    dt                     |                    dt                     |                    dt
                     |                    dt          j                   |                    dt          j                   |                    dt                     |                    d	t          d
           |                    dt          d
           |S )Nr   rP   
basestringr`   floatdatetime	timedeltaemailzlist-of-intTrQ   multiplezlist-of-str)	r   r'   r   r   r`   r   r   r   r
   r*   s     r   _define_optionszOptionsTest._define_options   s    ..u3'''|/:::u3'''wU+++z(9:::{);<<<wU+++}3>>>}3>>>r   c           
         |                      |j        d           |                      |j        d           |                      |j        d           |                      |j        d           |                      |j        t          j        ddddd	                     |                      |j        t          j        d
                     |                      |j        j        d           | 	                    t          |j        t                               |                      |j        g d           |                      |j        g d           d S )Nasdfqwer*   g      ?i  r      r      -   )secondsztornado@web.com)r]   r_   r   rj   rk   c)r)   r   r   r`   r   r   r   r   r   rB   r   r
   list_of_intlist_of_strr*   s     r   _check_options_valuesz!OptionsTest._check_options_values   s0   f---+V444b))),,,)8+<T1b!R+P+PQQQ*H,>r,J,J,JKKK,.?@@@
7=%88999,iii888,ooo>>>>>r   c                     |                                  }|                    g d           |                     |           d S )N)
r%   z
--str=asdfz--basestring=qwerz--int=42z--float=1.5z--datetime=2013-04-28 05:16z--timedelta=45sz--email=tornado@web.comz--list-of-int=1,2,3z--list-of-str=a,b,c)r   r(   r   r*   s     r   
test_typeszOptionsTest.test_types   sV    &&((""  	
 	
 	
 	""7+++++r   c                    dD ]}|                                  }|                    t          j                            t          j                            t                    |                     |                     |           d S )N)zoptions_test_types.cfgzoptions_test_types_str.cfg)r   r8   r2   r3   r4   r5   r7   r   )r   config_file_namer+   s      r   test_types_with_conf_filez%OptionsTest.test_types_with_conf_file   s    !
 	0 	0 **,,G%%RW__X668HII   &&w////	0 	0r   c                     t                      }|                    dt          d           |                    ddg           |                     |j        g d           d S )Nr/   Tr   r%   z--foo=a,b,cr   )r   r'   r   r(   r)   r/   r*   s     r   test_multiple_stringz OptionsTest.test_multiple_string   s^    ..u3666""I}#=>>>ooo66666r   c                     t                      }|                    dt          d           |                    ddg           |                     |j        g d           d S )Nr/   Tr   r%   z--foo=1,3,5:7)r]   r   r   r      )r   r'   r`   r(   r)   r/   r*   s     r   test_multiple_intzOptionsTest.test_multiple_int   s^    ..u3666""I#?@@@ooo66666r   c                 *   t                      }|                    d           |                     t                    5 }|                    d           d d d            n# 1 swxY w Y   |                     t          |j                  d           d S )Nr/   zOption.*foo.*already defined)r   r'   rG   r   assertRegexr   	exception)r   r+   cms      r   test_error_redefinezOptionsTest.test_error_redefine  s    ..uu%% 	"NN5!!!	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	" 	"R\**,JKKKKKs   A  A$'A$c                    g d}|D ]\  }}|                      | ||          5  t                      }|                    |           |                     t                    5 }|                    |           d d d            n# 1 swxY w Y   |                     t          |j                  d           d d d            n# 1 swxY w Y   d S )N))foo-barr   )foo_barr   r   r   )r   r   )rj   rk   z Option.*foo.bar.*already defined)subTestr   r'   rG   r   r   r   r   )r   testsrj   rk   r+   r   s         r   test_error_redefine_underscorez*OptionsTest.test_error_redefine_underscore  si   
 
 
  	X 	XDAqda1-- X X&..q!!!&&u-- &NN1%%%& & & & & & & & & & & & & & &  R\!2!24VWWWX X X X X X X X X X X X X X X	X 	Xs5   >C"B8CBCB+CC	
C	c                 4   dD ]}dD ]}t                      }|                    |           |                    d|g           |                     |j        d           |                     |d         d           |                     |d         d           d S )Nr   )z--foo-bar=az--foo_bar=ar%   rj   r   r   )r   r'   r(   r)   r   )r   defined_nameflagr+   s       r   test_dash_underscore_cliz$OptionsTest.test_dash_underscore_cli  s    2 		: 		:L6 : :&..|,,,**It+<===  #666  !3S999  !3S9999:		: 		:r   c                 6   dD ]}t                      }|                    |           |                    t          j                            t          j                            t                    d                     |                     |j	        d           d S )Nr   r1   rj   )
r   r'   r8   r2   r3   r4   r5   r7   r)   r   )r   r   r+   s      r   test_dash_underscore_filez%OptionsTest.test_dash_underscore_file+  s     3 	3 	3L"nnGNN<(((%%RW__X668JKK   W_c2222	3 	3r   c                 .   t                      }|                    dd           |                    dd           g d}|                     t          |          |           |                     t          d |                                D                       |           |                     t          |                                                                          |           |                     t          |                    d                    ddg           t                      }|	                    |           | 
                    d|                                           | 
                    d|                                           d S )	N	with-dashg)r   with_underscore)rn   r   r   c              3       K   | ]	\  }}|V  
d S r   r   ).0kvs      r   	<genexpr>zAOptionsTest.test_dash_underscore_introspection.<locals>.<genexpr>=  s&      @@fq!@@@@@@r   z--with-dashz--with-underscore)r   r'   r)   rw   rx   r}   keysr   r   
print_helprJ   rI   )r   r+   all_optionsbufs       r   "test_dash_underscore_introspectionz.OptionsTest.test_dash_underscore_introspection6  s_   ..{#...(444>>>+666@@@@@@@+NNN 1 1 6 6 8 899;GGG7%%c**++k;L-M	
 	
 	

 jj3mS\\^^444)3<<>>:::::r   N)r   r   r   r,   r:   rC   rM   rZ   ra   rd   rh   rl   rq   rs   ru   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      s       , , ,7 7 7% % %.
' 
' 
'% % %.) ) )  & & &  A A A
* * *, , ,+ + +6 6 6
@ @ @) ) )*  
? 
? 
?, , ,$	0 	0 	07 7 77 7 7L L LX X X": : :	3 	3 	3; ; ; ; ;r   r   )r   ior   r2   rE   unittestr   tornado.optionsr   r   tornado.utilr   typingTYPE_CHECKINGr   r
   TestCaser   r   r   r   <module>r      s          				 



        / / / / / / / / ( ( ( ( ( ( 	 	 	 	 	 	 	 	 	k; k; k; k; k;(# k; k; k; k; k;r   