
    wg                         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
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        Z G d	 d
ej.                        Zy)zTests for distutils.dir_util.    N)dir_utilerrors)	copy_treecreate_treeensure_relativemkpathremove_tree)supportT)autousec                 .   | j                   }|j                         }t        j                  j	                  |d      |_        t        j                  j	                  |j
                  d      |_        t        j                  j	                  |d      |_        y )Ndeepheredeep2)instancemkdtempospathjoinroot_targettargettarget2)requestmonkeypatchdistutils_managed_tempdirselftmp_dirs        n/home/mcse/projects/flask/flask-venv/lib/python3.12/site-packages/setuptools/_distutils/tests/test_dir_util.pystuffr      sa    DllnGww||GV4D'',,t//8DK77<<1DL    c                   x    e Zd Zd Zej
                  j                  d      d        Zd Zd Z	d Z
d Zd Zd	 Zy
)TestDirUtilc                 ~   t        | j                  d       |j                  rJ t        | j                  d       t        | j                  d       d| j                   g}|j
                  |k(  sJ |j                          t        | j                  d       d| j                   dg}|j
                  |k(  sJ y )NFverboseT	creating z
removing 'z' (and everything under it))r   r   recordsr	   r   messagesclearr   caplogwanteds      r   !test_mkpath_remove_tree_verbosityz-TestDirUtil.test_mkpath_remove_tree_verbosity    s    t{{E*>>!!D$$e4t{{D)dkk]+,&(((D$$d3t//00KLM&(((r   zplatform.system() == 'Windows'c                    t        j                  d      }t        j                  |       t        | j                  d       t	        j
                  t        j                  | j                        j                        d| z  k(  sJ t        | j                  d       t	        j
                  t        j                  | j                        j                        d| z  k(  sJ y )N   i  im  )r   umaskr   r   statS_IMODEst_moder   )r   r/   s     r   test_mkpath_with_custom_modez(TestDirUtil.test_mkpath_with_custom_mode.   s     
t{{E"||BGGDKK0889UeV^KKKt||U#||BGGDLL199:eufnLLLr   c                 ,   t        | j                  g dd       |j                  g k(  sJ t        | j                  d       d| j                   g}t        | j                  g dd       |j                  |k(  sJ t        | j                  d       y )N)onetwothreeFr#   r%   T)r   r   r'   r	   r)   s      r   test_create_tree_verbosityz&TestDirUtil.test_create_tree_verbosity8   s    D$$&=uM"$$$D$$e4d../01D$$&=tL&(((D$$e4r   c                 x   t        | j                  d       t        | j                  | j                  d       |j                  g k(  sJ t        | j                  d       t        | j                  d       t        j                  | j                        dz  }t        j                  j                  ddi| j                         d| d| j                   g}t        | j                  | j                  d       |j                  |k(  sJ t        | j                  d       t        | j                  d       y )NFr#   ok.txtsome contentzcopying z -> T)r   r   r   r   r'   r	   r   r   Pathjaracobuild)r   r*   a_filer+   s       r   test_copy_tree_verbosityz$TestDirUtil.test_copy_tree_verbosityC   s    t{{E*$++t||U;"$$$D$$e4t{{E*4;;'(28^4dkkBVHD78$++t||T:&(((D$$e4DLL%0r   c                 r   t        | j                  d       t        j                  j	                  ddd| j                         t        | j                  | j                         t        j                  | j                        dgk(  sJ t        | j                  d       t        | j                  d       y )NFr#   r;    )r:   z
.nfs123abcr:   )r   r   r=   r   r>   r   r   r   listdirr	   r   r   s    r   #test_copy_tree_skips_nfs_temp_filesz/TestDirUtil.test_copy_tree_skips_nfs_temp_filesV   sz    t{{E*^2FT$++t||,zz$,,'H:555D$$e4DLL%0r   c                     t         j                  dk(  r!t        d      dk(  sJ t        d      dk(  sJ y t        d      dk(  sJ t        d      dk(  sJ y )N/z	/home/foozhome/fooz	some/pathzc:\home\fooz
c:home\foozhome\foo)r   sepr   rD   s    r   test_ensure_relativez TestDirUtil.test_ensure_relativea   sY    66S=";/:===";/;>>>"?3}DDD";/;>>>r   c                 &   t        j                  dt                     5  t        j                  t
        j                        5  | j                  d   }t        j                  |d       ddd       ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)zK
        An exception in listdir should raise a DistutilsFileError
        z
os.listdir)side_effectN)
mockpatchOSErrorpytestraisesr   DistutilsFileErrortempdirsr   r   )r   srcs     r   #test_copy_tree_exception_in_listdirz/TestDirUtil.test_copy_tree_exception_in_listdiri   sr     ZZ')< 	*fmm%%?
 	* --#CsD)		* 	* 	* 	* 	* 	*s#   $B&A;*B;B	 BBc                 0    G d dt         j                        }|dz  }t        j                  t        j
                        5  t         ||             ddd       |j                         rJ t        |       |j                         sJ y# 1 sw Y   9xY w)zZ
        Caching should not remember failed attempts.

        pypa/distutils#304
        c                       e Zd Zd Zy)<TestDirUtil.test_mkpath_exception_uncached.<locals>.FailPathc                     t        d      )NzFailed to create directory)rO   )r   argskwargss      r   mkdirzBTestDirUtil.test_mkpath_exception_uncached.<locals>.FailPath.mkdir{   s    :;;r   N)__name__
__module____qualname__r\    r   r   FailPathrX   z   s    <r   ra   foodirN)pathlibr<   rP   rQ   r   rR   r   exists)r   r   tmp_pathra   r   s        r   test_mkpath_exception_uncachedz*TestDirUtil.test_mkpath_exception_uncacheds   sx    	<w|| 	< H$]]6445 	%8F#$	% ==?""v}}	% 	%s   BBN)r]   r^   r_   r,   rP   markskipifr3   r8   r@   rE   rI   rU   rf   r`   r   r   r!   r!      sK    ) [[89M :M	51&	1?*r   r!   )__doc__r   rc   r0   unittest.mockrM   	distutilsr   r   distutils.dir_utilr   r   r   r   r	   distutils.testsr
   jaraco.pathr=   r   rP   fixturer   TempdirManagerr!   r`   r   r   <module>rq      sb    # 	    &  $    2 2g'(( gr   