
    dafjI                     0   d dl Z d dlZd dlZ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
 ddlmZ ddlmZ ddlmZmZ  G d d      Zd	 Zd
 Z ej*                  e       ej*                   eee            gZ edge      Z G d dej0                        Zy)    N)temp_dirFakePath   )compose)Counter)parameterizeInvokedc                        e Zd Z G d d      Zy)jaracoc                       e Zd ZeZy)jaraco.itertoolsN)__name__
__module____qualname__r        </root/Python-3.12.4/Lib/test/test_zipfile/_path/test_path.py	itertoolsr      s    r   r   N)r   r   r   r   r   r   r   r   r      s     r   r   c                     t         j                  j                  | j                               D ]  }| j	                  |d        | S )z}
    Given a writable zip file zf, inject directory entries for
    any directories implied by the presence of children.
    r   )zipfileCompleteDirs_implied_dirsnamelistwritestr)zfnames     r   add_dirsr      s=    
 $$222;;=A 
D#Ir   c                     t        j                         } t        j                  | d      }|j	                  dd       |j	                  dd       |j	                  dd       |j	                  dd	       |j	                  d
d       |j	                  dd       |j	                  dd       |j	                  dd       d|_        |S )u  
    Create a zip file with this structure:

    .
    ├── a.txt
    ├── b
    │   ├── c.txt
    │   ├── d
    │   │   └── e.txt
    │   └── f.txt
    ├── g
    │   └── h
    │       └── i.txt
    └── j
        ├── k.bin
        ├── l.baz
        └── m.bar

    This fixture has the following key characteristics:

    - a file at the root (a)
    - a file two levels deep (b/d/e)
    - multiple files in a directory (b/c, b/f)
    - a directory containing only a directory (g/h)
    - a directory with files of different extensions (j/klm)

    "alpha" because it uses alphabet
    "rep" because it's a representative example
    wa.txt   content of ab/c.txts   content of cz	b/d/e.txts   content of eb/f.txts   content of f	g/h/i.txts   content of ij/k.bins   content of kj/l.bazs   content of lzj/m.bars   content of malpharep.zip)ioBytesIOr   ZipFiler   filename)datar   s     r   build_alpharep_fixturer-   !   s    < ::<D	s	#BKK)KK	?+KK_-KK	?+KK_-KK	?+KK	?+KK	?+ BKIr   alpharepc            	       \   e Zd Zd Zd Zed        Zed        Zed        Zed        Z	ed        Z
d Zd	 Z ej                   eej"                  d
d       d      ed               Zd Zd Zed        Zd Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Zed        Z dZ!d Z"d Z#ed        Z$ed         Z%ed!        Z&ed"        Z'ed#        Z(ed$        Z)ed%        Z*ed&        Z+ed'        Z,ed(        Z-ed)        Z.ed*        Z/ed+        Z0ed,        Z1ed-        Z2ed.        Z3d/ Z4ed0        Z5ed1        Z6ed2        Z7ed3        Z8 e9g d4 e:jv                  e<e=e>gd5d6g            d7        Z?ed8        Z@ed9        ZAy:);TestPathc                     t        j                         | _        | j                  | j                  j                         y N)
contextlib	ExitStackfixtures
addCleanupclose)selfs    r   setUpzTestPath.setUpV   s(    ",,.++,r   c                 T   t        j                  | j                  j                  t	                           }|j
                  }|j                          ||j                  z  }|j                  d      5 }|j                  |j                                d d d        |S # 1 sw Y   |S xY w)Nwb)pathlibPathr5   enter_contextr   fpr7   r+   openwritegetvalue)r8   r.   tmpdirbufferpathstrms         r   zipfile_ondiskzTestPath.zipfile_ondiskZ   s~    dmm99(*EF)))YYt_ 	*JJv()	*	*s   3 BB'c                    t        j                  |      }|j                         sJ |j                         \  }}}}|j	                         sJ |j                         sJ |j                         sJ |j                         \  }}}	|j	                         r|j	                         sJ |	j                         \  }
