a
    
¼3jÓ,  ã                   @   sÒ   d dl Z d dlZd dlZd dlmZ d dlmZ d dlmZ d dl	m
Z
mZmZ d dlmZ d dlZd dlmZmZ d dlmZ d	Zd
d„ ZG dd„ dejejƒZG dd„ dejƒZdd„ ZedkrÎeeƒ ƒ dS )é    N)Údebug)ÚWARN)ÚDistutilsTemplateError)Ú
glob_to_reÚtranslate_patternÚFileList)Úfilelist)Úcaptured_stdoutÚrun_unittest)ÚsupportzÎinclude ok
include xo
exclude xo
include foo.tmp
include buildout.cfg
global-include *.x
global-include *.txt
global-exclude *.tmp
recursive-include f *.oo
recursive-exclude global *.x
graft dir
prune dir3
c                 C   s   |   dtj¡S )Nú/)ÚreplaceÚosÚsep)Ús© r   úY/www/server/python_manager/versions/3.9.10/lib/python3.9/distutils/tests/test_filelist.pyÚmake_local_path   s    r   c                   @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚFileListTestCasec                 C   s   |   |  t¡g ¡ |  ¡  d S ©N)ÚassertEqualÚget_logsr   Ú
clear_logs©Úselfr   r   r   ÚassertNoWarnings'   s    z!FileListTestCase.assertNoWarningsc                 C   s"   |   t|  t¡ƒd¡ |  ¡  d S )Nr   )ZassertGreaterÚlenr   r   r   r   r   r   r   ÚassertWarnings+   s    zFileListTestCase.assertWarningsc                 C   sJ   t j}t jdkrt t j¡}dD ]$\}}|d|i }|  t|ƒ|¡ q d S )Nú\))zfoo*z(?s:foo[^%(sep)s]*)\Z)zfoo?z(?s:foo[^%(sep)s])\Z)zfoo??z(?s:foo[^%(sep)s][^%(sep)s])\Z)zfoo\\*z(?s:foo\\\\[^%(sep)s]*)\Z)zfoo\\\*z(?s:foo\\\\\\[^%(sep)s]*)\Z)zfoo????z2(?s:foo[^%(sep)s][^%(sep)s][^%(sep)s][^%(sep)s])\Z)zfoo\\??z"(?s:foo\\\\[^%(sep)s][^%(sep)s])\Zr   )r   r   ÚreÚescaper   r   )r   r   ÚglobÚregexr   r   r   Útest_glob_to_re/   s    

z FileListTestCase.test_glob_to_rec                 C   s¾   t ƒ }t}ddddd|dƒ|dƒ|dƒ|d	ƒ|d
ƒ|dƒ|dƒ|dƒ|dƒ|dƒg|_t d¡D ]}| ¡ dkrrq`| |¡ q`ddd|dƒ|dƒ|dƒ|dƒ|dƒ|dƒg	}|  |j|¡ d S )Nzfoo.tmpÚokZxozfour.txtzbuildout.cfgz.hg/last-message.txtzglobal/one.txtzglobal/two.txtzglobal/files.xzglobal/here.tmpzf/o/f.oozdir/graft-onezdir/dir2/graft2zdir3/okzdir3/sub/ok.txtÚ
Ú )	r   r   ÚallfilesÚMANIFEST_INÚsplitÚstripÚprocess_template_liner   Úfiles)r   Ú	file_listÚlÚlineZwantedr   r   r   Útest_process_template_lineA   s<    óøz+FileListTestCase.test_process_template_linec                 C   s¤   t ƒ }tƒ }| d¡ W d   ƒ n1 s,0    Y  |  | ¡ d¡ dt_zJtƒ }| d¡ W d   ƒ n1 st0    Y  |  | ¡ d¡ W dt_ndt_0 d S )NZxxxr&   Tzxxx
F)r   r	   Zdebug_printr   Úgetvaluer   ÚDEBUG)r   r-   Ústdoutr   r   r   Útest_debug_printi   s    ((z!FileListTestCase.test_debug_printc                 C   s*   t ƒ }g d¢}| |¡ |  |j|¡ d S )N)ÚaÚbÚc)r   Úset_allfilesr   r'   )r   r-   r,   r   r   r   Útest_set_allfilesw   s    
z"FileListTestCase.test_set_allfilesc                 C   s6   t ƒ }g d¢|_| ¡  | ¡  |  |jg d¢¡ d S )N)r5   r6   r5   Úgr7   r:   )r5   r6   r7   r:   )r   r,   ÚsortZremove_duplicatesr   ©r   r-   r   r   r   Útest_remove_duplicates}   s
    
z'FileListTestCase.test_remove_duplicatesc                 C   sr   |   ttdddddƒ¡ t d¡}|  t|ddd|¡ |   ttdddddƒ¡ |   tdddd d¡¡ d S )Nr5   TF)ÚanchorZis_regexÚsearchú*.pyzfilelist.py)Ú
assertTrueÚhasattrr   r   Úcompiler   r?   )r   r"   r   r   r   Útest_translate_pattern…   s$    þ
þþÿÿz'FileListTestCase.test_translate_patternc                 C   sd   t ƒ }|  | d¡¡ t ƒ }ddg|_|  | d¡¡ t ƒ }ddg|_| d¡ |  |jdg¡ d S )Nr@   úa.pyzb.pyza.txt)r   ÚassertFalseZexclude_patternr,   rA   r   r<   r   r   r   Útest_exclude_patternš   s    


