B
    18\=                 @   s   d 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
 ddlmZ ddlmZ ddlmZ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.file_util.    N)patch)	move_file	copy_file)log)support)DistutilsFileError)run_unittestunlinkc                   sX   e Zd Zdd Z fddZ fddZdd Zd	d
 Zdd Zdd Z	dd Z
  ZS )FileUtilTestCasec             G   s.   t |dkr| j||  n| j| d S )Nr   )len_logsappend)selfmsgargs r   b/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/distutils/tests/test_file_util.py_log   s    zFileUtilTestCase._logc                s`   t t|   g | _tj| _| jt_|  }t	j
|d| _t	j
|d| _t	j
|d| _d S )Nf1f2d1)superr
   setUpr   r   infoold_logr   mkdtempospathjoinsourcetarget
target_dir)r   tmp_dir)	__class__r   r   r      s    zFileUtilTestCase.setUpc                s   | j t_tt|   d S )N)r   r   r   r   r
   tearDown)r   )r#   r   r   r$      s    zFileUtilTestCase.tearDownc             C   s   t | jd}z|d W d |  X t| j| jdd g }| | j| t| j| jdd t| j| jdd d| j| jf g}| | j| t| j| jdd g | _t	| j
 t| j| j
dd d| j| j
f g}| | j| d S )Nwzsome contentr   )verbose   zmoving %s -> %s)openr   writecloser   r    assertEqualr   r   mkdirr!   )r   fwantedr   r   r   test_move_file_verbosity#   s"    
z)FileUtilTestCase.test_move_file_verbosityc             C   sl   t dtdddP | t: t| jd}|d W d Q R X t| j| jdd W d Q R X W d Q R X d S )	Nz	os.renamewrongr'   )side_effectr%   z	spam eggsr   )r&   )	r   OSErrorassertRaisesr   r(   r   r)   r   r    )r   fobjr   r   r   )test_move_file_exception_unpacking_rename?   s
    z:FileUtilTestCase.test_move_file_exception_unpacking_renamec             C   s   t dttjddn t dtdddP | t: t| jd}|d W d Q R X t	| j| j
dd	 W d Q R X W d Q R X W d Q R X d S )
Nz	os.renamer0   )r1   z	os.unlinkr'   r%   z	spam eggsr   )r&   )r   r2   errnoEXDEVr3   r   r(   r   r)   r   r    )r   r4   r   r   r   )test_move_file_exception_unpacking_unlinkG   s    z:FileUtilTestCase.test_move_file_exception_unpacking_unlinkc          
   C   s  t | jd}|d W d Q R X yt| j| j W n0 tk
rf } z| d|  W d d }~X Y nX t| j t	| j}t
| j| jdd t	| j}t	| j}| tj||||f | tj||||f t | jd}| | d W d Q R X d S )Nr%   zsome contentzos.link: %shard)linkr)r(   r   r)   r   r:   r    r2   skipTestr	   statr   
assertTruer   samestatr+   read)r   r-   estst2st3r   r   r   test_copy_file_hard_linkP   s     
z)FileUtilTestCase.test_copy_file_hard_linkc          
   C   s   t | jd}|d W d Q R X t| j}tdtddd t| j| jdd W d Q R X t| j}t| j}| 	tj
||||f | tj
||||f x:| j| jfD ]*}t |d	}| | d W d Q R X qW d S )
Nr%   zsome contentzos.linkr   zlinking unsupported)r1   r9   )r:   r;   )r(   r   r)   r   r=   r   r2   r   r    r>   r   r?   assertFalser+   r@   )r   r-   rB   rC   rD   fnr   r   r    test_copy_file_hard_link_failured   s    z1FileUtilTestCase.test_copy_file_hard_link_failure)__name__
__module____qualname__r   r   r$   r/   r5   r8   rE   rH   __classcell__r   r   )r#   r   r
      s   
	r
   c               C   s
   t tS )N)unittest	makeSuiter
   r   r   r   r   
test_suitev   s    rO   __main__)__doc__rM   r   r6   Zunittest.mockr   distutils.file_utilr   r   	distutilsr   distutils.testsr   Zdistutils.errorsr   Ztest.supportr   r	   TempdirManagerTestCaser
   rO   rI   r   r   r   r   <module>   s   i