B
    \=                 @   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   /lib/python3.7/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f2Zd1)superr
   setUpr   r   infoold_logr   Zmkdtempospathjoinsourcetarget
target_dir)r   Z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   fZ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.renamer,   )r-   z	os.unlinkr$   r"   z	spam eggsr   )r#   )r   r.   errnoZEXDEVr/   r   r%   r   r&   r   r   )r   r0   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   r5   r   r.   Z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)r-   r4   )r5   r6   )r%   r   r&   r   r7   r   r.   r   r   r8   r   r9   ZassertFalser(   r:   )r   r*   r<   r=   r>   fnr   r   r    test_copy_file_hard_link_failured   s    z1FileUtilTestCase.test_copy_file_hard_link_failure)__name__
__module____qualname__r   r   r!   r+   r1   r3   r?   rA   __classcell__r   r   )r    r   r
      s   
	r
   c               C   s
   t tS )N)unittestZ	makeSuiter
   r   r   r   r   
test_suitev   s    rG   __main__)__doc__rF   r   r2   Zunittest.mockr   Zdistutils.file_utilr   r   Z	distutilsr   Zdistutils.testsr   Zdistutils.errorsr   Ztest.supportr   r	   ZTempdirManagerZTestCaser
   rG   rB   r   r   r   r   <module>   s   i