z%FileListTestCase.test_exclude_patternc                 C   s„   t ƒ }| g ¡ |  | d¡¡ t ƒ }| ddg¡ |  | d¡¡ t ƒ }|  |j¡ | ddg¡ | d¡ |  |jddg¡ d S )Nr@   rE   úb.txtÚ*)r   r8   rF   Zinclude_patternrA   ZassertIsNoner'   r   r<   r   r   r   Útest_include_patternª   s    

z%FileListTestCase.test_include_patternc                 C   sˆ  t }tƒ }dD ]}|  t|j|¡ qtƒ }| dd|dƒg¡ | d¡ |  |jdg¡ |  ¡  | d¡ |  |jdg¡ |  	¡  tƒ }dd|dƒg|_| d¡ |  |jd|dƒg¡ |  ¡  | d¡ |  |jd|dƒg¡ |  	¡  tƒ }| dd|dƒg¡ | d	¡ |  |jd|dƒg¡ |  ¡  | d
¡ |  |jd|dƒg¡ |  	¡  tƒ }dd|dƒg|_| d¡ |  |jdg¡ |  ¡  | d¡ |  |jdg¡ |  	¡  tƒ }| d|dƒ|dƒ|dƒg¡ | d¡ |  |j|dƒ|dƒg¡ |  ¡  | d¡ |  |j|dƒ|dƒg¡ |  	¡  tƒ }d|dƒ|dƒ|dƒg|_| d¡ |  |jd|dƒg¡ |  ¡  | d¡ |  |jd|dƒg¡ |  	¡  tƒ }| d|dƒ|dƒ|dƒg¡ | d¡ |  |j|dƒ|dƒg¡ |  ¡  | d¡ |  |j|dƒ|dƒg¡ |  	¡  tƒ }d|dƒ|dƒ|dƒg|_| d¡ |  |jd|dƒg¡ |  ¡  | d¡ |  |jd|dƒg¡ |  	¡  d S )N)	ZincludeZexcludezglobal-includezglobal-excludezrecursive-includezrecursive-excludeZgraftZpruneZblargrE   rH   zd/c.pyzinclude *.pyzinclude *.rbzexclude *.pyzexclude *.rbzglobal-include *.pyzglobal-include *.rbzglobal-exclude *.pyzglobal-exclude *.rbzd/b.pyzd/c.txtzd/d/e.pyzrecursive-include d *.pyzrecursive-include e *.pyzrecursive-exclude d *.pyzrecursive-exclude e *.pyzf/f.pyzgraft dzgraft ezprune dzprune e)
r   r   ZassertRaisesr   r+   r8   r   r,   r   r   )r   r.   r-   Úactionr   r   r   Útest_process_template¼   s”    ÿ







ÿ



ÿ



z&FileListTestCase.test_process_templateN)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r0   r4   r9   r=   rD   rG   rJ   rL   r   r   r   r   r   $   s   (r   c                   @   s,   e Zd Zejjdd„ ƒZdd„ Zdd„ ZdS )ÚFindAllTestCasec                 C   sJ   t j ¡ , t dd¡ |  t ¡ g ¡ W d   ƒ n1 s<0    Y  d S )NÚfooÚbar)Útestr   Útemp_cwdr   Úsymlinkr   r   Úfindallr   r   r   r   Útest_missing_symlink*  s    z$FindAllTestCase.test_missing_symlinkc                 C   s’   t j ¡ t t d¡ tj dd¡}t j |¡ t d¡ tj dd¡}t j |¡ ||g}|  t	t
 ¡ ƒ|¡ W d   ƒ n1 s„0    Y  d S )NrQ   ú	file1.txtrR   z	file2.txt)rS   r   rT   r   ÚmkdirÚpathÚjoinÚcreate_empty_filer   Úsortedr   rV   )r   Úfile1Zfile2Úexpectedr   r   r   Útest_basic_discovery0  s    

z$FindAllTestCase.test_basic_discoveryc                 C   s`   t j ¡ B}tj |d¡}t j |¡ |g}|  t 	|¡|¡ W d   ƒ n1 sR0    Y  d S )NrX   )
rS   r   Útemp_dirr   rZ   r[   r\   r   r   rV   )r   ra   r^   r_   r   r   r   Útest_non_local_discovery@  s
    z(FindAllTestCase.test_non_local_discoveryN)	rM   rN   rO   rS   r   Zskip_unless_symlinkrW   r`   rb   r   r   r   r   rP   )  s   
rP   c                   C   s   t  t  t¡t  t¡g¡S r   )ÚunittestZ	TestSuiteZ	makeSuiter   rP   r   r   r   r   Ú
test_suiteL  s    þrd   Ú__main__)r   r   rc   Z	distutilsr   Zdistutils.logr   Zdistutils.errorsr   Zdistutils.filelistr   r   r   r   Ztest.supportrS   r	   r
   Zdistutils.testsr   r(   r   ZLoggingSilencerZTestCaser   rP   rd   rM   r   r   r   r   Ú<module>   s*   ÿ  #