B
    18\
                 @   sv   d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 G dd dejZedkrre  dS )    N)cache_from_source)create_empty_filec               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )
TestImportc             O   sR   d| _ x&| j tjkr,|  j ttj7  _ qW | j d | _tj	j
| f|| d S )NZPACKAGE_z.foo)package_namesysmodulesrandomchoosestringascii_lettersmodule_nameunittestTestCase__init__)selfargskw r   W/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/test/test_pkgimport.pyr      s
    zTestImport.__init__c             C   s,   x&| j | jfD ]}|tjkrtj|= qW d S )N)r   r   r   r   )r   r   r   r   r   remove_modules   s    
zTestImport.remove_modulesc             C   sb   t  | _tj| j tj| j| j| _	t
| j	 ttj| j	d tj| j	d| _d S )Nz__init__.pyzfoo.py)tempfilemkdtemptest_dirr   pathappendosjoinr   Zpackage_dirmkdirr   module_path)r   r   r   r   setUp   s    


zTestImport.setUpc             C   s<   t | j | tj| jd tj| j |   d S )Nr   )	shutilrmtreer   assertNotEqualr   r   countremover   )r   r   r   r   tearDown#   s    zTestImport.tearDownc          	   C   sF   t | j}tj|r t| t| jd}|| W d Q R X d S )Nw)r   r   r   r   existsr$   openwrite)r   contentsZcompiled_pathfr   r   r   rewrite_file)   s
    

zTestImport.rewrite_filec             C   s   |  d yt| j W n tk
r,   Y n
X td| | jtj | t	tj| j
 d d}x |ttkr|ttj7 }qdW |  | yt| j W n tk
r   Y n
X td|  d|  t| jj}| t||d d S )NforzFailed to induce SyntaxErrorfooazFailed to induce NameError.z%s = 1   )r,   
__import__r   SyntaxErrorRuntimeErrorassertNotInr   r   assertFalsehasattrr   dir__builtins__r   r	   r
   r   	NameErrorr.   assertEqualgetattr)r   varmoduler   r   r   test_package_import__semantics0   s(    
  
  z)TestImport.test_package_import__semanticsN)	__name__
__module____qualname__r   r   r   r%   r,   r>   r   r   r   r   r      s   	r   __main__)r   r   r    r
   r   r   r   importlib.utilr   Ztest.supportr   r   r   r?   mainr   r   r   r   <module>   s   C