|
j	                         sJ |j                         \  }|j                         \  }|j	                         sJ y r2   )r   r=   is_diriterdiris_file)r8   r.   rootabgjcfdehis                r   test_iterdir_and_typeszTestPath.test_iterdir_and_typesc   s    ||H%{{}}\\^
1ayy{{xxzzxxzz))+1ayy{qyy{**yy{yy{{yy{yy{yy{{r   c                 p    t        j                  |      }|j                  d      j                         rJ y )Nzmissing.txt)r   r=   joinpathrK   r8   r.   rL   s      r   test_is_file_missingzTestPath.test_is_file_missings   s.    ||H%==/779999r   c                     t        j                  |      }|j                         \  }}}}| j                  t              5  |j                          d d d        y # 1 sw Y   y xY wr2   )r   r=   rJ   assertRaises
ValueErrorr8   r.   rL   rM   rN   rO   rP   s          r   test_iterdir_on_filezTestPath.test_iterdir_on_filex   sO    ||H%\\^
1az* 	IIK	 	 	s    AA#c                     t        j                  |      }|dz  j                         sJ |dz  j                         sJ |dz  j                         sJ |dz  j                         sJ y )NrN   b/rO   zg/)r   r=   rI   rZ   s      r   test_subdir_is_dirzTestPath.test_subdir_is_dir   sh    ||H%s
""$$$t##%%%s
""$$$t##%%%r   c                 |   t        j                  |      }|j                         \  }}}}|j                  d      5 }|j	                         }d d d        | j                  d       |j                  dd      5 }|j	                         }d d d        | j                  |d       y # 1 sw Y   YxY w# 1 sw Y   (xY w)Nutf-8encodingcontent of ar)r   r=   rJ   r@   readassertEqual)	r8   r.   rL   rM   rN   rO   rP   rF   r,   s	            r   	test_openzTestPath.test_open   s    ||H%\\^
1aVVWV% 	99;D	~.VVC! 	T99;D	~.	 		 	s   B&:B2&B/2B;c                    t        j                         }t        j                  |d      }|j	                  ddj                  d             d|_        t        j                  |      }|j                         \  }|j                  d      }|j                  dd      5 }|j                         }d d d        dk(  sJ |j                  d      5 }|j                         }d d d        |dk(  sJ y # 1 sw Y   CxY w# 1 sw Y   xY w)	Nr   zpath/16.txtzThis was utf-16zutf-16ztest_open_utf16.zipz16.txtri   rf   )r(   r)   r   r*   r   encoder+   r=   rJ   rY   r@   rj   )r8   in_memory_filer   rL   rE   u16rF   r,   s           r   test_open_encoding_utf16z!TestPath.test_open_encoding_utf16   s    __^S1
M#4#;#;H#EF+||B,,.mmH%XXc8$ 	99;D	((((XXxX( 	D99;D	((((	 		 	s   C0C<0C9<Dc                    t        j                         }t        j                  |d      }|j	                  dd       d|_        t        j                  |      }|j                         \  }|j                  d      }|j                  dd      }|d	k(  sJ |j                  d
dd      5 }|j                         dk(  sJ 	 d d d        | j                  t        d      5  |j                  dd      }d d d        |j                  d
dd      5 }| j                  t              5  |j                          d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   axY w# 1 sw Y   *xY w# 1 sw Y   y xY w)Nr   zpath/bad-utf8.bins   invalid utf-8: .z"test_read_text_encoding_errors.zipzbad-utf8.binre   ignore)errorszinvalid utf-8: .ri   surrogateescapeu   invalid utf-8: .rg   rf   strict)rg   rt   )r(   r)   r   r*   r   r+   r=   rJ   rY   	read_textr@   rj   assertRaisesRegex	TypeErrorr]   UnicodeDecodeError)r8   ro   r   rL   rE   rp   r,   rR   s           r   test_open_encoding_errorsz"TestPath.test_open_encoding_errors   sU   __^S1
')DE:||B,,.mmN+ }}WX}6))))XXc7+<X= 	>668====	> ##Iz: 	<==7=;D	< XXcGHX= 	""#56 	 		> 	>	< 	< 	 	s<   *EEE+%E6E+EEE(	$E++E4warn_default_encodingr   zRequires warn_default_encodingc                    t         j                  j                  sJ t        j                  |      }| j                  t              5 }|j                  d      j                          ddd       t        j                  k(  sJ | j                  t              5 }|j                  d      j                  d      j                          ddd       t        |j                  k(  sJ y# 1 sw Y   xY w# 1 sw Y   +xY w)z8EncodingWarning must blame the read_text and open calls.r    Nri   )sysflagsr|   r   r=   assertWarnsEncodingWarningrY   rw   __file__r+   r@   r7   )r8   r.   rL   wcs       r   test_encoding_warningszTestPath.test_encoding_warnings   s     yy....||H%o. 	/"MM'",,.	/2;;&&&o. 	5"MM'"'',224	52;;&&&	/ 	/	5 	5s    C&/C2&C/2C;c                    t        j                  t        j                  t        j                         d            }|j                  d      j                  d      5 }|j                  d       ddd       |j                  d      j                  dd	      5 }|j                  d
       ddd       y# 1 sw Y   FxY w# 1 sw Y   yxY w)zo
        If the zipfile is open for write, it should be possible to
        write bytes or text to it.
        r   )modezfile.binr;   s   binary contentsNzfile.txtre   rf   z	text file)r   r=   r*   r(   r)   rY   r@   rA   )r8   r   rF   s      r   test_open_writezTestPath.test_open_write   s    
 \\'//"**,SAB[[$))$/ 	+4JJ)*	+[[$))#)@ 	$DJJ{#	$ 	$	+ 	+	$ 	$s   B4C 4B= C	c                     t        j                  t        t                           }| j	                  t
              5  |j                  d      j                          ddd       y# 1 sw Y   yxY w)zJ
        Attempting to open a directory raises IsADirectoryError.
        rN   N)r   r=   r   r-   r]   IsADirectoryErrorrY   r@   r8   r   s     r   test_open_extant_directoryz#TestPath.test_open_extant_directory   T     \\(#9#;<=01 	$KK!!#	$ 	$ 	$    A%%A.c                 \   t        j                  |      }| j                  t              5  |j	                  d      j                  dd       d d d        | j                  t              5  |j	                  d      j                  dd       d d d        y # 1 sw Y   IxY w# 1 sw Y   y xY w)Nr    rbre   rf   )r   r=   r]   r^   rY   r@   rZ   s      r   test_open_binary_invalid_argsz&TestPath.test_open_binary_invalid_args   s    ||H%z* 	@MM'"''w'?	@z* 	7MM'"''g6	7 	7	@ 	@	7 	7s   #B+"B"B"B+c                     t        j                  t        t                           }| j	                  t
              5  |j                  d      j                          ddd       y# 1 sw Y   yxY w)zR
        Attempting to open a missing directory raises FileNotFoundError.
        zN)r   r=   r   r-   r]   FileNotFoundErrorrY   r@   r   s     r   test_open_missing_directoryz$TestPath.test_open_missing_directory   r   r   c                     t        j                  |      }|j                         \  }}}}|j                  d      dk(  sJ |j                  d      dk(  sJ |j	                         dk(  sJ y )Nre   rf   rh   r!   )r   r=   rJ   rw   
read_bytesr_   s          r   	test_readzTestPath.test_read   sg    ||H%\\^
1a{{G{,>>>{{7#~555||~000r   c                     t        j                  |      }|j                  d      }|j                         sJ |j                  d      j                  d      j                  d      }|j	                  d      dk(  sJ y Nr    rN   rS   e.txtre   rf   content of e)r   r=   rY   rK   rw   r8   r.   rL   rM   rT   s        r   test_joinpathzTestPath.test_joinpath   si    ||H%MM'"yy{{MM#'',55g>{{G{,>>>r   c                     t        j                  |      }|j                  ddd      }|j                  d      dk(  sJ y )NrN   rS   r   re   rf   r   )r   r=   rY   rw   )r8   r.   rL   rT   s       r   test_joinpath_multiplezTestPath.test_joinpath_multiple   s;    ||H%MM#sG,{{G{,>>>r   c                     t        j                  |      }|dz  }|j                         sJ |dz  dz  dz  }|j                  d      dk(  sJ y r   )r   r=   rK   rw   r   s        r   test_traverse_truedivzTestPath.test_traverse_truediv  sS    ||H%7Nyy{{3Jw&{{G{,>>>r   c                 x    | j                  |      }t        t        |            }t        j                  |       y)zN
        zipfile.Path should be constructable from a path-like object
        N)rG   r   strr   r=   )r8   r.   rG   pathlikes       r   test_pathlike_constructionz#TestPath.test_pathlike_construction  s/    
 ,,X6C/0Xr   c                 J    t        j                  |      }|t        d      z   y )NrM   )r   r=   r   rZ   s      r   test_traverse_pathlikezTestPath.test_traverse_pathlike  s    ||H%x}r   c                     t        j                  |      }|dz  j                  j                  dk(  sJ |dz  dz  j                  j                  dk(  sJ y )NrM    rN   za/r   r=   parentatrZ   s      r   test_parentzTestPath.test_parent  sQ    ||H%s
""%%+++s
S ((++t333r   c                     t        j                  |      }|dz  j                  j                  dk(  sJ |dz  j                  j                  dk(  sJ y )NrN   r   rb   r   rZ   s      r   test_dir_parentzTestPath.test_dir_parent   sL    ||H%s
""%%+++t##&&",,,r   c                 j    t        j                  |      }|dz  j                  j                  dk(  sJ y )Nzmissing dir/r   r   rZ   s      r   test_missing_dir_parentz TestPath.test_missing_dir_parent&  s/    ||H%~%--00B666r   c                 p   t        j                  |      }|j                         \  }}}}|j                  dd       |j                  dd       t	        d |j                         D              sJ |dz  j                  d      dk(  sJ |dz  j                         \  }|j                  d      dk(  sJ y	)
zk
        If the underlying zipfile is changed, the Path object should
        reflect that change.
        foo.txtfoozbar/baz.txtbazc              3   :   K   | ]  }|j                   d k(    yw)r   N)r   ).0childs     r   	<genexpr>z+TestPath.test_mutability.<locals>.<genexpr>5  s     Gu5::*Gs   re   rf   barN)r   r=   rJ   r   anyrw   )r8   r.   rL   rM   rN   rO   rP   r   s           r   test_mutabilityzTestPath.test_mutability+  s     ||H%\\^
