a
    ze*                     @   sF   d dl Z d dlZd dlmZmZ G dd dejZedkrBe  dS )    N)	swap_item	swap_attrc                   @   s\   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd ZdS )RebindBuiltinsTestsc                 G   s   d S N )selffuncargsr   r   '/usr/lib/python3.9/test/test_dynamic.pyconfigure_func   s    z"RebindBuiltinsTests.configure_funcc                 C   sd   dd }|  | | | d tt ddd  | | d W d    n1 sV0    Y  d S )Nc                   S   s   t g dS N)         lenr   r   r   r
   foo   s    z=RebindBuiltinsTests.test_globals_shadow_builtins.<locals>.foor   r   c                 S   s   dS N   r   xr   r   r
   <lambda>#       zBRebindBuiltinsTests.test_globals_shadow_builtins.<locals>.<lambda>r   r   assertEqualr   globalsr   r   r   r   r
   test_globals_shadow_builtins   s
    
z0RebindBuiltinsTests.test_globals_shadow_builtinsc                 C   sb   dd }|  | | | d ttddd  | | d W d    n1 sT0    Y  d S )Nc                   S   s   t g dS r   r   r   r   r   r
   r   (   s    z5RebindBuiltinsTests.test_modify_builtins.<locals>.foor   r   c                 S   s   dS r   r   r   r   r   r
   r   -   r   z:RebindBuiltinsTests.test_modify_builtins.<locals>.<lambda>r   )r   r   r   builtinsr   r   r   r
   test_modify_builtins&   s
    
z(RebindBuiltinsTests.test_modify_builtinsc                 C   sl   dd }|  | | }| t|d ttddd   | t|d W d    n1 s^0    Y  d S )Nc                  s   s    t d} t| V  t| V  d S Nr   ranger   r   r   r   r
   r   2   s    
zLRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.foor   r   c                 S   s   dS r   r   r   r   r   r
   r   :   r   zQRebindBuiltinsTests.test_modify_builtins_while_generator_active.<locals>.<lambda>r   )r   r   nextr   r   r   r   gr   r   r
   +test_modify_builtins_while_generator_active0   s    
z?RebindBuiltinsTests.test_modify_builtins_while_generator_activec                 C   sd   t tdtD dd }dd }| |dd  | ||dd	g W d    n1 sV0    Y  d S )
Nr   c                   S   s   dd t _d S )Nc                 S   s   dS )N   r   r   r   r   r
   r   B   r   zZRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.bar.<locals>.<lambda>)r   r   r   r   r   r
   barA   s    zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.barc                 S   s2   g }| ttd |   | ttd |S r   )appendr   r"   )modifierlr   r   r
   r   D   s
    zHRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.fooc                   S   s   d S r   r   r   r   r   r
   r   J   r   zMRebindBuiltinsTests.test_modify_builtins_from_leaf_function.<locals>.<lambda>r   r'   )r   r   r   r   r   )r   r(   r   r   r   r
   'test_modify_builtins_from_leaf_function=   s
    z;RebindBuiltinsTests.test_modify_builtins_from_leaf_functionc                 C   sZ   dd }|  | ddd i}||dd d}| td|d	 | tdd
|id	 d S )Nc                   S   s   t g dS r   r   r   r   r   r
   r   O   s    zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.foor   c                 S   s   dS r   r   r   r   r   r
   r   T   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_eval.<locals>.<lambda>c                 S   s   dS N   r   r   r   r   r
   r   V   r   r   __builtins__r   zfoo()r   r   )r   r   eval)r   r   builtins_dictglobals_dictr   r   r
   0test_cannot_change_globals_or_builtins_with_evalN   s    
zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_evalc                 C   sn   dd }|  | d|i}td| | |d d ddd	 i}||d
d	 d}td| | |d d d S )Nc                   S   s   t g dS r   r   r   r   r   r
   r   \   s    zQRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.foor   z	x = foo()r   r   r   c                 S   s   dS r   r   r   r   r   r
   r   e   r   zVRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_exec.<locals>.<lambda>c                 S   s   dS r-   r   r   r   r   r
   r   g   r   r/   )r   execr   )r   r   r3   r2   r   r   r
   0test_cannot_change_globals_or_builtins_with_exec[   s    


zDRebindBuiltinsTests.test_cannot_change_globals_or_builtins_with_execc                 C   sr   dd }|  | | }| t|d tt dddd i  | t|d W d    n1 sd0    Y  d S )Nc                  s   s    t d} t| V  t| V  d S r    r!   r   r   r   r
   r   m   s    
zORebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.foor   r0   r   c                 S   s   dS r   r   r   r   r   r
   r   u   r   zTRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_active.<locals>.<lambda>)r   r   r#   r   r   r$   r   r   r
   .test_cannot_replace_builtins_dict_while_activel   s    
zBRebindBuiltinsTests.test_cannot_replace_builtins_dict_while_activec                 C   sh   dd }|  | | | d tt dddd i | | d W d    n1 sZ0    Y  d S )Nc                   S   s   t g dS r   r   r   r   r   r
   r   y   s    zPRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.foor   r0   r   c                 S   s   dS r   r   r   r   r   r
   r   ~   r   zURebindBuiltinsTests.test_cannot_replace_builtins_dict_between_calls.<locals>.<lambda>r   r   r   r   r
   /test_cannot_replace_builtins_dict_between_callsx   s
    
zCRebindBuiltinsTests.test_cannot_replace_builtins_dict_between_callsc                 C   s2   ddd i}t d|}| | | | d d S )Nr   c                 S   s   dS r   r   r   r   r   r
   r      r   zKRebindBuiltinsTests.test_eval_gives_lambda_custom_globals.<locals>.<lambda>zlambda: len([])r   )r1   r   r   )r   r3   r   r   r   r
   %test_eval_gives_lambda_custom_globals   s    

z9RebindBuiltinsTests.test_eval_gives_lambda_custom_globalsN)__name__
__module____qualname__r   r   r   r&   r,   r4   r6   r7   r8   r9   r   r   r   r
   r   	   s   

	r   __main__)	r   ZunittestZtest.supportr   r   ZTestCaser   r:   mainr   r   r   r
   <module>   s    