
    z%i?                         d dl Z d dlZd dlZd dlZd dlZd dlmZmZmZm	Z	m
Z
  G d dej                        Ze G d dej                               Zedk(  r ej                          yy)    N)TESTFNskip_unless_symlinkcan_symlinkcreate_empty_file
change_cwdc                   F   e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zd Zed        Zed        Z ej,                  ej0                  dk(  d      d        Zd Zd Z ej,                  ej0                  dk(  d      d        Zd Zd Zd Zd Z d Z!y)	GlobTestsNc                     t         j                  j                  t        j                  j                  | j                  g|       S N)ospathnormpathjointempdir)selfpartss     B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/test/test_glob.pynormzGlobTests.norm   s-    wwT\\ BE BCC    c                 |    |D cg c],  }t        j                  j                  | j                  g| . c}S c c}w r   )r   r   r   r   )r   tuplesr   s      r   joinszGlobTests.joins   s,    @FGuT\\2E2GGGs   19c                      | j                   | }t        j                  j                  |      \  }}t        j                  j	                  |      st        j
                  |       t        |       y r   )r   r   r   splitexistsmakedirsr   )r   r   filenamebasefiles        r   mktempzGlobTests.mktemp   sL    499e$WW]]8,
dww~~d#KK(#r   c                    t         dz   | _        | j                  dd       | j                  dd       | j                  dd       | j                  dd	       | j                  dd
       | j                  dd       | j                  d       | j                  d       | j                  ddd       | j                  dddd       t               rt	        j
                  | j                  d      | j                  d             t	        j
                  d| j                  d             t	        j
                  t        j                  j                  dd      | j                  d             t        j                  t        j                  ht        j                  k  ret        j                  t        j                  v rEt	        j                  | j                  t        j                  t        j                  z        | _        y d | _        y )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statsupports_dir_fdscandirsupports_fdO_RDONLYO_DIRECTORYdir_fdr   s    r   setUpzGlobTests.setUp   sQ   CE3E3E3E4 E6"EDC%Ct,=JJtyy*DIIf,=>JJx6!23JJrww||C/61BCGGRWW!3!33

bnn8T''$,,bnn0LMDKDKr   c                     | j                   t        j                  | j                          t        j                  | j
                         y r   )r?   r   closeshutilrmtreer   r@   s    r   tearDownzGlobTests.tearDown0   s,    ;;"HHT[[!dll#r   c           
      	   t        |      dk(  r|d   }nt        j                  j                  | }t        j                  j                  | j                  |      }t        j
                  |fi |}t        j                  |fi |}| j                  t        j                  |fi ||       |D cg c]  }t        j                  |       }}| j                  t        j
                  t        j                  |      fi ||       | j                  t        j                  t        j                  |      fi ||       t        | j                        5  t        j
                  |fi |}|D ]1  }| j                  t        j                  j                  |      |       3 |dk(  s|dt        j                  z   k(  r|dd  }	n|}	| j                  |D cg c],  }t        j                  j                  | j                  |      . c}|	       | j                  t        j                  |fi ||       t        j                  |      }
|D cg c]  }t        j                  |       }}| j                  t        j
                  |
fi ||       | j                  t        j                  |
fi ||       d d d        | j                  t        j
                  |fd| j                  i||       | j                  t        j                  |fd| j                  i||       t        j                  | j                        }| j                  t        j
                  
fd|i|       | j                  t        j                  |
fd|i||       | j                  | j                  t        j
                  |fd| j                  i||       | j                  t        j                  |fd| j                  i||       | j                  t        j
                  |
fd| j                  i||       | j                  t        j                  |
fd| j                  i||       |S c c}w c c}w c c}w # 1 sw Y   xY w)N   r   **root_dirr?   )lenr   r   r   r   globiglobassertCountEqualfsencoder   assertFalseisabssepr?   )r   r   kwargspatternpresres2xbresexpectedbpatternbres2btempdirs                r   rL   zGlobTests.glob5   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% 	I99W//D 6  q!1156$'TBFF]":qr7!!$"OQ277<<a#@"O"*,!!$**W"?"?F{{7+H-12R[[^2E2!!$))H"?"?G!!$**X"@"@%H	I  	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	I 	Is3   1Q(A?Q71Q-
AQ7Q2)AQ7-
Q77Rc                     t        |      }t        |      }| j                  t        |      t        |             | j                  t        |      t        |             y r   )listassertEqualsetsorted)r   l1l2s      r   assertSequencesEqual_noorderz&GlobTests.assertSequencesEqual_noorderg   sD    "X"XR#b'*VBZ0r   c                 V   | j                   } || j                  d      | j                  d      g        || j                  dd      | j                  dd      g        || j                  d      | j                  d      g        || j                  d      g        t        j                  d      }| j                  |D ch c]  }t	        |       c}t
        h       t        j                  t        j                  j                  t        j                  d            }| j                  |D ch c]  }t	        |       c}t
        h       t        j                  d      }| j                  |D ch c]  }t	        |       c}t        h       t        j                  t        j                  j                  t        j                  t        j                        d            }| j                  |D ch c]  }t	        |       c}t        h       y c c}w c c}w c c}w c c}w )Nr#   r$   r%   zymurgy*   *)re   rL   r   r`   typestrr   r   r   curdirbytesrO   )r   eqrV   rs       r   test_glob_literalzGlobTests.test_glob_literalm   sx   ..