1a)U+-/GGGGGy ++W+=FFF,'')}}g}.%777r   i    c                     t        j                         }t        j                  |d      }t	        t
        t        | j                              D ]  }|j                  ||        d|_	        |S )zACreate a read-only zipfile with a huge number of entries entries.r   ri   )
r(   r)   r   r*   mapr   rangeHUGE_ZIPFILE_NUM_ENTRIESr   r   )r8   rF   r   entrys       r   huge_zipfilezTestPath.huge_zipfile<  sX    zz|__T3'eD$A$ABC 	&EKKu%	&	r   c                 
   t        j                  | j                               }t        j                  j                  |j                               }|D ]  }|j                  d        |j                  | j                  k(  sJ y)zE
        Ensure joinpath on items in zipfile is linear time.
        suffixN)
r   r=   r   r   r   r   rJ   rY   countr   )r8   rL   entriesr   s       r   test_joinpath_constant_timez$TestPath.test_joinpath_constant_timeE  sl     ||D--/0""**4<<>: 	%ENN8$	% }} = ====r   c                     | j                  |      }t        j                  |      5 }t        d      D ](  }t        j                  |d      j                  d       * 	 d d d        y # 1 sw Y   y xY w)N   r    re   rf   )rG   r   r*   r   r=   rw   )r8   r.   filereps       r   test_read_does_not_closez!TestPath.test_read_does_not_closeP  sj    &&x0__X& 	H$Qx HT7+55w5GH	H 	H 	Hs   7A((A1c                 h     G d dt         j                        } ||      }t        |dz  |      sJ y )Nc                       e Zd Zy)(TestPath.test_subclass.<locals>.SubclassN)r   r   r   r   r   r   Subclassr   Y  s    r   r   rN   )r   r=   
isinstance)r8   r.   r   rL   s       r   test_subclasszTestPath.test_subclassW  s2    	w|| 	 !$*h///r   c                 v    t        j                  |      }|j                  t        j                  d      k(  sJ y )Nr'   )r   r=   r+   r<   rZ   s      r   test_filenamezTestPath.test_filename_  s+    ||H%}}^ <<<<r   c                     t        j                  |      }|j                  dcxk(  r|j                  j                  k(  sJ  J y)zH
        The name of the root should be the name of the zipfile
        r'   N)r   r=   r   r+   rZ   s      r   test_root_namezTestPath.test_root_named  s9    
 ||H%yyN@dmm.@.@@@@@@r   c                    t        j                  |      }|j                  dcxk(  r|j                  j                  k(  sJ  J |dz  }|j                  dk(  sJ |dz  dz  }|j                  dk(  sJ |dz  }|j                  dk(  sJ y	)

        The suffix of the root should be the suffix of the zipfile.
        The suffix of each nested file is the final component's last suffix, if any.
        Includes the leading period, just like pathlib.Path.
        .zipb.txt.txtrQ   filename.tar.gz.gzrS   r   N)r   r=   r   r+   r8   r.   rL   rN   rQ   rS   s         r   test_suffixzTestPath.test_suffixl  s     ||H%{{f<(<(<<<<<<7Nxx6!!!3J**xx5   3Jxx2~~r   c                 H   t        j                  |      }|j                  dgcxk(  r|j                  j                  k(  sJ  J |dz  }|j                  dgk(  sJ |dz  dz  }|j                  ddgk(  sJ |dz  }|j                  g k(  sJ |d	z  }|j                  g k(  sJ y
)r   r   r   r   rQ   r   z.tarr   rS   z.hgrcN)r   r=   suffixesr+   )r8   r.   rL   rN   rQ   rS   rT   s          r   test_suffixeszTestPath.test_suffixes  s     ||H%}}BDMM,B,BBBBBB7NzzfX%%%3J**zzfe_,,,3JzzR7NzzRr   c                     d |_         t        j                  |      }|j                  d      j                  dk(  sJ |j                  d      j
                  g k(  sJ y )Nexampler   )r+   r   r=   rY   r   r   rZ   s      r   test_suffix_no_filenamez TestPath.test_suffix_no_filename  sR     ||H%}}Y'.."444}}Y'00B666r   c                 <   t        j                  |      }|j                  dcxk(  r|j                  j                  k(  sJ  J |dz  }|j                  dk(  sJ |dz  dz  }|j                  dk(  sJ |dz  }|j                  dk(  sJ |dz  j                  dk(  sJ y	)
z>
        The final path component, without its suffix
        r.   r   rN   rQ   r   zfilename.tarrS   z
.gitignoreN)r   r=   stemr+   r   s         r   	test_stemzTestPath.test_stem  s    
 ||H%yyJ<$--*<*<<<<<<7Nvv}}3J**vv'''3Jvv}}|#))\999r   c                     t        j                  |      }|j                  t        j                  d      k(  sJ d|j                  _        |j                  t        j                  d      k(  sJ y )N.zfoo/bar.zipr   )r   r=   r   r<   rL   r+   rZ   s      r   test_root_parentzTestPath.test_root_parent  sR    ||H%{{gll3////*		{{gll51111r   c                 \   d|_         t        j                  |      }| j                  t              5  |j
                   ddd       | j                  t              5  |j                   ddd       |dz  }|j
                  dk(  sJ |j                  sJ y# 1 sw Y   XxY w# 1 sw Y   :xY w)zd
        It is an error to attempt to get the name
        or parent of an unnamed zipfile.
        NrN   )r+   r   r=   r]   ry   r   r   )r8   r.   rL   subs       r   test_root_unnamedzTestPath.test_root_unnamed  s     !||H%y) 	II	y) 	KK	 Sjxx3zzz	 		 	s   BB"B"B+c                 N   t        j                  |      }|j                  d      rJ t        |j	                  d            t        j                  |d      gk(  sJ t        |j	                  d            t        j                  |d      t        j                  |d      gk(  sJ y )N*.txtzb/c.*r"   zb/*.txtr#   )r   r=   matchlistglobrZ   s      r   test_match_and_globzTestPath.test_match_and_glob  s    ||H%::g&&&DIIg&'GLL9,M+NNNNDIIi()LL9-LL9-.
 
 	
 
r   c                     t        j                  |      }|j                  d      }t        d |D              sJ t	        |j                  d            t	        |j                  d            k(  sJ y )Nz**/*.txtc              3   >   K   | ]  }|j                  d         yw)r   N)r   )r   eachs     r   r   z/TestPath.test_glob_recursive.<locals>.<genexpr>  s     944::g&9s   r   )r   r=   r   allr   rglob)r8   r.   rL   filess       r   test_glob_recursivezTestPath.test_glob_recursive  s\    ||H%		*%959999DIIj)*d4::g3F.GGGGr   c                     t        j                  |      }t        |j                  d            g k(  sJ t        |j	                  d            t        j                  |d      gk(  sJ y )Nz*/i.txtr$   )r   r=   r   r   r   rZ   s      r   test_glob_subdirszTestPath.test_glob_subdirs  sV    ||H%DIIi()R///DJJy)*w||Hk/R.SSSSr   c                 l    t        j                  |      }t        |j                  d            g k(  sJ y )Nz*.xtr   r=   r   r   rZ   s      r    test_glob_does_not_overmatch_dotz)TestPath.test_glob_does_not_overmatch_dot  s,    ||H%DIIf%&",,,r   c                 <   t        j                  |      }t        |j                  d            t        j                  |d      gk(  sJ t        |j                  d            t        j                  |d      gk(  sJ t        |j                  d            g k(  sJ y )Nza?txtr    za[.]txtza[?]txtr   rZ   s      r   test_glob_single_charzTestPath.test_glob_single_char  s    ||H%DIIg&'GLL7,K+LLLLDIIi()gll8W.M-NNNNDIIi()R///r   c                     t        j                  |      }t        |j                  d            t        j                  |d      t        j                  |d      gk(  sJ y )Nzj/?.b[ai][nz]r%   r&   r   rZ   s      r   test_glob_charszTestPath.test_glob_chars  sQ    ||H%DIIo./LL9-LL9-4
 
 	
 
r   c                     t        j                  t        j                  t        j                         d            }| j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   r   )r   r=   r*   r(   r)   r]   r^   r   )r8   rL   s     r   test_glob_emptyzTestPath.test_glob_empty  sO    ||GOOBJJL#>?z* 	IIbM	 	 	s   A,,A5c                     t        j                  |      }|t        j                  |      k(  sJ ||dz  k7  sJ |dz  |dz  k(  sJ t        j                  |      }||hv sJ y )Nr    )r   r=   rZ   s      r   test_eq_hashzTestPath.test_eq_hash  sk    ||H%w||H----w'''wD7N333||H%v~~r   c                 R    t        j                  |      }|j                         rJ y)zR
        See python/cpython#82102 for symlink support beyond this object.
        N)r   r=   
