a
    ze=                     @   s   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 )    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   4/usr/lib/python3.9/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   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 |  n
|  0 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w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   s   t dtddd | tX t| jd}|d W d    n1 sL0    Y  t| j| jdd W d    n1 s|0    Y  W d    n1 s0    Y  d S )	N	os.renamewrongr)   Zside_effectr%   	spam eggsr   r'   )	r   OSErrorassertRaisesr   r*   r   r+   r   r   r   Z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 t dtddd | tX t| jd}|d W d    n1 sb0    Y  t	| j| j
dd	 W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  d S )
Nr1   r2   r3   z	os.unlinkr)   r%   r4   r   r'   )r   r5   errnoZEXDEVr6   r   r*   r   r+   r   r   r7   r   r   r   )test_move_file_exception_unpacking_unlinkG   s    (z:FileUtilTestCase.test_move_file_exception_unpacking_unlinkc              
   C   s4  t | jd}|d W d    n1 s,0    Y  zt| j| j W n2 ty| } z| d|  W Y d }~nd }~0 0 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    n1 s&0    Y  d S )Nr%   r&   zos.link: %shardlinkr)r*   r   r+   r   r=   r   r5   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    n1 s,0    Y  t| j}tdtddd" t| j| jdd W d    n1 s|0    Y  t| j}t| j}| 	tj
||||f | tj
||||f | j| jfD ]@}t |d	 }| | d W d    q1 s0    Y  qd S )
Nr%   r&   zos.linkr   zlinking unsupportedr3   r;   r<   r>   )r*   r   r+   r   r?   r   r5   r   r   r@   r   rA   ZassertFalser-   rB   )r   r/   rD   rE   rF   fnr   r   r    test_copy_file_hard_link_failured   s    (0z1FileUtilTestCase.test_copy_file_hard_link_failure)__name__
__module____qualname__r   r   r$   r0   r8   r:   rG   rI   __classcell__r   r   r!   r   r
      s   
	r
   c                   C   s
   t tS r#   )unittestZ	makeSuiter
   r   r   r   r   
test_suitev   s    rO   __main__)rN   r   r9   Zunittest.mockr   Zdistutils.file_utilr   r   Z	distutilsr   Zdistutils.testsr   Zdistutils.errorsr   Ztest.supportr   r	   ZTempdirManagerZTestCaser
   rO   rJ   r   r   r   r   <module>   s   i