499S>DIIcN+,
499S#3!4 56
499Udii./0
499Y$iin3/a$q'/#7iiRYY453/a$q'/#7iio3/a$q'/%9iiR[[%;TBC3/a$q'/%9 0/ 0/s   H2H5H!7H&c                 F   | j                  t        j                  d      g        | j                  t        j                  d      g        | j                  t        j                  d| j                        g        | j                  t        j                  dt        j                  | j                              g        | j                  t        j                  d| j
                        g        | j                  t        j                  d| j
                        g        y )N r   )rJ   )r?   )r`   rL   r   r   rO   r?   r@   s    r   test_glob_empty_patternz!GlobTests.test_glob_empty_pattern~   s    2+3,2=rB3T\\1JKRP2dkk:B?3t{{;R@r   c                 r   | j                   } || j                  d      t        | j                  g d              || j                  d      t        | j                  ddg              || j                  d      t        | j                  ddg              || j                  d	      t        | j                  dg              || j                  d
      t        | j                  ddg              || j                  d      t        | j                  ddg              || j                  d      g        y )Nza*)r#   r%   r,   *ar#   r,   z.*r'   r)   ?aazaa?r%   zaa[ab]z*q)re   rL   mapr   r   rn   s     r   test_glob_one_directoryz!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           	         | j                   }t        j                  j                  d      dk(  r- || j	                  ddd      | j                  ddd      g       n> || j	                  ddd      | j                  ddd      | j                  ddd      g        || j	                  ddd      | j                  ddd      g       y )NabCDr#   r0   zE*r/   r1   z*g)re   r   r   normcaserL   r   rx   s     r   test_glob_nested_directoryz$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   | j                   } || j                  dd      | j                  dd      g        || j                  dd      g         || j                  dddd      | j                  dddd      g        || j                  dd	      | j                  d
d      | j                  dd      g       y )Nrh   r$   r#   ru   r0   r1   r2   z?a?*Fr,   r-   r%   r&   re   rL   r   rx   s     r   test_glob_directory_namesz#GlobTests.test_glob_directory_names   s    ..
499S#3!4 56
499S$$
499S#sD)IIc5%./	1
499UD!DIIeV$<$(IIeS$9$; 	<r   c                    t        j                   | j                  d      t        j                  z         }| j	                  |g        t        j                   | j                  d      t        j                  z         }| j	                  |g        t        j                   | j                  d      t        j                  z         }| j	                  t        |      d       | j                  t        |      | j                  d      | j                  d      h| j                  d      t        j                  z   | j                  d      t        j                  z   hg       y NzZ*Zr.   zaa*   r,   r%   )rL   r   r   rR   r`   rK   assertInra   r   rV   s     r   'test_glob_directory_with_trailing_slashz1GlobTests.test_glob_directory_with_trailing_slash   s    ii		%(26612b!ii		%(26612b! ii		%(26612S1%c#hyy'5)9:yy'"&&0$))E2BRVV2KL! 	r   c           
         t        j                   t        j                  | j                  d      t        j                  z               }| j                  |g        t        j                   t        j                  | j                  d      t        j                  z               }| j                  |g        t        j                   t        j                  | j                  d      t        j                  z               }| j                  t        |      d       | j                  t        |      t        j                  | j                  d            t        j                  | j                  d            ht        j                  | j                  d      t        j                  z         t        j                  | j                  d      t        j                  z         hg       y r   )	rL   r   rO   r   rR   r`   rK   r   ra   r   s     r   -test_glob_bytes_directory_with_trailing_slashz7GlobTests.test_glob_bytes_directory_with_trailing_slash   s:    iiDIIe$4rvv$=>?b!iiDIIe$4rvv$=>?b!iiDIIe$4rvv$=>?S1%c#h{{499U#34{{499U#346{{499U#3bff#<={{499U#3bff#<=?! 	r   c           	      D   | j                   } || j                  d      | j                  d      g        || j                  dd      | j                  dd      | j                  dd      g       | j                  | j                  dt        j
                  z         | j                  d      g| j                  d      t        j
                  z   gg        || j                  dd      | j                  dd      | j                  dd	      | j                  dd      g       y )
Nr6   rh   r/   r1   r   r,   r-   r%   r&   )re   rL   r   r   r   rR   rx   s     r   test_glob_symlinkszGlobTests.test_glob_symlinks   s    ..
499Vtyy012
499VS!DIIfd$;$(IIfe$<$> 	?dii0		&)*TYYv->-G,HI	K
499S$IIeV$IIeS!499VT#:<	=r   c                 L   | j                   } || j                  d      | j                  d      | j                  d      | j                  d      g        || j                  d      | j                  d      g        || j                  d      | j                  d      g       y )Nzsym*r4   r5   r6   r   rx   s     r   test_glob_broken_symlinksz#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                    | j                   } |t        j                  d      g         |t        j                  d      g         |t        j                  d      g         |t        j                  d      g         |t        j                  d      dg        |t        j                  d      dg        |t        j                  d      g         |t        j                  d      g        y )	Nz*:s   *:z?:s   ?:z\\?\c:\s   \\?\c:\z\\*\*\s   \\*\*\)re   rL   rx   s     r   test_glob_magic_in_drivez"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                     | j                  t        j                  |      |       | j                  t        j                  t        j                  |            t        j                  |             y r   )r`   rL   escaper   rO   )r   argrZ   s      r   check_escapezGlobTests.check_escape   sF    S)84R[[%56H8MNr   c                     | j                   } |dd        |dd        |dd        |dd        |dd	        |d
d       y )Nabc[z[[]?z[?]rh   z[*]z[[_/*?*/_]]z[[][[]_/[*][?][*]/_]]z/[[_/*?*/_]]/z/[[][[]_/[*][?][*]/_]]/r   r   checks     r   test_escapezGlobTests.test_escape   sK    !!eUc5c5c5m45o89r   c                     | j                   } |dd        |dd        |dd        |dd        |d	d
        |dd       y )Nz?:?z?:[?]z*:*z*:[*]z\\?\c:\?z
