o
    LK&h                     @   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)autousec                 C   sD   | j }| }tj|d|_tj|jd|_tj|d|_d S )Ndeepheredeep2)instancemkdtempospathjoinroot_targettargettarget2)requestmonkeypatchdistutils_managed_tempdirselftmp_dir r   \/var/www/html/venv/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&   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   r4    )r3   z
.nfs123abcr3   )r   r   r6   r   r7   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   r<   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)side_effectN)
mockpatchOSErrorpytestraisesr   DistutilsFileError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)rE   )r   argskwargsr   r   r   mkdir}   s   zBTestDirUtil.test_mkpath_exception_uncached.<locals>.FailPath.mkdir)      N)	__name__
__module____qualname__rN   sysversion_infopathlibr5   _flavourr   r   r   r   FailPath|   s
    
rX   foodirN)rV   r5   rF   rG   r   rH   r   exists)r   r   tmp_pathrX   r   r   r   r   test_mkpath_exception_uncachedu   s   z*TestDirUtil.test_mkpath_exception_uncachedN)rQ   rR   rS   r(   rF   markskipifr.   r2   r9   r=   r@   rK   r\   r   r   r   r   r       s    

	r   )__doc__r   rV   r+   rT   unittest.mockrC   	distutilsr   r   distutils.dir_utilr   r   r   r   r   distutils.testsr	   jaraco.pathr6   r   rF   fixturer   TempdirManagerr   r   r   r   r   <module>   s    

