
    0hh&a                         S SK r S SKrS SKrS SKrS SKrS SKrS SKrS SKJrJ	r	  S SK
JrJrJrJrJr   " S S\R                   5      r\ " S S\R                   5      5       r\S:X  a  \R(                  " 5         gg)	    N)is_wasiPy_DEBUG)TESTFNskip_unless_symlinkcan_symlinkcreate_empty_file
change_cwdc                   H   \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rS r\S 5       r\S 5       r\R0                  " \R4                  S:H  S5      S 5       rS rS r\R0                  " \R4                  S:H  S5      S 5       rS rS r S r!S r"S r#\R0                  " \$" \%S5      S 5      \RL                  " \R4                  S!:H  S"5      S# 5       5       r'\RL                  " \(=(       a    \)S$5      S% 5       r*S& r+S' r,S( r-S) r.S* r/S+ r0S, r1S-r2g).	GlobTests   Nc                     [         R                  R                  [         R                  R                  " U R                  /UQ76 5      $ N)ospathnormpathjointempdir)selfpartss     7/opt/python-3.13.8/usr/lib/python3.13/test/test_glob.pynormGlobTests.norm   s-    wwT\\ BE BCC    c                     U Vs/ s H.  n[         R                  R                  " U R                  /UQ76 PM0     sn$ s  snf r   )r   r   r   r   )r   tuplesr   s      r   joinsGlobTests.joins   s0    @FGuT\\2E2GGGs   5=c                     U R                   " U6 n[        R                  R                  U5      u  p4[        R                  R	                  U5      (       d  [        R
                  " U5        [        U5        g r   )r   r   r   splitexistsmakedirsr   )r   r   filenamebasefiles        r   mktempGlobTests.mktemp   sK    99e$WW]]8,
ww~~d##KK(#r   c                    [         S-   U l        U R                  SS5        U R                  SS5        U R                  SS5        U R                  SS	5        U R                  SS
5        U R                  SS5        U R                  S5        U R                  S5        U R                  SSS5        U R                  SSSS5        [        5       (       a  [        R
                  " U R                  S5      U R                  S5      5        [        R
                  " SU R                  S5      5        [        R
                  " [        R                  R                  SS5      U R                  S5      5        U R                  5         g )N_diraDaabF.aaG.bbH.JaaazzzFZZZEFbcdefghabrokensym1sym2sym3)
r   r   r%   r   r   symlinkr   r   r   
open_dirfdr   s    r   setUpGlobTests.setUp   s	   CE3E3E3E4 E6"EDC%Ct,==JJtyy*DIIf,=>JJx6!23JJrww||C/61BCr   c                    U R                   b   [        R                  " U R                   5        [        R                  [        R                  1[        R
                  ::  ah  [        R                  [        R                  ;   aF  [        R                  " U R                  [        R                  [        R                  -  5      U l         g S U l         g r   )dir_fdr   closeopenstatsupports_dir_fdscandirsupports_fdr   O_RDONLYO_DIRECTORYr?   s    r   r>   GlobTests.open_dirfd0   sp    ;;"HHT[[!GGRWW!3!33

bnn8T''$,,bnn0LMDKDKr   c                     U R                   b   [        R                  " U R                   5        [        R                  " U R
                  5        g r   )rC   r   rD   shutilrmtreer   r?   s    r   tearDownGlobTests.tearDown8   s,    ;;"HHT[[!dll#r   c           
      `	   [        U5      S:X  a  US   nO[        R                  R                  " U6 n[        R                  R                  U R                  U5      n[
        R
                  " U40 UD6n[
        R                  " U40 UD6nU R                  [
        R                  " U40 UD6U5        U Vs/ s H  n[        R                  " U5      PM     nnU R                  [
        R
                  " [        R                  " U5      40 UD6U5        U R                  [
        R                  " [        R                  " U5      40 UD6U5        [        U R                  5         [
        R
                  " U40 UD6nU H2  nU R                  [        R                  R                  U5      U5        M4     US:X  d  US[        R                  -   :X  a  USS  n	OUn	U R                  U Vs/ s H-  n[        R                  R                  U R                  U5      PM/     snU	5        U R                  [
        R                  " U40 UD6U5        [        R                  " U5      n
U Vs/ s H  n[        R                  " U5      PM     nnU R                  [
        R
                  " U
40 UD6U5        U R                  [
        R                  " U
40 UD6U5        S S S 5        U R                  [
        R
                  " U4SU R                  0UD6U5        U R                  [
        R                  " U4SU R                  0UD6U5        [        R                  " U R                  5      nU R                  [
        R
                  " W
4SU0UD6W5        U R                  [
        R                  " U
4SU0UD6U5        U R                  b  U R                  [
        R
                  " U4SU R                  0UD6U5        U R                  [
        R                  " U4SU R                  0UD6U5        U R                  [
        R
                  " U
4SU R                  0UD6U5        U R                  [
        R                  " U
4SU R                  0UD6U5        U$ s  snf s  snf s  snf ! , (       d  f       GN= f)N   r   **root_dirrC   )lenr   r   r   r   globiglobassertCountEqualfsencoder	   assertFalseisabsseprC   )r   r   kwargspatternpresres2xbresexpectedbpatternbres2btempdirs                r   rW   GlobTests.glob=   s   u:?AhGggllE*GGGLLw/ii$V$zz!&v&djj5f5s;(+,1A,diiAA&A4HdjjQB6BDI%99W//D  q!115 $'TBFF]":qr7!!$"O$Q277<<a#@$"O"*,!!$**W"?"?F{{7+H-12TR[[^TE2!!$))H"?"?G!!$**X"@"@%H &  	diiQ$,,Q&QSWXdjjR4<<R6RTXY;;t||,IIh<<V<e	EJJx=(=f=u	F ;;"!!		'@$++@@$H!!

7A4;;A&A4I!!		(A4;;A&A5J!!

8BDKKB6BEK 
M - #P 3 &%s3   6 R#BR'4R
A	R$ RAR
R
R-c                     [        U5      n[        U5      nU R                  [        U5      [        U5      5        U R                  [        U5      [        U5      5        g r   )listassertEqualsetsorted)r   l1l2s      r   assertSequencesEqual_noorder&GlobTests.assertSequencesEqual_noordero   sD    "X"XR#b'*VBZ0r   c                 x   U R                   nU" U R                  S5      U R                  S5      /5        U" U R                  SS5      U R                  SS5      /5        U" U R                  S5      U R                  S5      /5        U" U R                  S5      / 5        [        R                  " S5      nU R                  U Vs1 s H  n[	        U5      iM     sn[
        15        [        R                  " [        R                  R                  [        R                  S5      5      nU R                  U Vs1 s H  n[	        U5      iM     sn[
        15        [        R                  " S5      nU R                  U Vs1 s H  n[	        U5      iM     sn[        15        [        R                  " [        R                  R                  [        R                  " [        R                  5      S5      5      nU R                  U Vs1 s H  n[	        U5      iM     sn[        15        g s  snf s  snf s  snf s  snf )Nr)   r*   r+   zymurgy*   *)rq   rW   r   rl   typestrr   r   r   curdirbytesrZ   )r   eqra   rs       r   test_glob_literalGlobTests.test_glob_literalu   s   ..
499S>DIIcN+,
499S#3!4 56
499Udii./0
499Y$iin3/3a$q'3/#7iiRYY453/3a$q'3/#7iio3/3a$q'3/%9iiR[[%;TBC3/3a$q'3/%9 0/ 0/s   H(7H->H2H7c                 <   U R                  [        R                  " S5      / 5        U R                  [        R                  " S5      / 5        U R                  [        R                  " SU R                  S9/ 5        U R                  [        R                  " S[        R                  " U R                  5      S9/ 5        U R                  [        R                  " SU R
                  S9/ 5        U R                  [        R                  " SU R
                  S9/ 5        g )N r   )rU   )rC   )rl   rW   r   r   rZ   rC   r?   s    r   test_glob_empty_pattern!GlobTests.test_glob_empty_pattern   s    2+3,2=rB3T\\1JKRP2dkk:B?3t{{;R@r   c                 r   U R                   nU" U R                  S5      [        U R                  / SQ5      5        U" U R                  S5      [        U R                  SS/5      5        U" U R                  S5      [        U R                  SS/5      5        U" U R                  S	5      [        U R                  S/5      5        U" U R                  S
5      [        U R                  SS/5      5        U" U R                  S5      [        U R                  SS/5      5        U" U R                  S5      / 5        g )Na*)r)   r+   r2   *ar)   r2   .*r-   r/   ?aaaa?r+   aa[ab]z*q)rq   rW   mapr   r   r{   s     r   test_glob_one_directory!GlobTests.test_glob_one_directory   s    ..
499T?C		+>?@
499T?C		C<89
499T?C		E5>:;
499USUG45
499USUEN;<
499XDIIu~ >?
499T?Br   c           	         U R                   n[        R                  R                  S5      S:X  a-  U" U R	                  SSS5      U R                  SSS5      /5        O>U" U R	                  SSS5      U R                  SSS5      U R                  SSS5      /5        U" U R	                  SSS5      U R                  SSS5      /5        g )NabCDr)   r6   zE*r5   r7   z*g)rq   r   r   normcaserW   r   r   s     r   test_glob_nested_directory$GlobTests.test_glob_nested_directory   s    ..77F#v-tyyeT*TYYsE4-H,IJ tyyeT*TYYsE4-H-1YYsE5-I-K L
499S%&3u)E(FGr   c           	      t   U R                   nU" U R                  SS5      U R                  SS5      /5        U" U R                  SS5      / 5        U" U R                  SSSS5      U R                  SSSS5      /5        U" U R                  SS	5      U R                  S
S5      U R                  SS5      /5        g )Nru   r*   r)   r   r6   r7   r8   z?a?*Fr2   r3   r+   r,   rq   rW   r   r   s     r   test_glob_directory_names#GlobTests.test_glob_directory_names   s    ..
499S#3!4 56
499S$$
499S#sD)IIc5%./	1
499UD!DIIeV$<$(IIeS$9$; 	<r   c                    [         R                  (       a   [         R                  [         R                  4O[         R                  4nU GH  nU R                  [        R                  " U R                  S5      U-   5      / 5        U R                  [        R                  " U R                  S5      U-   5      / 5        U R                  [        R                  " U R                  S5      U-   5      U R                  S5      U-   /5        U R                  [        R                  " U R                  S5      US-  -   5      U R                  S5      US-  -   /5        U R                  nU" [        R                  " U R                  S5      U-   5      U R                  S5      [         R                  -   U R                  S5      [         R                  -   /5        U" [        R                  " U R                  S5      US-  -   5      U R                  S5      [         R                  -   U R                  S5      [         R                  -   /5        GM     g NzZ*Zr4   r2      zaa*r+   )r   altsepr]   rl   rW   r   rq   r   sepsr]   r{   s       r   'test_glob_directory_with_trailing_slash1GlobTests.test_glob_directory_with_trailing_slash   s   &(ii		"bffYCTYYtyy'7#'=>CTYYtyy'7#'=>CTYYtyy'7#'=>"ii.457 TYYtyy'7#a%'?@"ii.Q679 22Btyy5)C/0		% 266)499U+;bff+DEG tyy5)CE12		% 266)499U+;bff+DEG# r   c           
         [         R                  (       a   [         R                  [         R                  4O[         R                  4nU GH  nU R                  [        R                  " [         R
                  " U R                  S5      U-   5      5      / 5        U R                  [        R                  " [         R
                  " U R                  S5      U-   5      5      / 5        U R                  [        R                  " [         R
                  " U R                  S5      U-   5      5      [         R
                  " U R                  S5      U-   5      /5        U R                  [        R                  " [         R
                  " U R                  S5      US-  -   5      5      [         R
                  " U R                  S5      US-  -   5      /5        U R                  nU" [        R                  " [         R
                  " U R                  S5      U-   5      5      [         R
                  " U R                  S5      [         R                  -   5      [         R
                  " U R                  S5      [         R                  -   5      /5        U" [        R                  " [         R
                  " U R                  S5      US-  -   5      5      [         R
                  " U R                  S5      [         R                  -   5      [         R
                  " U R                  S5      [         R                  -   5      /5        GM     g r   )r   r   r]   rl   rW   rZ   r   rq   r   s       r   -test_glob_bytes_directory_with_trailing_slash7GlobTests.test_glob_bytes_directory_with_trailing_slash   s    ')ii		"bffYCTYYr{{499U3Cc3I'JKRPTYYr{{499U3Cc3I'JKRPTYYr{{499U3Cc3I'JKDIIe,s2346TYYr{{499U3Cc!e3K'LMDIIe,s1u456822BtyyTYYu%5%;<=DIIe,rvv56DIIe,rvv5689 tyyTYYu%5A%=>?DIIe,rvv56DIIe,rvv5689 r   c           	         U R                   nU" U R                  S5      U R                  S5      /5        U" U R                  SS5      U R                  SS5      U R                  SS5      /5        U" U R                  S[        R                  -   5      U R                  S5      [        R                  -   /5        U" U R                  SS5      U R                  SS5      U R                  SS	5      U R                  SS5      /5        g )
Nr<   ru   r5   r7   r   r2   r3   r+   r,   )rq   rW   r   r   r]   r   s     r   test_glob_symlinksGlobTests.test_glob_symlinks   s    ..
499Vtyy012
499VS!DIIfd$;$(IIfe$<$> 	?
499Vbff_%		&(9BFF(B'CD
499S$IIeV$IIeS!499VT#:<	=r   c                 L   U R                   nU" U R                  S5      U R                  S5      U R                  S5      U R                  S5      /5        U" U R                  S5      U R                  S5      /5        U" U R                  S5      U R                  S5      /5        g )Nzsym*r:   r;   r<   r   r   s     r   test_glob_broken_symlinks#GlobTests.test_glob_broken_symlinks   s    ..
499Vtyy0$))F2C#yy02 	3
499Vtyy012
499Vtyy012r   win32zWin32 specific testc                    U R                   nU" [        R                  " S5      / 5        U" [        R                  " S5      / 5        U" [        R                  " S5      / 5        U" [        R                  " S5      / 5        U" [        R                  " S5      S/5        U" [        R                  " S5      S/5        U" [        R                  " S5      / 5        U" [        R                  " S5      / 5        g )	Nz*:s   *:z?:s   ?:z\\?\c:\s   \\?\c:\z\\*\*\s   \\*\*\)rq   rW   r   s     r   test_glob_magic_in_drive"GlobTests.test_glob_magic_in_drive   s    ..
499T?B
499UR 
499T?B
499UR 
499]#m_5
499^$~&67
499\"B'
499]#R(r   c                     U R                  [        R                  " U5      U5        U R                  [        R                  " [        R                  " U5      5      [        R                  " U5      5        g r   )rl   rW   escaper   rZ   )r   argre   s      r   check_escapeGlobTests.check_escape   sF    S)84R[[%56H8MNr   c                     U R                   nU" SS5        U" SS5        U" SS5        U" SS5        U" SS	5        U" S
S5        g )Nabc[z[[]?z[?]ru   z[*]z[[_/*?*/_]]z[[][[]_/[*][?][*]/_]]z/[[_/*?*/_]]/z/[[][[]_/[*][?][*]/_]]/r   r   checks     r   test_escapeGlobTests.test_escape   sK    !!eUc5c5c5m45o89r   c                     U R                   nU" SS5        U" SS5        U" SS5        U" SS5        U" S	S
5        U" SS5        g )Nz?:?z?:[?]z*:*z*:[*]z\\?\c:\?z
\\?\c:\[?]z\\*\*\*z	\\*\*\[*]z//?/c:/?z
//?/c:/[?]z//*/*/*z	//*/*/[*]r   r   s     r   test_escape_windowsGlobTests.test_escape_windows  sI    !!eWeWk=)j,'j,'i%r   c                 *    U R                   " USS0UD6$ )N	recursiveTrW   r   r   r^   s      r   rglobGlobTests.rglob  s    yy%:4:6::r   c                 *    U R                   " USS0UD6$ )Ninclude_hiddenTr   r   s      r   hglobGlobTests.hglob  s    yy%????r   c                 
   U R                   nSS/nU" U R                  S5      U R                  " U6 5        U" U R                  S5      U R                  " U6 5        S/nU" U R                  SS5      U R                  " U6 5        g )Nr2   r-   r   z*aar-   r.   rT   r.   )rq   r   r   )r   r{   lrp   s       r   test_hidden_globGlobTests.test_hidden_glob  sq    ..x 
4::edjj!n-
4::edjj!n-^
4::dC $**b/2r   c                 R
   U R                   n/ SQn[        5       (       a  U/ SQ-  nU" U R                  S5      U R                  " S/UQ76 5        U" U R                  [        R
                  S5      U R                  " [        R
                  S4/S U 5       Q76 5        / SQn[        5       (       a  USS	/-  nU" U R                  SS5      U R                  " S/UQ76 5        U" U R                  S
S5      U R                  SSSSSS5      5        U" U R                  S5      U R                  SSS5      5        SS/n[        5       (       a  US/-  nU" U R                  SS5      U R                  " U6 5        / SQn[        5       (       a  US/-  nU" U R                  SS5      U R                  " U6 5        U" U R                  SSS5      / 5        U" U R                  SSS5      U R                  SS5      5        U" U R                  S
SS5      U R                  S5      5        [        U R                  5         [        R                  R                  nU" [        R                  " SSS9U Vs/ s H  oe" U6 PM	     sn5        U" [        R                  " U" SS5      SS9U Vs/ s H  oe" U6 PM	     sn5        U" [        R                  " U" SS5      SS9U Vs/ s H  oe" U6 PM	     sn5        U" [        R                  " U" [        R
                  S5      SS9U" [        R
                  S5      /U Vs/ s H  oe" [        R
                  /UQ76 PM     sn-   5        U" [        R                  " U" [        R
                  SS5      SS9U" [        R
                  S5      /U Vs/ s H  oe" [        R
                  /UQ76 PM     sn-   5        U" [        R                  " U" [        R
                  SS5      SS9U Vs/ s H  oe" [        R
                  /UQ76 PM     sn5        U" [        R                  " U" SS5      SS9U" SS 5      /5        U" [        R                  " S!SS9/ 5        U" S
SS5      S/n[        5       (       a  XE" S"S5      /-  nU" [        R                  " U" SS5      SS9U5        / S#QnU" [        R                  " SSSS$9X'-    Vs/ s H  oe" U6 PM	     sn5        S S S 5        g s  snf s  snf s  snf s  snf s  snf s  snf s  snf ! , (       d  f       g = f)%N)r5   )r4   r)   r)   r*   r)   r6   r)   r6   r5   r)   r6   r7   r)   r6   r7   r8   r   r2   r3   r+   r+   r,   ))r:   )r;   )r<   r<   r5   )r<   r7   )r<   r7   r8   rT   )r   r   c              3   J   #    U  H  n[         R                  4U-   v   M     g 7fr   )r   ry   ).0is     r   	<genexpr>0GlobTests.test_recursive_glob.<locals>.<genexpr>-  s     )IDq299,*:Ds   !#)r)   r   )r)   r6   r   )r)   r6   r7   r   )r2   r   )r+   r   )r<   r   )r<   r7   r   r)   r   r   r   r   r   r   a**r   r   r   r   r   r5   )r   r   r   r   r   r6   ru   Tr   zzz*Fr2   r3   z**zz*Fr<   ))r/   r0   )r/   r1   r   r   )r/   )r   r   )rq   r   r   r   r   ry   r	   r   r   r   rW   )r   r{   fulldirsexpectr   r   recs           r   test_recursive_globGlobTests.test_recursive_glob  s`   .. ==  D 	4::dTZZ556
4::bii&JJ		2J)ID)IJ	L*==\#677D
4::dBE!9D!9:
4::c4 $**z<1C!:#< 	= 	4::edjj8DE$g.==~&&F
4::dD!4::v#67M==~&&F
4::dD!4::v#67
4::dD"%r*
4::dE3' 3*5 	6
4::c4'L)AB%77<<Dtyy.40H4aq40HItyydB48#'(4aq4(*tyydCD9#'(4aq4(*tyybii.$?bii$%d(Kdbii)<!)<d(KKMtyybiir2dCbii$%d(Kdbii)<!)<d(KKMtyybiis3tD.23dbii$!$d35tyyd6*d;eV$%'tyyT2B73t,d3F}}4-..tyydD)T:FCNCtyydC"&(+(Qa(+-- &%0H(((K(K3 ,/ &%si   95T.S5<(T$S:2(TS?(AT5 TAT% T	9T> TB9TT%T5#T
T&c                    U R                   nU" U R                  S5      U R                  S5      5        U" U R                  SS5      / 5        U" U R                  SS5      / 5        U" U R                  SS5      / 5        U" U R                  S5      / 5        U" U R                  SS5      / 5        U" U R                  SS5      / 5        U" U R                  SS5      / 5        g )Nr5   r   r   ru   rT   nonexistent)rq   r   r   r   s     r   test_glob_non_directory!GlobTests.test_glob_non_directory^  s    ..
4::dTZZ01
4::dB$
4::dC "%
4::dD!2&
4::m$b)
4::mR("-
4::mS)2.
4::mT*B/r   mkfifozrequires os.mkfifo()vxworksz%fifo requires special path on VxWorksc                    [         R                  R                  U R                  S5      n[         R                  " U5        U R                  5         U R                  U R                  S5      U/5        U R                  U R                  S5      U/5        U R                  U R                  SS5      / 5        U R                  U R                  SS5      / 5        U R                  U R                  SS5      / 5        g )Nmypipezmypipe*r   subru   )r   r   r   r   r   r>   rl   r   )r   r   s     r   test_glob_named_pipeGlobTests.test_glob_named_pipei  s     ww||DLL(3
		$ 	H-v6I.7Hb126He4b9Hc2B7r   zrequires too much stackc                 "   Sn[         R                  R                  U R                  S5      n[         R                  R                  " U/S/U-  Q76 n[         R                  " U5        [         R                  R                  " U/S/U-  Q76 n[        S5       Vs/ s H  n[        R                  " USS9PM     nnU H  nU R                  [        U5      U5        M      [         R                  R                  USS5      n[        S5       Vs/ s H  n[        R                  " USS9PM     nnUn[        U5       HG  n[         R                  R                  US5      nU H  nU R                  [        U5      U5        M      MI     g s  snf s  snf )	N   deepdru   d   Tr   rT   )
r   r   r   r   r!   rangerW   rX   rl   next)	r   depthr#   r`   r_   jitersitr   s	            r   test_glob_many_open_files#GlobTests.test_glob_many_open_filesz  s/   ww||DLL&1GGLL.#u.
A'',,t4uU{4>CCjIjGt4jIBT"Xq) '',,tT3/>CCjIjGt4jIuAQ$A  b1-   J Js   FFc                 |   U R                  [        5         [        R                  " U R                  S5        S S S 5        [
        R                  " 5          [
        R                  " S5        U R                  nU" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      / 5        U" [        R                  " U R                  S5      / 5        U" [        R                  " U R                  S5      / 5        U" [        R                  " U R                  S5      / 5        U" [        R                  " U R                  S5      / 5        S S S 5        g ! , (       d  f       GNj= f! , (       d  f       g = f)	Nr)   ignorer/   .b*br   r   r   )	assertWarnsDeprecationWarningrW   glob0r   warningscatch_warningssimplefilterrq   r   s     r   
test_glob0GlobTests.test_glob0  s   01JJt||S) 2 $$&!!(+22Btzz$,,,se4tzz$,,.8tzz$,,.3tzz$,,,b1tzz$,,,b1tzz$,,-r2tzz$,,-r2 '& 21 '&s   "FD=F-
F*-
F;c                    U R                  [        5         [        R                  " U R                  S5        S S S 5        [
        R                  " 5          [
        R                  " S5        U R                  nU" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      / 5        U" [        R                  " U R                  S5      S/5        U" [        R                  " U R                  S5      SS/5        U" [        R                  " U R                  S	5      / S
Q5        S S S 5        g ! , (       d  f       GNp= f! , (       d  f       g = f)Nr)   r  r/   r  r  r   r   r2   r   )r)   r2   r+   )	r  r  rW   glob1r   r  r	  r
  rq   r   s     r   
test_glob1GlobTests.test_glob1  s%   01JJt||S) 2 $$&!!(+22Btzz$,,,se4tzz$,,.8tzz$,,.8tzz$,,,b1tzz$,,,se4tzz$,,-U|<tzz$,,-/BC '& 21 '&s   "F!EF3!
F03
Gc                 Z   [         R                  " [        R                  " S5      5      R                  nU R                  U" S5      5        U R                  U" S5      5        U R                  U" S5      5        [         R                  " [        R                  " S5      5      R                  nU R                  U" S5      5        [         R                  " [        R                  " SSS95      R                  nU R                  U" S5      5        U R                  U" S5      5        U R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        U R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        [         R                  " [        R                  " SSS95      R                  nU R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        U R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        [         R                  " [        R                  " SSS95      R                  nU R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        U R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        [         R                  " [        R                  " SSS95      R                  nU R                  U" [        R                  R                  SS
5      5      5        U R                  U" [        R                  R                  SS
5      5      5        [         R                  " [        R                  " SSS95      R                  nU R                  U" [        R                  R                  SS	5      5      5        U R                  U" [        R                  R                  SS
5      5      5        U R                  U" [        R                  R                  SS5      5      5        U R                  U" [        R                  R                  SS5      5      5        g )Nru   foozfoo.barz.foor   rT   Tr   barz.bar**/*z*/**z**/.barz**/*.*zbar.txtz.bar.txt)
recompilerW   	translatematchassertIsNotNoneassertIsNoner   r   r   )r   r  s     r   test_translate_matching!GlobTests.test_translate_matching  s   

4>>#./55U5\*U9-.%-(

4>>$/066U6]+

4>>$$?@FFU5\*%-(U277<<u#=>?%UF ;<=%VU ;<=%VV <=>

4>>&DABHHU277<<u#=>?%UF ;<=%VU ;<=%VV <=>

4>>&DABHHU277<<u#=>?%UF ;<=%VU ;<=%VV <=>

4>>)tDEKKU277<<v#>?@%VV <=>

4>>(dCDJJ%UE :;<%UF ;<=U277<<y#ABC%UJ ?@Ar   c                    S nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S	5        U R                  U" S
5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nc                 ,    [         R                  " U SS9$ )N/)r   rW   r  pats    r   fn$GlobTests.test_translate.<locals>.fn  s    >>#C00r   r  
(?s:foo)\Zfoo/bar(?s:foo/bar)\Zru   z(?s:[^/.][^/]*)\Zr   z(?s:(?!\.)[^/])\Zr   (?s:a[^/]*)\Zr   z(?s:(?!\.)[^/]*a)\Zr   (?s:\.[^/]*)\Zr   z(?s:(?!\.)[^/]aa)\Zr   (?s:aa[^/])\Zr   (?s:aa[ab])\ZrT   z(?s:(?!\.)[^/]*)\Z***r   **bz(?s:(?!\.)[^/]*b)\Z/**/*/*.*/**z=(?s:/(?!\.)[^/]*/[^/.][^/]*/(?!\.)[^/]*\.[^/]*/(?!\.)[^/]*)\Zrl   r   r#  s     r   test_translateGlobTests.test_translate  sE   	1EM2I(9:C"67C"67D#34D#9:D#45E$:;E$45H'78D#89E$9:E$45E$:;N+Y	[r   c                    S nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S	5        U R                  U" S
5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nc                 .    [         R                  " U SSS9$ )NTr  )r   r   r   r!  s    r   r#  3GlobTests.test_translate_include_hidden.<locals>.fn  s    >>#dEEr   r  r%  r&  r'  ru   (?s:[^/]+)\Zr   (?s:[^/])\Zr   r(  r   z(?s:[^/]*a)\Zr   r)  r   z(?s:[^/]aa)\Zr   r*  r   r+  rT   (?s:[^/]*)\Zr,  r   r-  (?s:[^/]*b)\Zr.  z&(?s:/[^/]*/[^/]+/[^/]*\.[^/]*/[^/]*)\Zr/  r0  s     r   test_translate_include_hidden'GlobTests.test_translate_include_hidden  s?   	FEM2I(9:C/2C.1D#34D#34D#45E$45E$45H'78D?3EO4E$45E$45N+-VWr   c                    S nU R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S	5      S
5        U R                  U" S5      S5        U R                  U" S5      S5        U R                  U" S5      S5        g )Nc                 0    [         R                  " U SSSS9$ )NTr  r   r   r   r   r!  s    r   r#  .GlobTests.test_translate_recursive.<locals>.fn  s    >>#dQTUUr   ru   r6  r   r7  rT   z	(?s:.*)\Zz**/**r,  r8  r   r(  r-  r9  r.  z%(?s:/(?:.+/)?[^/]+/[^/]*\.[^/]*/.*)\Zr/  r0  s     r   test_translate_recursive"GlobTests.test_translate_recursive  s    	VC/2C.1D<0Gl3EO4E$45E$45N+-UVr   c                 j    S nU R                  U" S5      S5        U R                  U" S5      S5        g )Nc                 4    [         R                  " U SSSS/S9$ )NTr  \r>  r   r!  s    r   r#  )GlobTests.test_translate_seps.<locals>.fn  s    >>#dRUW[Q\]]r   zfoo/bar\bazz(?s:foo[/\\]bar[/\\]baz)\Zr  z(?s:(?:.+[/\\])?[^/\\]+)\Zr/  r0  s     r   test_translate_sepsGlobTests.test_translate_seps  s3    	^N+-JKF%BCr   )rC   r   )3__name__
__module____qualname____firstlineno__rC   r   r   r%   r@   r>   rP   rW   rq   r}   r   r   r   r   r   r   r   r   r   unittest
skipUnlesssysplatformr   r   r   r   r   r   r   r   r   hasattrr   skipIfr   r   r   r   r  r  r  r1  r:  r@  rF  __static_attributes__ r   r   r   r      s   FDH$$$
0d1:"A 	H<G,9& = = 3 3 02GH	) I	)O: 02GH& I&;@3C-J	0 X.0FG__S\\Y.;=8= H8 __W)+DE. F."3DBB[(X&
WDr   r   c                   D    \ rS rSr\R
                  " S5      S 5       rSrg)SymlinkLoopGlobTestsi  z
flaky testc           	         [         S-   n[        R                  " U5        U R                  [        R
                  U5        [        U5         [        R                  " S5        [        [        R                  R                  SS5      5        [        R                  " [        R                  [        R                  R                  SS5      5        [        R                  " SSS9nU R                  [        U5      [        [        U5      5      5        [        U5      nSnU(       a  [        R                  R                  " S/S/U-  -   6 nU R!                  XB5        UR#                  U5        U(       d  OP[        R                  R                  US5      nU R!                  XB5        UR#                  U5        US	-  nU(       a  M  [        R                  " [        R                  R                  SS5      SS9nU R                  [        U5      [        [        U5      5      5        [        U5      nSnU(       aY  [        R                  R                  " S/S/U-  -   S/-   6 nU R!                  XB5        UR#                  U5        US	-  nU(       a  MY  [        R                  " [        R                  R                  SS
5      SS9nU R                  [        U5      [        [        U5      5      5        [        U5      nSnU(       aY  [        R                  R                  " S/S/U-  -   S
/-   6 nU R!                  XB5        UR#                  U5        US	-  nU(       a  MY  S S S 5        g ! , (       d  f       g = f)Nr(   dirr$   linkrT   Tr   r   rS   r   )r   r   r!   
addCleanuprN   rO   r	   r   r   r   r=   ry   rW   rl   rV   rm   assertInremove)r   r   resultsr   r   s        r   test_selflink"SymlinkLoopGlobTests.test_selflink  sv   6/
Gw/ KKbggll5&9:JJryy"'',,uf"=>ii5GS\3s7|+<='lGEww||ug50@&@Bd,t$ww||D&1d,t$
 ' iiT6 :dKGS\3s7|+<='lGEww||ug50@&@F8&KMd,t$
	 ' iiT2 6$GGS\3s7|+<='lGEww||ug50@&@B4&GId,t$
	 'E !  s   E6M&CM&CM&&
M4rS  N)rH  rI  rJ  rK  rL  skipr]  rR  rS  r   r   rU  rU    s     ]]< * !*r   rU  __main__)rW   r   r  rN   rN  rL  r  test.supportr   r   test.support.os_helperr   r   r   r   r	   TestCaser   rU  rH  mainrS  r   r   <module>re     sz     	 	  
   *P PtD!! tDn 08,, 0 0f zMMO r   