o
    JAf.                     @   s   	 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rYee  dS dS )    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   s0   t |dkr| j||  d S | j| d S )Nr   )len_logsappend)selfmsgargs r   4/usr/lib/python3.10/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 )NZdeephereZdeep2)superr   setUpr   mkdtempospathjoinroot_targettargettarget2r
   infoold_logr   )r   Z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   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   r2   r   r   r   test_mkpath_with_custom_mode8   s   

z,DirUtilTestCase.test_mkpath_with_custom_modec                 C   sp   t | jg ddd | | jg  t| jdd d| j g}t | jg ddd | | j| t| jdd d S )N)ZoneZtwoZthreer   r(   r+   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    n1 sBw   Y  d|| jf g}t| j| jdd | | j| t| jdd t| jdd d S )Nr   r(   ok.txtw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}||fD ]}t|d}|d W d    n1 s2w   Y  qt| j| j | 	t
| jdg t| jdd t| jdd d S )Nr   r(   r8   z
.nfs123abcr9   r:   )r   r   r   r   r   r;   r<   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   sR   t jdkr| tdd | tdd d S | 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   s   	 t dt d2 | tj | jd }t|d  W d    n1 s%w   Y  W d    d S W d    d S 1 s=w   Y  d S )Nz
os.listdir)Zside_effect)r   OSErrorZassertRaisesr   ZDistutilsFileErrorZtempdirsr   r   )r   srcr   r   r   #test_copy_tree_exception_in_listdir}   s   

Pz3DirUtilTestCase.test_copy_tree_exception_in_listdir)__name__
__module____qualname__r   r   r&   r/   unittestZskipIfsysplatform
startswithr6   r7   r?   rA   rD   rH   __classcell__r   r   r#   r   r      s    

r   c                   C   s
   t tS r%   )rL   Z	makeSuiter   r   r   r   r   
test_suite   s   
rQ   __main__)rL   r   r3   rM   Zunittest.mockr   Z	distutilsr   r   Zdistutils.dir_utilr   r   r   r   r	   r
   Zdistutils.testsr   Ztest.supportr   ZTempdirManagerZTestCaser   rQ   rI   r   r   r   r   <module>   s     v