is_symlinkrZ   s      r   test_is_symlinkzTestPath.test_is_symlink	  s%     ||H%??$$$$r   c                     t        j                  |      }|j                  dd      j                  |dz        }t	        |      dk(  sJ |j                  ddd      j                  |dz        }t	        |      dk(  sJ y )NrN   zc.txtrS   r   zd/e.txt)r   r=   rY   relative_tor   )r8   r.   rL   relatives       r   test_relative_tozTestPath.test_relative_to  st    ||H%==g.::4#:F8}'''==c73??s
K8}	)))r   c                     t        dt        j                  fi       } ||      j                  d      j                  }t        ||      sJ y )N	PathChildzsome dir)typer   r=   rY   r   r   )r8   r.   clsr   s       r   test_inheritancezTestPath.test_inheritance  s@    ;48}%%j188$$$$r   )r.   	path_typesubpathr   rb   c                 ,    |t        | j                  |                  }t        j                  t	        j
                  ||            }t        j                  |      }|j                         ^}}|j                  d      j                  d      sJ y )N)r   re   rf   zcontent of )
r   rG   pickledumpsr   r=   loadsrJ   rw   
startswith)	r8   r.   r  r  rG   saved_1
restored_1firstrests	            r   test_picklezTestPath.test_pickle!  sv     #3t':':8'D#EF,,w||NwGH\\'*
!))+0;;MJJJr   c                     | j                  |      }t        j                  |      }t        j                  |       |j	                  |j
                         y)zU
        A zip file wrapped in a Path should extract even with implied dirs.
        N)rG   r   r*   r=   
