B
    18\.                 @   s   d 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m	Z	 ddl
mZmZmZmZmZ ddlmZ ddlmZ ddlmZ G d	d
 d
ejejZdd Zedkree  dS )zTests for distutils.dir_util.    N)patch)dir_utilerrors)mkpathremove_treecreate_tree	copy_treeensure_relative)log)support)run_unittestc                   s|   e Zd Zdd Z fddZ fddZdd Zee	j
d	d
dd Zdd Zdd Zdd Zdd Zdd Z  ZS )DirUtilTestCasec             G   s.   t |dkr| j||  n| j| d S )Nr   )len_logsappend)selfmsgargs r   a/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_dir_util.py_log   s    zDirUtilTestCase._logc                sb   t t|   g | _|  }tj|d| _tj| jd| _	tj|d| _
tj| _| jt_d S )NdeephereZdeep2)superr   setUpr   mkdtempospathjoinroot_targettargettarget2r
   infoold_logr   )r   tmp_dir)	__class__r   r   r      s    zDirUtilTestCase.setUpc                s   | j t_tt|   d S )N)r#   r
   r"   r   r   tearDown)r   )r%   r   r   r&   #   s    zDirUtilTestCase.tearDownc             C   s   t | jdd g }| | j| t| jdd t | jdd d| j d| j g}| | j| g | _t| jdd d| j g}| | j| d S )Nr   )verbose   zcreating %sz'removing '%s' (and everything under it))r   r    assertEqualr   r   r   )r   wantedr   r   r   !test_mkpath_remove_tree_verbosity'   s    z1DirUtilTestCase.test_mkpath_remove_tree_verbositywinz5This test is only appropriate for POSIX-like systems.c             C   st   t d}t | t| jd | tt | jjd| @  t| jd | tt | jjd| @  d S )N   i  im  )	r   umaskr   r    r)   statS_IMODEst_moder!   )r   r.   r   r   r   test_mkpath_with_custom_mode8   s    

z,DirUtilTestCase.test_mkpath_with_custom_modec             C   st   t | jdddgdd | | jg  t| jdd d| j g}t | jdddgdd | | j| t| jdd d S )Nonetwothreer   )r'   zcreating %sr(   )r   r   r)   r   r   )r   r*   r   r   r   test_create_tree_verbosityE   s    z*DirUtilTestCase.test_create_tree_verbosityc          	   C   s   t | jdd t| j| jdd | | jg  t| jdd t | jdd tj	
| jd}t|d}|d W d Q R X d|| jf g}t| j| jdd | | j| t| jdd t| jdd d S )Nr   )r'   zok.txtwzsome contentzcopying %s -> %sr(   )r   r    r   r!   r)   r   r   r   r   r   r   openwrite)r   a_filefr*   r   r   r   test_copy_tree_verbosityQ   s    z(DirUtilTestCase.test_copy_tree_verbosityc          
   C   s   t | jdd tj| jd}tj| jd}x0||fD ]$}t|d}|d W d Q R X q8W t| j| j | 	t
| jdg t| jdd t| jdd d S )Nr   )r'   zok.txtz
.nfs123abcr7   zsome content)r   r    r   r   r   r8   r9   r   r!   r)   listdirr   r   )r   r:   Znfs_filer;   Zfhr   r   r   #test_copy_tree_skips_nfs_temp_filesf   s    z3DirUtilTestCase.test_copy_tree_skips_nfs_temp_filesc             C   sP   t jdkr,| tdd | tdd n | tdd | tdd d S )N/z	/home/foozhome/fooz	some/pathzc:\home\fooz
c:home\foozhome\foo)r   sepr)   r	   )r   r   r   r   test_ensure_relativeu   s
    
z$DirUtilTestCase.test_ensure_relativec          
   C   sL   t dt d4 | tj | jd }t|d W dQ R X W dQ R X dS )zK
        An exception in listdir should raise a DistutilsFileError
        z
os.listdir)side_effectN)r   OSErrorassertRaisesr   DistutilsFileErrortempdirsr   r   )r   srcr   r   r   #test_copy_tree_exception_in_listdir}   s    
z3DirUtilTestCase.test_copy_tree_exception_in_listdir)__name__
__module____qualname__r   r   r&   r+   unittestskipIfsysplatform
startswithr2   r6   r<   r>   rA   rI   __classcell__r   r   )r%   r   r      s   
r   c               C   s
   t tS )N)rM   	makeSuiter   r   r   r   r   
test_suite   s    rT   __main__)__doc__rM   r   r/   rO   Zunittest.mockr   	distutilsr   r   distutils.dir_utilr   r   r   r   r	   r
   distutils.testsr   Ztest.supportr   TempdirManagerTestCaser   rT   rJ   r   r   r   r   <module>   s   v