
    [4%e.                         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mZ d dlZej        rd dlmZ  G d d	e          Z G d
 dej                  ZdS )    N)StringIO)mock)OptionParserError)basestring_type)subTest)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     9lib/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/   r1   )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>.callback6   s    DKKKr   r&   )final)r   r>   add_parse_callbackr)   assertFalse
assertTrue)r   r,   r?   s   `  r   test_parse_callbacksz OptionsTest.test_parse_callbacks2   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_helpI   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$   r0   type)r&   	--verbose
subcommand	--foo=barrT   rU   barrS   )r   r(   r   r)   r*   rC   rP   r0   rF   rG   r   rH   r   )r   base_optionssub_optionsrestrest2rL   s         r   test_subcommandzOptionsTest.test_subcommandU   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 Nr0      r%   rR      )r   r(   intr0   r*   r+   s     r   test_setattrzOptionsTest.test_setattrl   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 )Nr0   r^   r_   2)r   r(   ra   rH   r   r0   r+   s     r   test_setattr_type_checkz#OptionsTest.test_setattr_type_checkr   s     ..uac222u%% 	 	GK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA"Ac                     g }t                      }|                    ddt          |j                   d|_        |                     |dg           d S )Nr0   r^   )r%   rR   r?   r`   )r   r(   ra   appendr0   r*   )r   valuesr,   s      r   test_setattr_with_callbackz&OptionsTest.test_setattr_with_callbackz   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                     |                                  }|                     t          g d          t          t          |                               d S )Nrk   rl   help)rm   r*   setiterr+   s     r   	test_iterzOptionsTest.test_iter   sL    &&((///00#d7mm2D2DEEEEEr   c                 f    |                                  }|                     d|d                    d S )Nr^   rk   )rm   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(   ra   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)rk   r^   )rl   r`   rp   )rm   rp   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`   ro   )rm   rp   r*   as_dict)r   r,   r{   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        }|                     t          dd	|g          |                                           |	                    d          }|                     ddi|           |                     i |	                    d
                     d S )Nrk   r^   r$   rl   b_groupr`   )groupr%   r    nonexistent)
r   r(   rF   	_getframef_codeco_filenamer*   rq   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,	iY788'..:J:JKKK)))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 )Nr0   r^   r$   r&   z--foo=2r`               )	r   r(   r)   r*   r0   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   rQ   
basestringra   floatdatetime	timedeltaemailzlist-of-intTrR   multiplezlist-of-str)	r   r(   r   r   ra   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   rk   rl   c)r*   r   r   ra   r   r   r   r   r   rC   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   r9   r3   r4   r5   r6   r8   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 )Nr0   Tr   r&   z--foo=a,b,cr   )r   r(   r   r)   r*   r0   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 )Nr0   Tr   r&   z--foo=1,3,5:7)r^   r   r   r      )r   r(   ra   r)   r*   r0   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 )Nr0   zOption.*foo.*already defined)r   r(   rH   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 ]\  }}t          | ||          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   )rk   rl   z Option.*foo.bar.*already defined)r   r   r(   rH   r   r   r   r   )r   testsrk   rl   r,   r   s         r   test_error_redefine_underscorez*OptionsTest.test_error_redefine_underscore  sf   
 
 
  	X 	XDAqa((( 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   >B=A>2B=>BB=B+B==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&   rk   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   r2   rk   )
r   r(   r9   r3   r4   r5   r6   r8   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)rp   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*   ry   rz   r   keysr   r   
print_helprK   rJ   )r   r,   all_optionsbufs       r   "test_dash_underscore_introspectionz.OptionsTest.test_dash_underscore_introspection7  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;   rD   rN   r[   rb   re   ri   rm   rs   ru   rw   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r       s       , , ,7 7 7% % %.
' 
' 
'% % %.) ) )  & & &  F F F
* * *, , ,+ + +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   r3   rF   unittestr   tornado.optionsr   r   tornado.utilr   tornado.test.utilr   typingTYPE_CHECKINGr	   r   r   TestCaser    r   r   r   <module>r      s          				 



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