extractallr   )r8   r.   source_pathr   s       r   #test_extract_orig_with_implied_dirsz,TestPath.test_extract_orig_with_implied_dirs1  s@    
 ))(3__[)R
k(()r   c                     t        j                  |       | j                  t              5  |j	                  d       ddd       y# 1 sw Y   yxY w)zR
        Validate behavior of getinfo on original zipfile after wrapping.
        zdoes-not-existN)r   r=   r]   KeyErrorgetinfo)r8   r.   s     r   test_getinfo_missingzTestPath.test_getinfo_missing<  sB    
 	Xx( 	/-.	/ 	/ 	/s   AAN)Br   r   r   r9   rG   pass_alphareprW   r[   r`   rc   rl   rq   r{   unittestskipIfgetattrr~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r   r   productalpharep_generatorsr   r   r   r$  r(  r   r   r   r0   r0   U   s   -   : :   & & / /)2 X__CII6::( 	' 	
	'	$$ 7 7$ 1 1 ? ? ? ?
 ? ?     4 4
 - -
 7 7 8 8  %	> H H 0 0 = = A A  $    * 7 7 : :$ 2 2  " 
 
 H H T T - -
 0 0 
 

   % % * * % %
 ,	(OJ	
KK * * / /r   r0   )r(   r   r3   r<   r  r~   r*  r   test.support.os_helperr   r   
_functoolsr   
_itertoolsr   _test_paramsr   r	   r   r   r-   wrapr.  r)  TestCaser0   r   r   r   <module>r5     s    	     
   5   / 
)Z GLL'(GLL#9:; 
 j\+>?n/x   n/r   