o
    NZh                     @   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ZddlZddlZejdddd	 ZG d
d dejZdS )zTests for distutils.dir_util.    N)dir_utilerrors)	copy_treecreate_treeensure_relativemkpathremove_tree)supportT)Zautousec                 C   sD   | j }| }tj|d|_tj|jd|_tj|d|_d S )NdeephereZdeep2)instancemkdtempospathjoinroot_targettargettarget2)requestmonkeypatchZdistutils_managed_tempdirselfZtmp_dir r   X/var/www/auris/lib/python3.10/site-packages/setuptools/_distutils/tests/test_dir_util.pystuff   s
   r   c                   @   sX   e Zd Zdd Zejddd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd ZdS )TestDirUtilc                 C   s   t | jdd |jrJ t| jdd t | jdd d| j g}|j|ks(J |  t| jdd d| j dg}|j|ksBJ d S )NFverboseT	creating z
removing 'z' (and everything under it))r   r   recordsr   r   messagesclearr   caplogwantedr   r   r   !test_mkpath_remove_tree_verbosity!   s   
z-TestDirUtil.test_mkpath_remove_tree_verbosityzplatform.system() == 'Windows'c                 C   st   t d}t | t| jd tt | jjd| @ ks!J t| jd tt | jjd| @ ks8J d S )N   i  im  )r   umaskr   r   statS_IMODEst_moder   )r   r&   r   r   r   test_mkpath_with_custom_mode/   s   

"&z(TestDirUtil.test_mkpath_with_custom_modec                 C   sr   t | jg ddd |jg ksJ t| jdd d| j g}t | jg ddd |j|ks0J t| jdd d S )N)onetwothreeFr   r   T)r   r   r   r   r!   r   r   r   test_create_tree_verbosity9   s   z&TestDirUtil.test_create_tree_verbosityc                 C   s   t | jdd t| j| jdd |jg ksJ t| jdd t | jdd t| jd }t	j
ddi| j d| d| j g}t| j| jdd |j|ksQJ t| jdd t| jdd d S )NFr   ok.txtsome contentzcopying z -> T)r   r   r   r   r   r   r   r   Pathjaracobuild)r   r"   Za_filer#   r   r   r   test_copy_tree_verbosityD   s   z$TestDirUtil.test_copy_tree_verbosityc                 C   sh   t | jdd tjddd| j t| j| j t| jdgks$J t	| j
dd t	| jdd d S )NFr   r0    )r/   z
.nfs123abcr/   )r   r   r2   r   r3   r   r   r   listdirr   r   r   r   r   r   #test_copy_tree_skips_nfs_temp_filesW   s   z/TestDirUtil.test_copy_tree_skips_nfs_temp_filesc                 C   sR   t jdkrtddksJ tddksJ d S tddksJ tddks'J d S )N/z	/home/foozhome/fooz	some/pathzc:\home\fooz
c:home\foozhome\foo)r   sepr   r7   r   r   r   test_ensure_relativeb   s
   
z TestDirUtil.test_ensure_relativec              	   C   s   t jdt d2 t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 )zK
        An exception in listdir should raise a DistutilsFileError
        z
os.listdir)Zside_effectN)
mockpatchOSErrorpytestraisesr   DistutilsFileErrorZtempdirsr   r   )r   srcr   r   r   #test_copy_tree_exception_in_listdirj   s   

Pz/TestDirUtil.test_copy_tree_exception_in_listdirc                 C   sv   G dd dt j}|d }ttj t|| W d   n1 s$w   Y  | r/J t| | s9J dS )zZ
        Caching should not remember failed attempts.

        pypa/distutils#304
        c                   @   s,   e Zd Zdd Zejdk re jZdS dS )z<TestDirUtil.test_mkpath_exception_uncached.<locals>.FailPathc                 _   s   t d)NzFailed to create directory)r?   )r   argskwargsr   r   r   mkdir}   s   zBTestDirUtil.test_mkpath_exception_uncached.<locals>.FailPath.mkdir)      N)	__name__
__module____qualname__rG   sysversion_infopathlibr1   _flavourr   r   r   r   FailPath|   s
    
rQ   ZfoodirN)rO   r1   r@   rA   r   rB   r   exists)r   r   Ztmp_pathrQ   r   r   r   r   test_mkpath_exception_uncachedu   s   z*TestDirUtil.test_mkpath_exception_uncachedN)rJ   rK   rL   r$   r@   markZskipifr*   r.   r4   r8   r;   rD   rS   r   r   r   r   r       s    

	r   )__doc__r   rO   r'   rM   Zunittest.mockr=   	distutilsr   r   Zdistutils.dir_utilr   r   r   r   r   Zdistutils.testsr	   Zjaraco.pathr2   r   r@   Zfixturer   ZTempdirManagerr   r   r   r   r   <module>   s    