\\?\c:\[?]z\\*\*\*z	\\*\*\[*]z//?/c:/?z
//?/c:/[?]z//*/*/*z	//*/*/[*]r   r   s     r   test_escape_windowszGlobTests.test_escape_windows   sI    !!eWeWk=)j,'j,'i%r   c                 *     | j                   |ddi|S )N	recursiveTrL   r   r   rS   s      r   rglobzGlobTests.rglob   s    tyy%:4:6::r   c                 *     | j                   |ddi|S )Ninclude_hiddenTr   r   s      r   hglobzGlobTests.hglob   s    tyy%????r   c                 
   | j                   }ddg} || j                  d       | j                  |         || j                  d       | j                  |        dg} || j                  dd       | j                  |        y )Nr,   r'   rv   z*aar'   r(   rI   r(   )re   r   r   )r   rn   lrd   s       r   test_hidden_globzGlobTests.test_hidden_glob  sw    ..x 
4::ejdjj!n-
4::ejdjj!n-^
4::dC *$**b/2r   c                 &
   | j                   }g d}t               r|g dz  } || j                  d       | j                  dg|         || j                  t        j
                  d       | j                  t        j
                  dfgd |D                g d}t               r|dd	gz  } || j                  dd       | j                  dg|         || j                  d
d      | j                  dddddd              || j                  d      | j                  ddd             ddg}t               r|dgz  } || j                  dd       | j                  |        g d}t               r|dgz  } || j                  dd       | j                  |         || j                  ddd      g         || j                  ddd      | j                  dd              || j                  d
dd      | j                  d             t        | j                        5  t        j                  j                  } |t        j                  dd      |D cg c]  } || 	 c}        |t        j                   |dd      d      |D cg c]  } || 	 c}        |t        j                   |dd      d      |D cg c]  } || 	 c}        |t        j                   |t        j
                  d      d       |t        j
                  d      g|D cg c]  } |t        j
                  g|  c}z           |t        j                   |t        j
                  dd      d       |t        j
                  d      g|D cg c]  } |t        j
                  g|  c}z           |t        j                   |t        j
                  dd      d      |D cg c]  } |t        j
                  g|  c}        |t        j                   |dd      d       |dd       g        |t        j                  d!d      g         |d
