a ze!4@sddlZddlZddlZddlZddlZddlmZmZmZm Z m Z Gdddej Z eGdddej Z edkr|edS)N)TESTFNskip_unless_symlink can_symlinkcreate_empty_file change_cwdc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZeddZeddZeejdkd d!d"Zd#d$Zd%d&Zeejdkd d'd(Zd)d*Zd+d,Zd-d.Zd/S)0 GlobTestscGstjtjj|jg|RSN)ospathnormpathjointempdir)selfpartsrB/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_glob.pynorm szGlobTests.normcsfdd|DS)Ncs"g|]}tjjjg|RqSr)r r r r ).0rrrr z#GlobTests.joins..r)rZtuplesrrrjoinsszGlobTests.joinscGs<|j|}tj|\}}tj|s0t|t|dSr)rr r splitexistsmakedirsr)rrfilenamebasefilerrrmktemps    zGlobTests.mktempcCstd|_|dd|dd|dd|dd |d d |d |d |ddd |ddddtrt|d|dtd|dttjdd|ddS)N_diraDaabF.aaG.bbHaaazzzFZZZEFbcdefghabrokensym1sym2sym3) rr rrr symlinkrr r rrrrsetUps        zGlobTests.setUpcCst|jdSr)shutilrmtreer rrrrtearDown*szGlobTests.tearDowncOst|dkr|d}n tjj|}tj|j|}tj|fi|}|tj|fi||dd|D}|tjt|fi|||tjt|fi|||S)NrcSsg|]}t|qSr)r fsencode)rxrrrr5rz"GlobTests.glob..) lenr r r r globZassertCountEqualiglobr9)rrkwargspatternpresZbresrrrr<-s     zGlobTests.globcCs<t|}t|}|t|t||t|t|dSr)list assertEqualsetsorted)rl1l2rrrassertSequencesEqual_noorder:sz&GlobTests.assertSequencesEqual_noordercCs |j}||d|dg||dd|ddg||d|dg||dgtd}|dd|Dthttjtjd}|dd|Dthtd }|d d|Dt httjt tjd }|d d|Dt hdS) Nr r!r"Zzymurgy*cSsh|] }t|qSrtyperrrrr Hrz.GlobTests.test_glob_literal..cSsh|] }t|qSrrJrLrrrrNJr*cSsh|] }t|qSrrJrLrrrrNMrcSsh|] }t|qSrrJrLrrrrNOr) rHr<rrCstrr r r curdirbytesr9)reqrArrrtest_glob_literal@s  zGlobTests.test_glob_literalcCs|j}||dt|jgd||dt|jddg||dt|jddg||d t|jdg||d t|jdd g||d t|jdd g||d gdS)Nza*)r r"r(*ar r(z.*r$r&z?aazaa?r"zaa[ab]z*q)rHr<maprrrSrrrtest_glob_one_directoryQsz!GlobTests.test_glob_one_directorycCs|j}tjddkr8||ddd|dddgn,||ddd|ddd|dddg||ddd|dddgdS)NZabCDr r,zE*r+r-z*g)rHr r normcaser<rrWrrrtest_glob_nested_directory[s" z$GlobTests.test_glob_nested_directorycCs|j}||dd|ddg||ddg||dddd|ddddg||dd |d d |d d gdS)NrIr!r rUr,r-r.z?a?*Fr(r)r"r#rHr<rrWrrrtest_glob_directory_namesfs z#GlobTests.test_glob_directory_namescCst|dtj}||gt|dtj}||gt|dtj}|t|d|t||d|dh|dtj|dtjhgdSNzZ*Zr*zaa*r(r")r<rr seprCr;assertInrDrrArrr'test_glob_directory_with_trailing_slashos   z1GlobTests.test_glob_directory_with_trailing_slashc Cstt|dtj}||gtt|dtj}||gtt|dtj}|t|d|t|t|dt|dht|dtjt|dtjhgdSr^) r<r r9rr`rCr;rarDrbrrr-test_glob_bytes_directory_with_trailing_slashs   z7GlobTests.test_glob_bytes_directory_with_trailing_slashcCs|j}||d|dg||dd|dd|ddg||dtj|dg|dtjgg||dd|dd|dd |ddgdS) Nr2rIr+r-r[r(r)r"r#)rHr<rrar r`rWrrrtest_glob_symlinkss   zGlobTests.test_glob_symlinkscCsb|j}||d|d|d|dg||d|dg||d|dgdS)Nzsym*r0r1r2r\rWrrrtest_glob_broken_symlinkss z#GlobTests.test_glob_broken_symlinkswin32zWin32 specific testcCs|j}|tdg|tdg|tdg|tdg|tddg|tddg|tdg|tdgdS) Nz*:s*:z?:s?:z\\?\c:\s\\?\c:\z\\*\*\s\\*\*\)rHr<rWrrrtest_glob_magic_in_drivesz"GlobTests.test_glob_magic_in_drivecCs4|t|||tt|t|dSr)rCr<escaper r9)rargZexpectedrrr check_escapeszGlobTests.check_escapecCsF|j}|dd|dd|dd|dd|dd |d d dS) Nabc[z[[]?z[?]rIz[*]z [[_/*?*/_]]z[[][[]_/[*][?][*]/_]]z /[[_/*?*/_]]/z/[[][[]_/[*][?][*]/_]]/rkrcheckrrr test_escapes     zGlobTests.test_escapecCsF|j}|dd|dd|dd|dd|d d |d d dS) Nz?:?z?:[?]z*:*z*:[*]z\\?\c:\?z \\?\c:\[?]z\\*\*\*z \\*\*\[*]z//?/c:/?z //?/c:/[?]z//*/*/*z //*/*/[*]rorprrrtest_escape_windowss     zGlobTests.test_escape_windowscOs|j|ddi|S)N recursiveT)r<)rrr>rrrrglobszGlobTests.rglobc sT|j}gd}tr |gd7}||d|jdg|R||tjd|jtjdfgdd|DRgd}tr|d d g7}||dd|jdg|R||d d|d d dddd||d|dddddg}tr|dg7}||dd|j|gd}tr0|dg7}||dd|j|||dddg||ddd|dd||d dd|dt|jtjj |t j dddfdd |D|t j ddddfd!d |D|t j ddddfd"d |D|t j tjdddtjdgfd#d |D|t j tjddddtjdgfd$d |D|t j tjddddfd%d |D|t j dd&ddd'd(g|t j d)ddgd dddg}tr|d*dg7}|t j dddd|Wdn1sF0YdS)+N) r+)r*r r r!r r,r r,r+r r,r-r r,r-r.r(r(r)r"r"r#))r0)r1)r2r2r+)r2r-)r2r-r.**)rcss|]}tjf|VqdSrr rQrirrr rz0GlobTests.test_recursive_glob..)r r)r r,r)r r,r-r)r(r)r"r)r2r)r2r-rr rrxryrzr{r|za**rwr}rrvrr+)rzr~rrvr[r,rITrtcsg|] }|qSrrrr rrrrz1GlobTests.test_recursive_glob..csg|] }|qSrrrrrrrrcsg|] }|qSrrrrrrrrcsg|]}tjg|RqSrrrrrrrrcsg|]}tjg|RqSrrrrrrrrcsg|]}tjg|RqSrrrrrrrrzzz*Fr(r)z**zz*Fr2) rHrrurr rQrr r r r<)rrSfulldirsexpectrrrtest_recursive_globsp       " zGlobTests.test_recursive_globcsd}tj|jd}tjj|gdg|R}t|tjj|gdg|RfddtdD}|D]}|t||qltj|ddfd dtdD}|}t|D],}tj|d}|D]}|t||qqdS) NZdeepdrIcsg|]}tjddqSTrr<r=rjr?rrrrz7GlobTests.test_glob_many_open_files..drcsg|]}tjddqSrrrrrrrr)r r r r rrangerCnext)rdepthrr@Zitersitrrrrtest_glob_many_open_files s  z#GlobTests.test_glob_many_open_filesN)__name__ __module__ __qualname__rrrr4r7r<rHrTrXrZr]rcrdrrerfunittestZ skipUnlesssysplatformrhrkrrrsrurrrrrrr s4         Arc@seZdZddZdS)SymlinkLoopGlobTestscCs td}t||tj|t|tdttj ddt tj tj ddt j ddd}| t|tt|t|}d}|rtjj dgdg|}||||||sqtj |d}||||||d 7}qt j tj dddd}| t|tt|t|}d}|rztjj dgdg|dg}||||||d 7}q4t j tj dd dd}| t|tt|t|}d}|rtjj dgdg|d g}||||||d 7}qWdn1s0YdS) NrdirrlinkrTrrr8r)rr rZ addCleanupr5r6rrr r r3rQr<rCr;rDraremove)rr resultsrr rrr test_selflink sN             z"SymlinkLoopGlobTests.test_selflinkN)rrrrrrrrrsr__main__)r<r r5rrZ test.supportrrrrrZTestCaserrrmainrrrrs/