a :êdgÓ,ã@sÒddlZddlZddlZddlmZddlmZddlmZddl m Z m Z m Z ddlm Z ddlZddlmZmZddlmZd Zd d „ZGd d „d ejejƒZGdd„dejƒZdd„ZedkrÎeeƒƒdS)é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 cCs| dtj¡S)Nú/)ÚreplaceÚosÚsep)Ús©rú9/usr/local/lib/python3.9/distutils/tests/test_filelist.pyÚmake_local_pathsrc@sdeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dS)ÚFileListTestCasecCs| | t¡g¡| ¡dS©N)Ú assertEqualÚget_logsrÚ clear_logs©ÚselfrrrÚassertNoWarnings'sz!FileListTestCase.assertNoWarningscCs"| t| t¡ƒd¡| ¡dS)Nr)Z assertGreaterÚlenrrrrrrrÚassertWarnings+szFileListTestCase.assertWarningscCsJtj}tjdkrt tj¡}dD]$\}}|d|i}| t|ƒ|¡q dS)Nú\))zfoo*z(?s:foo[^%(sep)s]*)\Z)zfoo?z(?s:foo[^%(sep)s])\Z)zfoo??z(?s:foo[^%(sep)s][^%(sep)s])\Z)zfoo\\*z(?s:foo\\\\[^%(sep)s]*)\Z)zfoo\\\*z(?s:foo\\\\\\[^%(sep)s]*)\Z)zfoo????z2(?s:foo[^%(sep)s][^%(sep)s][^%(sep)s][^%(sep)s])\Z)zfoo\\??z"(?s:foo\\\\[^%(sep)s][^%(sep)s])\Zr)rrÚreÚescaperr)rrÚglobÚregexrrrÚtest_glob_to_re/s    z FileListTestCase.test_glob_to_recCs¾tƒ}t}ddddd|dƒ|dƒ|dƒ|d ƒ|d ƒ|d ƒ|d ƒ|d ƒ|dƒ|dƒg|_t d¡D]}| ¡dkrrq`| |¡q`ddd|dƒ|dƒ|dƒ|d ƒ|d ƒ|d ƒg }| |j|¡dS)Nzfoo.tmpÚokZxozfour.txtz buildout.cfgz.hg/last-message.txtzglobal/one.txtzglobal/two.txtzglobal/files.xzglobal/here.tmpzf/o/f.ooz dir/graft-onezdir/dir2/graft2zdir3/okzdir3/sub/ok.txtÚ Ú) rrÚallfilesÚ MANIFEST_INÚsplitÚstripÚprocess_template_linerÚfiles)rÚ file_listÚlÚlineZwantedrrrÚtest_process_template_lineAs<ó  ø z+FileListTestCase.test_process_template_linecCs¤tƒ}tƒ}| d¡Wdƒn1s,0Y| | ¡d¡dt_zJtƒ}| d¡Wdƒn1st0Y| | ¡d¡Wdt_ndt_0dS)NZxxxr&Tzxxx F)rr Z debug_printrÚgetvaluerÚDEBUG)rr-ÚstdoutrrrÚtest_debug_printis((z!FileListTestCase.test_debug_printcCs*tƒ}gd¢}| |¡| |j|¡dS)N)ÚaÚbÚc)rÚ set_allfilesrr')rr-r,rrrÚtest_set_allfilesws z"FileListTestCase.test_set_allfilescCs6tƒ}gd¢|_| ¡| ¡| |jgd¢¡dS)N)r5r6r5Úgr7r:)r5r6r7r:)rr,ÚsortZremove_duplicatesr©rr-rrrÚtest_remove_duplicates}s  z'FileListTestCase.test_remove_duplicatescCsr| ttdddddƒ¡t d¡}| t|ddd|¡| ttdddddƒ¡| tdddd d¡¡dS)Nr5TF)ÚanchorZis_regexÚsearchú*.pyz filelist.py)Ú assertTrueÚhasattrrrÚcompilerr?)rr"rrrÚtest_translate_pattern…s$ þ  þ þÿÿz'FileListTestCase.test_translate_patterncCsdtƒ}| | d¡¡tƒ}ddg|_| | d¡¡tƒ}ddg|_| d¡| |jdg¡dS)Nr@úa.pyzb.pyza.txt)rÚ assertFalseZexclude_patternr,rArr<rrrÚtest_exclude_patternšs   z%FileListTestCase.test_exclude_patterncCs„tƒ}| g¡| | d¡¡tƒ}| ddg¡| | d¡¡tƒ}| |j¡| ddg¡| d¡| |jddg¡dS)Nr@rEúb.txtÚ*)rr8rFZinclude_patternrAZ assertIsNoner'rr<rrrÚtest_include_patternªs   z%FileListTestCase.test_include_patterncCsˆt}tƒ}dD]}| t|j|¡qtƒ}| dd|dƒg¡| d¡| |jdg¡| ¡| d¡| |jdg¡|  ¡tƒ}dd|dƒg|_| d¡| |jd|dƒg¡| ¡| d¡| |jd|dƒg¡|  ¡tƒ}| dd|dƒg¡| d ¡| |jd|dƒg¡| ¡| d ¡| |jd|dƒg¡|  ¡tƒ}dd|dƒg|_| d ¡| |jdg¡| ¡| d ¡| |jdg¡|  ¡tƒ}| d|d ƒ|dƒ|dƒg¡| d¡| |j|d ƒ|dƒg¡| ¡| d¡| |j|d ƒ|dƒg¡|  ¡tƒ}d|d ƒ|dƒ|dƒg|_| d¡| |jd|dƒg¡| ¡| d¡| |jd|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¡| |jd|dƒg¡| ¡| d¡| |jd|dƒg¡|  ¡dS)N) ZincludeZexcludezglobal-includezglobal-excludezrecursive-includezrecursive-excludeZgraftZpruneZblargrErHzd/c.pyz include *.pyz include *.rbz exclude *.pyz exclude *.rbzglobal-include *.pyzglobal-include *.rbzglobal-exclude *.pyzglobal-exclude *.rbzd/b.pyzd/c.txtzd/d/e.pyzrecursive-include d *.pyzrecursive-include e *.pyzrecursive-exclude d *.pyzrecursive-exclude e *.pyzf/f.pyzgraft dzgraft ezprune dzprune e) rrZ assertRaisesrr+r8rr,rr)rr.r-ÚactionrrrÚtest_process_template¼s”ÿ        ÿ    ÿ    z&FileListTestCase.test_process_templateN)Ú__name__Ú __module__Ú __qualname__rrr#r0r4r9r=rDrGrJrLrrrrr$s(rc@s,eZdZejjdd„ƒZdd„Zdd„ZdS)ÚFindAllTestCasecCsJtj ¡,t dd¡| t ¡g¡Wdƒn1s<0YdS)NÚfooÚbar)Útestr Útemp_cwdrÚsymlinkrrÚfindallrrrrÚtest_missing_symlink*s  z$FindAllTestCase.test_missing_symlinkcCs’tj ¡tt d¡tj dd¡}tj |¡t d¡tj dd¡}tj |¡||g}| t t   ¡ƒ|¡Wdƒn1s„0YdS)NrQú file1.txtrRz file2.txt) rSr rTrÚmkdirÚpathÚjoinÚcreate_empty_filerÚsortedrrV)rÚfile1Zfile2ÚexpectedrrrÚtest_basic_discovery0s     z$FindAllTestCase.test_basic_discoverycCs`tj ¡B}tj |d¡}tj |¡|g}| t  |¡|¡Wdƒn1sR0YdS)NrX) rSr Útemp_dirrrZr[r\rrrV)rrar^r_rrrÚtest_non_local_discovery@s   z(FindAllTestCase.test_non_local_discoveryN) rMrNrOrSr Zskip_unless_symlinkrWr`rbrrrrrP)s rPcCst t t¡t t¡g¡Sr)ÚunittestZ TestSuiteZ makeSuiterrPrrrrÚ test_suiteLsþrdÚ__main__)rrrcZ distutilsrZ distutils.logrZdistutils.errorsrZdistutils.filelistrrrrZ test.supportrSr r Zdistutils.testsr r(rZLoggingSilencerZTestCaserrPrdrMrrrrÚs*     ÿ#