dd      dg}t               r| |d"d      gz  } |t        j                   |dd      d      |       g d#} |t        j                  ddd$      ||z   D cg c]  } || 	 c}       d d d        y c c}w c c}w c c}w c c}w c c}w c c}w c c}w # 1 sw Y   y xY w)%N)r/   )r.   r#   r#   r$   r#   r0   r#   r0   r/   r#   r0   r1   r#   r0   r1   r2   r   r,   r-   r%   r%   r&   ))r4   )r5   )r6   r6   r/   )r6   r1   )r6   r1   r2   rI   )rr   rr   c              3   D   K   | ]  }t         j                  f|z     y wr   )r   rl   ).0is     r   	<genexpr>z0GlobTests.test_recursive_glob.<locals>.<genexpr>  s     )Iq299,*:)Is    )r#   rr   )r#   r0   rr   )r#   r0   r1   rr   )r,   rr   )r%   rr   )r6   rr   )r6   r1   rr   r#   r   r   r   r   r   r   za**r   r   r   r   r   r/   )r   r   r   r   r   r0   rh   Tr   zzz*Fr,   r-   z**zz*Fr6   ))r)   r*   )r)   r+   r   r   )r)   )r   r   )re   r   r   r   r   rl   r   r   r   r   rL   )r   rn   fulldirsexpectr   r   recs           r   test_recursive_globzGlobTests.test_recursive_glob
  sO   .. =  D 	4::dZTZZ556
4::bii&DJJ		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.40Haq0HItyydB48#'(aq(*tyydCD9#'(aq(*tyybii.$?bii$%d(Kbii)<!)<(KKMtyybiir2dCbii$%d(Kbii)<!)<(KKMtyybiis3tD.23bii$!$35tyyd6*d;eV$%'tyyT2B73t,d3F}4-..tyydD)T:FCNCtyydC"&s(+Qa+--	- 	-0H(((K(K3 ,/	- 	-si   %7TS$(*TS)*TS.AT#S3ATS81;T,S=
B>TTT$#TTc                    d}t         j                  j                  | j                  d      }t        j                  j                  |gdg|z   }t        j                  |       t        j                  j                  |gdg|z   }t        d      D cg c]  }t        j                  |d       }}|D ]  }| j                  t        |      |        t         j                  j                  |dd      }t        d      D cg c]  }t        j                  |d       }}|}t        |      D ]D  }t         j                  j                  |d      }|D ]  }| j                  t        |      |        F y c c}w c c}w )	N   deepdrh   d   Tr   rI   )
r   r   r   r   r   rangerL   rM   r`   next)	r   depthr   rU   rT   jitersitr   s	            r   test_glob_many_open_filesz#GlobTests.test_glob_many_open_filesO  s<   ww||DLL&1GGLL.#u.
A'',,t4uU{4>CCjIGt4II 	*BT"Xq)	*'',,tT3/>CCjIGt4IIu 	.AQ$A .  b1-.	. J Js   E<F)"__name__
__module____qualname__r?   r   r   r    rA   rF   rL   re   rp   rs   ry   r}   r   r   r   r   r   r   unittest
skipUnlesssysplatformr   r   r   r   r   r   r   r   r    r   r   r	   r	      s    FDH$*$
0d1:"A 	H< " 	= 	= 3 3 X02GH	) I	)O: X02GH& I&;@3C-J.r   r	   c                       e Zd Zd Zy)SymlinkLoopGlobTestsc           	         t         dz   }t        j                  |       | j                  t        j
                  |       t        |      5  t        j                  d       t        t        j                  j                  dd             t        j                  t        j                  t        j                  j                  dd             t        j                  dd      }| j                  t        |      t        t        |                   t        |      }d}|rt        j                  j                  dgdg|z  z    }| j!                  ||       |j#                  |       |snKt        j                  j                  |d      }| j!                  ||       |j#                  |       |d	z  }|rt        j                  t        j                  j                  dd      d      }| j                  t        |      t        t        |                   t        |      }d}|rSt        j                  j                  dgdg|z  z   dgz    }| j!                  ||       |j#                  |       |d	z  }|rSt        j                  t        j                  j                  dd
      d      }| j                  t        |      t        t        |                   t        |      }d}|rSt        j                  j                  dgdg|z  z   d
gz    }| j!                  ||       |j#                  |       |d	z  }|rSd d d        y # 1 sw Y   y xY w)Nr"   dirr   linkrI   Tr   r   rH   rr   )r   r   r   
addCleanuprD   rE   r   r   r   r   r7   rl   rL   r`   rK   ra   r   remove)r   r   resultsr   r   s        r   test_selflinkz"SymlinkLoopGlobTests.test_selflinkd  s   6/
Gw/  &	KKbggll5&9:JJryy"'',,uf"=>ii5GS\3s7|+<='lGEww||ug50@&@BdG,t$ww||D&1dG,t$
  iiT6 :dKGS\3s7|+<='lGEww||ug50@&@F8&KMdG,t$
	  iiT2 6$GGS\3s7|+<='lGEww||ug50@&@B4&GIdG,t$
	 E&	 &	 &	s   
E(M3CM7CMMN)r   r   r   r   r   r   r   r   r   a  s    *r   r   __main__)rL   r   rD   r   r   test.support.os_helperr   r   r   r   r   TestCaser	   r   r   mainr   r   r   <module>r      sq     	  
 P PS.!! S.l
 ,8,, , ,^ zHMMO r   