
    dafD                         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                      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d Zed        Zed        Z ej.                  ej2                  dk(  d      d        Zd Zd Z ej.                  ej2                  dk(  d      d        Zd Zd Zd Z d Z!d Z" ej.                   e#e$d      d       ejJ                  ej2                  d k(  d!      d"               Z&d# Z'y)$	GlobTestsNc                     t         j                  j                  t        j                  j                  | j                  g|       S N)ospathnormpathjointempdir)selfpartss     )/root/Python-3.12.4/Lib/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             | j                          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_dirfdr   s    r   setUpz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                    | j                   t        j                  | j                          t        j                  t        j                  ht        j
                  k  ret        j                  t        j                  v rEt        j                  | j                  t        j                  t        j                  z        | _         y d | _         y r   )dir_fdr   closeopenstatsupports_dir_fdscandirsupports_fdr   O_RDONLYO_DIRECTORYr9   s    r   r8   zGlobTests.open_dirfd-   sp    ;;"HHT[[!GGRWW!3!33

bnn8T''$,,bnn0LMDKDKr   c                     | j                   t        j                  | j                          t        j                  | j
                         y r   )r<   r   r=   shutilrmtreer   r9   s    r   tearDownzGlobTests.tearDown5   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   rN   z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% 	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_noorderl   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*   *)rg   rN   r   rb   typestrr   r   r   curdirbytesrQ   )r   eqrX   rs       r   test_glob_literalzGlobTests.test_glob_literalr   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   )rL   )r<   )rb   rN   r   r   rQ   r<   r9   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)rg   rN   mapr   r   rp   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)rg   r   r   normcaserN   r   rz   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 )Nrj   r$   r#   rw   r0   r1   r2   z?a?*Fr,   r-   r%   r&   rg   rN   r   rz   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%   )rN   r   r   rT   rb   rM   assertInrc   r   rX   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   )	rN   r   rQ   r   rT   rb   rM   r   rc   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   rj   r/   r1   r   r,   r-   r%   r&   )rg   rN   r   r   r   rT   rz   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   rz   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   \\*\*\)rg   rN   rz   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   )rb   rN   escaper   rQ   )r   argr\   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[?]rj   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rN   r   r   rU   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'   rx   z*aar'   r(   rK   r(   )rg   r   r   )r   rp   lrf   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   rK   )rt   rt   c              3   D   K   | ]  }t         j                  f|z     y wr   )r   rn   ).0is     r   	<genexpr>z0GlobTests.test_recursive_glob.<locals>.<genexpr>#  s     )Iq299,*:)Is    )r#   rt   )r#   r0   rt   )r#   r0   r1   rt   )r,   rt   )r%   rt   )r6   rt   )r6   r1   rt   r#   r   r   r   r   r   r   za**r   r   r   r   r   r/   )r   r   r   r   r   r0   rj   Tr   zzz*Fr,   r-   z**zz*Fr6   ))r)   r*   )r)   r+   r   r   )r)   )r   r   )rg   r   r   r   r   rn   r   r   r   r   rN   )r   rp   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                    | j                   } || j                  d      | j                  d              || j                  dd      g         || j                  dd      g         || j                  dd      g         || j                  d      g         || j                  dd      g         || j                  dd      g         || j                  dd      g        y )Nr/   r   rt   rj   rK   nonexistent)rg   r   r   rz   s     r   test_glob_non_directoryz!GlobTests.test_glob_non_directoryT  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                    t         j                  j                  | j                  d      }t        j                  |       | j                          | j                  | j                  d      |g       | j                  | j                  d      |g       | j                  | j                  dd      g        | j                  | j                  dd      g        | j                  | j                  dd      g        y )Nmypipezmypipe*rt   subrj   )r   r   r   r   r   r8   rb   r   )r   r   s     r   test_glob_named_pipezGlobTests.test_glob_named_pipe_  s     ww||DLL(3
		$ 	H-v6I.7Hb126He4b9Hc2B7r   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drj   d   Tr   rK   )
r   r   r   r   r   rangerN   rO   rb   next)	r   depthr   rW   rV   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    r:   r8   rH   rN   rg   rr   ru   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	      sT   FDH$$$
0d1:"A 	H< " 	= 	= 3 3 X02GH	) I	)O: X02GH& I&;@3C-J	0 XX.0FGX__S\\Y.;=8= H8.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   linkrK   Tr   r   rJ   rt   )r   r   r   
addCleanuprF   rG   r   r   r   r   r7   rn   rN   rb   rM   rc   r   remove)r   r   resultsr   r   s        r   test_selflinkz"SymlinkLoopGlobTests.test_selflink  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     s    *r   r   __main__)rN   r   rF   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   