
    7bh                        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Zd dl	Z	d dl
mZ d dlmZ d dlmZ d dlmZmZmZm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mZ 	 d dlZdZ e edd	      Z!d
Z"d Z#d Z$ ej                         Z% e#e!e% e&e            Z'dZ(dZ)dZ*dZ+dZ,dZ-ej\                  j_                  d      Z0ej\                  j_                  d      Z1ejd                  jg                  e(dz         Z4dZ5 G d dejl                        Z7 G d de7      Z8 ejr                          G d de8             Z: G d dejl                        Z;d Z<e=d k(  r ej|                          yy# e$ r dZY w xY w)!    N)support)import_helper)	os_helper)ZipFileZipInfo
ZIP_STOREDZIP_DEFLATED)
extract_tbextract_stackprint_tbzHdef get_name():
    return __name__
def get_file():
    return __file__
<???>execz def do_raise(): raise TypeError
c                     t        j                  |       }t        j                  j                  t        j                  ddt        |      dz  |dz        z   |z   }|S )Nz<iLLr       )marshaldumps	importlibutilMAGIC_NUMBERstructpackint)comtimesizedatapycs        =/opt/python-3.12.12/usr/lib/python3.12/test/test_zipimport.pymake_pycr   &   sY    ==D>>&&FAJ,d[.@	BBDHIC J    c                 B    | j                  t        j                  d      S )N.)replaceossep)paths    r   module_path_to_dotted_namer'   -   s    <<$$r    ziptestmoduleziptestmodule2ziptestmodule3ziptestpackageziptestpackage2ziptestpackage3	junk95142zjunk95142.zip.py.pycc                       e Zd Zd Zd Zy)ImportHooksBaseTestCasec                    t         j                  d d  | _        t         j                  d d  | _        t         j                  d d  | _        t         j                  j                          t        j                         | _        y N)	sysr&   	meta_path
path_hookspath_importer_cacheclearr   modules_setupmodules_beforeselfs    r   setUpzImportHooksBaseTestCase.setUpC   sT    HHQK	q)..+%%'+99;r    c                 &   | j                   t        j                   d d  | j                  t        j                  d d  | j                  t        j                  d d  t        j                  j                          t        j                  | j                    y r4   )	r&   r5   r6   r7   r8   r9   r   modules_cleanupr;   r<   s    r   tearDownz ImportHooksBaseTestCase.tearDownJ   s]    ii>>a OOq%%'%%t':':;r    N)__name__
__module____qualname__r>   rA    r    r   r2   r2   A   s    <<r    r2   c                      e Zd ZeZd ZefdZefddddddZ	ddddZ
dd	d
Zd Zd Zd Zd Zd Zej$                  j'                  dd      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$d# Z%d$ Z&d% Z'd& Z(d' Z)d( Z*d) Z+d* Z,d+ Z-d, Z.d- Z/ ej`                  e1jd                  du d.      d/        Z3d0 Z4d1 Z5d2 Z6d3 Z7y)4UncompressedZipImportTestCasec                     t        j                          t        j                  j	                          t
        j                  |        y r4   )	linecache
clearcache	zipimport_zip_directory_cacher9   r2   r>   r<   s    r   r>   z#UncompressedZipImportTestCase.setUpV   s0     	&&,,.%%d+r    c                    | j                  t        j                  |       |j                         D ]  \  }}t	        |t
              r|\  }}t        j                  j                  |g|j                  d       }|d   t        j                  k(  r6t        j                  j                  |      rt        j                  |       t        j                  j                  |      }t        j                  j                  |      st        j                  |       t        |d      5 }|j                  |       d d d         y # 1 sw Y   xY w)N/wb)
addCleanupr   rmtreeitems
isinstancetupler$   r&   joinsplitr%   isdirmakedirsdirnameopenwrite)	r=   filesdirNamenamer   r   r&   dnamefps	            r   makeTreez&UncompressedZipImportTestCase.makeTree]   s     		(('2++-JD$$&"t77<<:$**S/:DBx266!ww}}T*KK%-ww}}U+KK&$%HHTN &% ( &%s   'EE	N )commentfile_commentstuffprefixc                   | j                  t        j                  |       t        |d| j                        5 }| j                  ||||       |||_        d d d        |]t        |d      5 }	|	j                         }
d d d        t        |d      5 }	|	j                  |       |	j                  
       d d d        y y # 1 sw Y   ixY w# 1 sw Y   NxY w# 1 sw Y   y xY w)Nwcompressionre   rg   rbrP   )
rQ   r   unlinkr   rk   writeZiprd   r[   readr\   )r=   r]   zipNamerd   re   rf   rg   kwzfr   s              r   makeZipz%UncompressedZipImportTestCase.makeZipp   s    
 		(('2Wct/?/?@AMM!UfMM"#	 A
 gt$vvx %gt$ %$	  A@ %$$$s#   C .C#C C	CC!rl   c                ~   |j                         D ]  \  }}t        |t              r|\  }}nt        }|j	                  t
        j                  d      }t        ||z   t        j                  |            }| j                  |_        |||_        |d|_        |j                  |       |j                  ||        y )NrN   r   )rS   rT   rU   NOWr#   r$   r%   r   time	localtimerk   compress_typerd   CRCmkdirwritestr)	r=   rs   r]   re   rg   r_   r   r   zinfos	            r   ro   z&UncompressedZipImportTestCase.writeZip   s    ++-JD$$&"t<<,DFTM4>>%+@AE"&"2"2E' ,|	 

5$' (r    callc                   d|vrd|d<   |d   } | j                   |fi | t        j                  j                  t        g|j                  d      d d  }t        j                  j                  d|       t        j                  dj                  |            }| ||       |rD|j                         }	| j                  |	t        j                  j                  |g| |z          y y )Nrg   zpre/fix/rN   rO   r   r"   )ru   r$   r&   rV   TEMP_ZIPrW   r5   insertr   import_moduleget_fileassertEqual)
r=   expected_extr]   r   modulesrr   rg   zip_pathmodfiles
             r   doTestz$UncompressedZipImportTestCase.doTest   s    2%BxLHU!b!77<<B6<<+<Sb+AB8$%%chhw&78I<<>DT277<< $+")$+-9$: ; r    c                 |   dt         j                  v r| j                  d       dt         j                  v rt         j                  d= dt        i}	 | j                  d|d       | j                  t        k7  r| j                  d       y y # t        $ r) | j                  t        k7  r| j                  d       Y y Y y w xY w)Nzlibzzlib is a builtin modulezzlib.pyr/   z"expected test to raise ImportErrorz&expected test to not raise ImportError)r5   builtin_module_namesskipTestr   test_srcr   rk   r   failImportErrorr	   r=   r]   s     r   testAFakeZlibz+UncompressedZipImportTestCase.testAFakeZlib   s    & S---MM45S[[ F#H%	@KKuf-
 :-		>? .	  	D</		BC 0	Ds   B	 	-B;:B;c                 P    t         dz   t        i}| j                  d|t                y Nr/   TESTMODr   r   r   s     r   testPyz$UncompressedZipImportTestCase.testPy   s     5(+E5'*r    c                 `    t         t        z   t        i}| j                  t        |t                y r4   )r   pyc_exttest_pycr   r   s     r   testPycz%UncompressedZipImportTestCase.testPyc   s!    7"H-GUG,r    c                 z    t         dz   t        t         t        z   t        i}| j	                  t        |t                y r   )r   r   r   r   r   r   s     r   testBothz&UncompressedZipImportTestCase.testBoth   s,    5(7"H.GUG,r    c                 "    d}t         j                  j                  |      }t         j                  j	                  t        |dd      |d      }t        dz   t        dft        dz   t        dz
  |fi} fd	} j                  d |t        |
       y )N   state = 'old'???r   Fr/   state = 'new'r0      c                 >    j                  | j                  d       y )Noldr   stater   r=   s    r   checkzFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check       SYY.r    r   	r   r   source_hash_bootstrap_external_code_to_hash_pyccompiler   rw   r   r=   sourcer   bytecoder]   r   s   `     r   testUncheckedHashBasedPycz7UncompressedZipImportTestCase.testUncheckedHashBasedPyc   s    !nn00800BBFE6*

 53"86!C"Hh#79	/D%u5r    z_imp.check_hash_based_pycsalwaysc                 "    d}t         j                  j                  |      }t         j                  j	                  t        |dd      |d      }t        dz   t        dft        dz   t        dz
  |fi} fd	} j                  d |t        |
       y )Nr   r   r   Fr/   r   r0   r   c                 >    j                  | j                  d       y )Nnewr   r   s    r   r   zOUncompressedZipImportTestCase.test_checked_hash_based_change_pyc.<locals>.check   r   r    r   r   r   s   `     r   "test_checked_hash_based_change_pycz@UncompressedZipImportTestCase.test_checked_hash_based_change_pyc   s    !nn00800BBFE6*

 53"86!C"Hh#79	/D%u5r    c                 H    t         dz   di}| j                  d |t                y )Nr/   rc   )r   r   r   s     r   testEmptyPyz)UncompressedZipImportTestCase.testEmptyPy   s     5"%D%)r    c                     t        t              }|dxx   dz  cc<   t        dz   t        t        t        z   |i}| j                  d|t               y )Nr      r/   	bytearrayr   r   r   r   r   )r=   badmagic_pycr]   s      r   testBadMagicz*UncompressedZipImportTestCase.testBadMagic   sD     *Q45(7"L2E5'*r    c                 x   t        t              }|dxx   dz  cc<   t        t        z   |i}	 | j	                  d|t               | j                  d       y # t        j                  $ rP}| j                  |j                  t               | j                  d|j                  j                         Y d }~y d }~ww xY w)Nr   r   r/   zThis should not be reachedzmagic number)r   r   r   r   r   r   rK   ZipImportErrorassertIsInstance	__cause__r   assertInmsg)r=   r   r]   excs       r   testBadMagic2z+UncompressedZipImportTestCase.testBadMagic2   s     *Q47"L1	=KKug.II23'' 	=!!#--=MM.#--*;*;<<	=s   (A B9)AB44B9c                     t        t              }|dxx   dz  cc<   t        dz   t        t        t        z   |i}| j                  d|t               y )N      r/   r   )r=   badtime_pycr]   s      r   testBadMTimez*UncompressedZipImportTestCase.testBadMTime  sF    ) 	B45(7"K1E5'*r    c                     t        t        dt        t                    }t        dz   t        t        t
        z   |i}| j                  d|t               y )Nr   r/   )r   test_colenr   r   r   r   )r=   twenty_thirty_eight_pycr]   s      r   test2038MTimez+UncompressedZipImportTestCase.test2038MTime  sB     #+7Is8}"M5(7"$;=E5'*r    c                     t         t        j                  z   }|dz   t        z   t        |t
        z   t        z   t        i}| j                  t        |t         t
               y N__init__)TESTPACKr$   r%   r   r   r   r   )r=   packdirr]   s      r   testPackagez)UncompressedZipImportTestCase.testPackage  sG    RVV#:%/7"W,h8GUHg6r    c                    t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        |dz   t        z   t
        |t        z   t        z   t
        i}| j                  t        |t         t        t               y r   )r   r$   r%   	TESTPACK2r   r   r   r   r=   r   packdir2r]   s       r   testSubPackagez,UncompressedZipImportTestCase.testSubPackage#  so     RVV#Y&/:%/J&0(G#g-x9 	GUHiAr    c                     t         t        j                  z   }|t        z   t        j                  z   }|d |d |t        z   t
        z   t        i}| j                  t
        |t         t        t               y r4   )r   r$   r%   r   r   r   r   r   r   s       r   testSubNamespacePackagez5UncompressedZipImportTestCase.testSubNamespacePackage-  s[     RVV#Y&/$4G#g-x9 	GUHiAr    c                 ~   t         t        j                  z   }|t        z   t        j                  z   }|t        z   t        j                  z   }|d |t
        z   t        z   t        |d |d |t
        z   t        z   t        |t        z   t        z   t        |t
        z   t        z   t        i}|d |t        z   t        z   t        |d |t        z   t        z   t        |t
        z   t        z   t        i}t        j                  j                  d      }| j                  ||       t        }| j                  ||       t        j                  j!                  d|       t        j                  j!                  d|       t#        j$                  t               }| j'                  dt)        |j*                               |j*                  \  }	}
| j'                  t        j                  j-                  t              |	j/                  t        j                        d          | j'                  d|
j/                  t        j                        d          t#        j$                  |j1                  t        j                  d      d d       }| j'                  dt)        |j*                               t3        |j*                        d   j/                  dt        j                  z         d   }| j'                  |d d |       t#        j$                  dj5                  t         t
        f            }| j'                  d|j6                  j/                  t        j                        d          t#        j$                  dj5                  t         t        f            }| j'                  t        j                  j-                  t              |j6                  j/                  t        j                        d          dj5                  t         t        f      }t#        j$                  |      }| j'                  dt)        |j*                               |j*                  \  }	}
| j'                  t        j                  j-                  t              |	j/                  t        j                        d          | j'                  d|
j/                  t        j                        d          t#        j$                  dj5                  |t
        f            }| j'                  t        j                  j-                  t              |j6                  j/                  t        j                        d	          t#        j$                  dj5                  |t        f            }| j'                  t        j                  j-                  t              |j6                  j/                  t        j                        d	          t#        j$                  dj5                  |t        f            }| j'                  d|j6                  j/                  t        j                        d	          y )
N	path1.zipr   r   r"   rO      )r   r$   r%   r   	TESTPACK3r   r   r   TESTMOD3TESTMOD2r&   abspathru   TEMP_DIRrb   r5   r   r   r   r   r   __path__basenamerW   r#   listrV   __file__)r=   r   r   packdir3files1files2zip1zip2r   p1p2mpathsubpkgs                r   testMixedNamespacePackagez7UncompressedZipImportTestCase.testMixedNamespacePackage8  sq    RVV#Y&/i'"&&04G#g-xDDW$w.X%/W$w.: 4H$w.DX%/W$w.	: ww{+VT"fd# 	4 4 %%h/
 	C-.B))(3RXXbff5Eb5IJbhhrvv&6r&:; %%h&6&6rvvs&CCR&HIC-.S\\"1%++K"&&,@A!D#2. %%chh'/B&CDcll&8&8&@&DE %%chh(/C&DE))(3++BFF3B7	9 8Y/0%%f-C-.B))(3RXXbff5Eb5IJbhhrvv&6r&:; %%chh/@&AB))(3++BFF3B7	9 %%chh/A&BC))(3++BFF3B7	9 %%chh/A&BCcll&8&8&@&DEr    c                 f   t         t        j                  z   }|t        z   t        j                  z   }|t        z   t        j                  z   }|d |t
        z   t        z   t        |d |d |t
        z   t        z   t        |t        z   t        z   t        |t
        z   t        z   t        i}t        j                  j                  d      }| j                  ||       |d |t        z   t        z   t        |d |t        z   t        z   t        |t
        z   t        z   t        i}t        j                  j                  d      }| j                  ||       t        j                  j                  d|       t        j                  j                  d|       t        j                   t               }| j#                  dt%        |j&                               |j&                  \  }	}
| j#                  d|	j)                  t        j                        d          | j#                  d|
j)                  t        j                        d          t        j                   |j+                  t        j                  d      d d       }| j#                  dt%        |j&                               t-        |j&                        d   j)                  dt        j                  z         d   }| j#                  |d d |       t        j                   dj/                  t         t
        f            }| j#                  d|j0                  j)                  t        j                        d	          t        j                   dj/                  t         t        f            }| j#                  d|j0                  j)                  t        j                        d	          dj/                  t         t        f      }t        j                   |      }| j#                  dt%        |j&                               |j&                  \  }	}
| j#                  d|	j)                  t        j                        d	          | j#                  d|
j)                  t        j                        d	          t        j                   dj/                  |t
        f            }| j#                  d|j0                  j)                  t        j                        d
          t        j                   dj/                  |t        f            }| j#                  d|j0                  j)                  t        j                        d
          t        j                   dj/                  |t        f            }| j#                  d|j0                  j)                  t        j                        d
          y )Nr   z	path2.zipr   r   r   r"   rO   r   r   r   )r   r$   r%   r   r   r   r   r   r   r&   r   ru   r   r5   r   r   r   r   r   r   rW   r#   r   rV   r   )r=   r   r   r   r   r   r   r   r   r   r   r   r   s                r   testNamespacePackagez2UncompressedZipImportTestCase.testNamespacePackage  s*    RVV#Y&/i'"&&04G#g-xDDW$w.X%/W$w.: ww{+VT"4H$w.DX%/W$w.	:
 ww{+VT" 	4 4 %%h/
 	C-.Bbhhrvv&6r&:;bhhrvv&6r&:; %%h&6&6rvvs&CCR&HIC-.S\\"1%++K"&&,@A!D#2. %%chh'/B&CDcll&8&8&@&DE %%chh(/C&DEcll&8&8&@&DE 8Y/0%%f-C-.Bbhhrvv&6r&:;bhhrvv&6r&:; %%chh/@&ABcll&8&8&@&DE %%chh/A&BCcll&8&8&@&DE %%chh/A&BCcll&8&8&@&DEr    c                 |
   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        |dz   t        z   t
        |t        z   t        z   t
        dt        z   t
        i}| j                  |d       t        j                  t              }| j                  |j                  t               | j                  |j                  t                      t        j                          5  t        j"                  dt$               |j'                  t               }| j                  |j)                  t               |j*                         d d d        |j-                  d      }| j/                  |       | j1                  |j2                  t        j                         | j5                  |j2                  j                  d             t6        j8                  j;                  |      }|j2                  j=                  |       | j                  |j2                  j)                  d      |j*                         |j-                  t               }t6        j8                  j;                  |      }|j2                  j=                  |       | j                  |j)                  t               |j*                         t7        j>                  t               j@                  d   }t        jB                  jE                  t        t               }	| j                  ||	       | j5                  |j                  |dz                | j                  |j                  |t        z                | j5                  |j                  |t        z                |t        z   }
tG        |
      }t7        j>                  |      }| j                  |tH        jJ                  v        | jM                  |jO                  t                      | jM                  |jO                  |
             | j                  |j)                  |
      |j*                         |jP                  j2                  }| jM                  |jO                  |             | j                  |j)                  |      |j*                         t        j                  t        t        j                  z   t         z         }| j                  |j                  t               | j                  |jR                  t         t        j                  z          y # 1 sw Y   xY w)Nr   spam   spamre   ignorer   )*r   r$   r%   r   r   r   r   ru   rK   zipimporterr   r   archive
assertTrue
is_packagewarningscatch_warningssimplefilterDeprecationWarningload_moduleget_filenamer   	find_specassertIsNotNoner   loaderassertFalser   r   module_from_specexec_moduler   r   r&   rV   r'   r5   r   assertIsNone
get_source__spec__rg   )r=   r   r   r]   zir   specexec_modexisting_pack_pathexpected_path_pathmod_pathmod_namer  zi2s                 r   testZipImporterMethodsz4UncompressedZipImportTestCase.testZipImporterMethods  s   RVV#Y&/:%/J&0(G#g-x'!8- 	U1""8,X.h/0 $$&!!(,>?..*CR__X6E	 ' ||F#T"dkk9+@+@A//78>>2248)11&98;L;LM||H%nn--d3$2CLLA&44X>GGJWW\\(H=+-?@w';<=g	&9:;x''9:;g%-h7%%h/CKK/0"--12"--122CLLA $$&++H56,,X6E ##Hrvv$5$@Ah/X%67Y '&s   9AT11T;c                 p   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        |dz   t        z   t
        |t        z   t        z   t
        dt        z   t
        i}| j                  |d       t        j                  t              }| j                  |j                  j                         |j                                |j                          | j                  |j                  j                         |j                                dt        z   t
        i}|j                  |       t!        t        d| j"                        5 }| j%                  ||d       d d d        |j                          | j                  |j                  j                         |j                                |j'                  d      }| j)                  |       | j+                  |j,                  t        j                         t        j.                  t               |j                          | j1                  |j                         | j3                  t        j4                  j7                  |j8                               | j3                  |j'                  d             y # 1 sw Y   ;xY w)	Nr   r   r   r   spam2arj   name_does_not_matter)r   r$   r%   r   r   r   r   ru   rK   r  r   r   _fileskeysinvalidate_cachesupdater   rk   ro   r  r  r   r  remover  r  rL   getr  )r=   r   r   r]   r  newfilers   r  s           r   testInvalidateCachesz2UncompressedZipImportTestCase.testInvalidateCaches
  s   RVV#Y&/:%/J&0(G#g-x'!8- 	U1""8,)5::<8
)5::<8W$h/WXs0@0@AQMM!W7M; B 	)5::<8||G$T"dkk9+@+@A
		(
#)88<<RZZHI",,'=>? BAs   J++J5c                 	   t         t        j                  z   }|t        z   t        j                  z   }|dz   t        z   t
        |t        z   t        z   t
        i}| j                  |d       t        j                  t        t        j                  z   |z         }| j                  |j                  t               | j                  |j                  |       | j                  |j                  t                     t!        j"                         5  t!        j$                  dt&               |j)                  t              }| j                  |j+                  t              |j,                         d d d        |j/                  t              }t0        j2                  j5                  |      }|j6                  j9                  |       | j                  |j6                  j+                  t              |j,                         | j;                  |j                  t        t        j                  z   dz                | j;                  |j                  t        t        j                  z   t        z                t        t        j                  z   |z   t        z   }t        j                  |      }|j/                  t              }| j=                  |       | j?                  |j6                  t        j                         | j;                  |j6                  j                  t                     t0        j2                  j5                  |      }	|j6                  j9                  |	       | j                  |j6                  j+                  t              |	j,                         t        t        j                  z   t        z   }
tA        |
      }t1        jB                  |      }| j                  |tD        jF                  v        | jI                  |jK                  t                     | jI                  |jK                  |
             | j                  |j+                  |
      |j,                         |jL                  }| jI                  |jK                  |             | j                  |j+                  |      |j,                         y # 1 sw Y   SxY w)Nr   s   eggsr   r  )'r   r$   r%   r   r   r   r   ru   rK   r  r   r   r  rg   r  r  r  r  r  r	  r
  r  r   r  r   r   r  r  r  r  r  r   r'   r   r5   r   r  r  
__loader__)r=   r   r   r]   r  r   r  pkg_pathr  load_modr  r  r  s                r   $testZipImporterMethodsInSubDirectoryzBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectory*  sK   RVV#Y&/J&0(G#g-x9U1""8bff#4w#>?X.G,i01$$&!!(,>?..+CR__Y7F '
 ||I&nn--d3$11)<cllKy266'9J'FGHy266'9G'CDEbff$w.:##H- }}W%T"dkk9+@+@A//89>>2248)KK$$W-x/@/@	B rvv%/-h7%%h/CKK/0"--	23"--122CLLA &++H56,,X6EK '&s   AR<<Sc                    | j                  t        j                  t               t	        t        d      5 }| j
                  |_        d}t        d t        d      D              }|j                  ||       d d d        t        j                  t              }| j                  |j                               | j                  dt        |             y # 1 sw Y   _xY w)Nri   ztestdata.datc              3       K   | ]  }|  y wr4   rE   ).0xs     r   	<genexpr>z<UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>b  s     /JqJs      zzipimporter object)rQ   r   rn   r   r   rk   bytesranger}   rK   r  r   get_datar   repr)r=   rs   r_   r   r  s        r   testGetDataz)UncompressedZipImportTestCase.testGetData]  s    	(((3Xs#q ,,AM!D/E#J//DJJtT"	 $ ""8,r{{401*DH5 $#s   ACCc                     d}t        t        |dd      t        t        |            }t        t
        z   |ddi}| j                  t
        |t        d       y )Nzif 1:  # indent hack
        def get_file():
            return __file__
        if __loader__.get_data("some.data") != b"some data":
            raise AssertionError("bad data")
r   r   z	some.dataz	some datarc   )rg   )r   r   rw   r   r   r   r   )r=   srcr   r]   s       r   testImporterAttrz.UncompressedZipImportTestCase.testImporterAttri  sP    2
 wsGV4c3s8D7"Ck+GUGB7r    c                 @   d}t         dz   |i}| j                  |       t        j                  j	                  dt
               t        j                  t               }| j                  |j                  d      d       	 | j                  |j                  d      d       y )Nz[if 1:  # indent hack
        def test(val):
            assert(val)
            return val
r/   r   r   )r   ru   r5   r&   r   r   r   r   r   testassertRaisesAssertionError)r=   r;  r]   r   s       r   testDefaultOptimizationLevelz:UncompressedZipImportTestCase.testDefaultOptimizationLevelt  s|     5#&U8$%%g.!a( SXXa[!,r    c                 T    t         dz   t        i}| j                  d|t         d       y )Nr/   s6  Some StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome StuffSome Stuff)rf   r   r   s     r   testImport_WithStuffz2UncompressedZipImportTestCase.testImport_WithStuff  s,     5(+E5'* 	 	,r    c                 V    | j                  t        j                  |      t               y r4   )r   inspect	getsourcer   )r=   modules     r   assertModuleSourcez0UncompressedZipImportTestCase.assertModuleSource  s    **62H=r    c                 h    t         dz   t        i}| j                  d|t         | j                         y Nr/   r   )r   r   r   rH  r   s     r   testGetSourcez+UncompressedZipImportTestCase.testGetSource  s*    5(+E5'0G0GHr    c                     t        t        t        dd      t        t	        t                    }t
        dz   t        t
        t        z   |i}| j                  t        |t
        | j                         y )Nr   r   r/   r   )	r   r   r   rw   r   r   r   r   rH  )r=   r   r]   s      r   testGetCompiledSourcez3UncompressedZipImportTestCase.testGetCompiledSource  sQ    wx&93HN5(7"C)GUG$2I2IJr    c                 X    t         dz   t        ddi}| j                  d|t         |       y )Nr/   xyz.txtz>>> log.append(True)
r   r   )r=   callbackr]   s      r   
runDoctestz(UncompressedZipImportTestCase.runDoctest  s,    5(46E5'9r    c                     g }t         j                  d c}t         _        	 t        j                  d|dt                      |t         _        | j	                  |dg       y # |t         _        w xY wNrO  T)packagemodule_relativeglobs)doctestmastertestfilelocalsr   )r=   rG  log
old_masters       r   doDoctestFilez+UncompressedZipImportTestCase.doDoctestFile  s^    %,^^T"
GN	(64h
 (GNdV$ (GNs   !A   A-c                 :    | j                  | j                         y r4   )rQ  r]  r<   s    r   testDoctestFilez-UncompressedZipImportTestCase.testDoctestFile  s    **+r    c                     g }t        j                  d|dt                     j                          | j	                  |dg       y rS  )rW  DocFileTestrZ  runr   )r=   rG  r[  s      r   doDoctestSuitez,UncompressedZipImportTestCase.doDoctestSuite  s<    vt(	
 #%dV$r    c                 :    | j                  | j                         y r4   )rQ  rc  r<   s    r   testDoctestSuitez.UncompressedZipImportTestCase.testDoctestSuite  s    ++,r    c                 P   	 |j                          t        d      # t        $ r}|j                  j                  }t        |d      d   \  }}}}| j                  |t        j                                t        |j                  d      d   \  }}}}| j                  |t        j                                t        j                         }t        |d|       | j                  |j                         j!                  t#        j$                         rdnd             Y d }~y d }~ww xY w)NzThis ought to be impossibler   r   z$    def do_raise(): raise TypeError
z$                    ^^^^^^^^^^^^^^^
)do_raiser@  	Exception__traceback__tb_nextr
   r   	raise_srcstripr   tb_frameioStringIOr   r  getvalueendswithr   has_no_debug_ranges)	r=   rG  etbrt   lnonliness	            r   doTracebackz)UncompressedZipImportTestCase.doTraceback  s    	@OO$ !!>??#  	((B%b!,Q/LAc!DT9??#45(a8;LAc!DT9??#45ARAOOAJJL111137  	s    	D%C5D  D%c                 h    t         dz   t        i}| j                  d |t         | j                         y rJ  )r   rk  r   ry  r   s     r   testTracebackz+UncompressedZipImportTestCase.testTraceback  s*    5),D%t/?/?@r    zneed an unencodable filenamec                 ,   t         j                  dz   }| j                  t        dz   t        i|       t        j                  |      j                  t              }t        j                  j                  |      }|j                  j                  |       y Nz.zipr/   )r   TESTFN_UNENCODABLEru   r   r   rK   r  r  r   r   r  r  r  )r=   filenamer  r   s       r   testUnencodablez-UncompressedZipImportTestCase.testUnencodable  sl     //&8gox0(;$$X.88Ann--d3$r    c                    t         j                  dz   }| j                  t        dz   t        i|       t        j                  |       | j                  t              5  t        j                  t        j                  |             d d d        | j                  t              5  t        j                  t        t        j                  |                   d d d        | j                  t              5  t        j                  t        t        j                  |                   d d d        y # 1 sw Y   xY w# 1 sw Y   exY w# 1 sw Y   y xY wr}  )r   TESTFNru   r   r   rK   r  r?  	TypeErrorr$   fsencoder   
memoryviewr=   r  s     r   testBytesPathz+UncompressedZipImportTestCase.testBytesPath  s    ##f,gox0(;h'y)!!"++h"78 *y)!!)BKK,A"BC *y)!!*R[[-B"CD *)	 *)))))s$   )D-#2D922E-D69EEc                 T    t         dz   t        i}| j                  d|t         d       y )Nr/   s   commentrd   r   r   s     r   testCommentz)UncompressedZipImportTestCase.testComment  s$    5(+E5':>r    c                 V    t         dz   t        i}| j                  d|t         dd       y )Nr/   s@  cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcrufts   hi)rf   rd   r   r   s     r   testBeginningCruftAndCommentz:UncompressedZipImportTestCase.testBeginningCruftAndComment  s&    5(+E5'Nr    c                 Z    t         dz   t        i}| j                  d|t         ddz         y )Nr/      ci  r  r   r   s     r   testLargestPossibleCommentz8UncompressedZipImportTestCase.testLargestPossibleComment  s)    5(+E5'4=3IJr    )8rB   rC   rD   r   rk   r>   r   rb   r   ru   ro   r   r   r   r   r   r   unittestmockpatchr   r   r   r   r   r   r   r   r   r   r   r  r)  r.  r9  r<  rA  rC  rH  rK  rM  rQ  r]  r_  rc  re  ry  r{  skipIfr   r~  r  r  r  r  r  rE   r    r   rG   rG   R   sd   K, '/ #& &. 4tB( 26b ($ :> ;&@B+--
6 ]]5x@6 A6*+
=++7B	BKFZGFR:8x@@1Ff
6	8- ,>IK:

%,%-@,A X__Y11T935%5%
E?OKr    rG   c                       e Zd ZeZy)CompressedZipImportTestCaseN)rB   rC   rD   r	   rk   rE   r    r   r  r    s    Kr    r  c                       e Zd Zd Zd Zd Zd Zd Zd Z e	j                  ej                  d      d        Zd	 Zd
 Zy)BadFileZipImportTestCasec                 b    | j                  t        j                  t        j                  |       y r4   )r?  rK   r   r  r  s     r   assertZipFailurez)BadFileZipImportTestCase.assertZipFailure  s#    )22#//	;r    c                 &    | j                  d       y )NAdfjdkFJKDFJjdklfjsr  r<   s    r   
testNoFilez#BadFileZipImportTestCase.testNoFile  s    34r    c                 &    | j                  d       y )Nrc   r  r<   s    r   testEmptyFilenamez*BadFileZipImportTestCase.testEmptyFilename   s    b!r    c           	      .   | j                  t        t        j                  d        | j                  t        t        j                  t        d        | j                  t        t        j                  t        t        j                  t                           y )N)kwd)r?  r  rK   r  r   r   r$   r  r<   s    r   testBadArgsz$BadFileZipImportTestCase.testBadArgs  s`    )Y%:%:DA)Y%:%:GN)Y%:%:r{{734	6r    c                 ,    | j                  ddz         y )NAi  r  r<   s    r   testFilenameTooLongz,BadFileZipImportTestCase.testFilenameTooLong	  s    cEk*r    c                     t        j                  t               t        j                  t               | j	                  t               y r4   )r   rn   r   create_empty_filer  r<   s    r   testEmptyFilez&BadFileZipImportTestCase.testEmptyFile  s,    !##G,g&r    zmode 000 not supported.c                 $   t        j                  t               t        j                  t        t        j
                  d      }	 t        j                  |       | j                  t        j                        5 }t        j                  t               d d d        t        j                  t        d       t        j                  t               y # 1 sw Y   =xY w# t        j                  t        d       t        j                  t               w xY w)Nr   i  )r   rn   r   r$   r[   O_CREATcloser?  rK   r   r  chmod)r=   fdcms      r   testFileUnreadablez+BadFileZipImportTestCase.testFileUnreadable  s    !WWWbjj#.		&HHRL""9#;#;<%%g. =
 HHWe$W% =<
 HHWe$W%s$   4C 8CC CC 5Dc                     t        j                  t               t        t        d      }|j	                  d       |j                          | j                  t               y )Nw+aaaaaaaaaaaaaaaaaaaaaa)r   rn   r   r[   r\   r  r  )r=   ra   s     r   testNotZipFilez'BadFileZipImportTestCase.testNotZipFile   s?    !'4 


g&r    c                 @   t        j                  t               t        t        d      }|j	                  t        j                  dd             |j	                  d       |j                          t        j                  t              }	 t        j                         5  t        j                  dt               | j                  t        |j                   d        d d d        | j                  t        |j"                  d        | j                  t        |j$                  d        | j                  t        |j&                  d        | j                  t        |j(                  d        | j                  t        |j*                  d        | j                  t        |j,                  d        | j                  t        |j.                  d        t        j0                  }| j3                  |j%                  d             t        j                         5  t        j                  dt               | j                  ||j                   d       d d d        | j                  ||j*                  d       | j                  t4        |j,                  d       | j                  ||j.                  d       | j                  ||j(                  d       t        j6                  j9                          y # 1 sw Y   xY w# 1 sw Y   xY w# t        j6                  j9                          w xY w)Nr  z=IiPKaaaaaaaaaaaaaaaaaar  abc)r   rn   r   r[   r\   r   r   r  rK   r  r  r  r  r	  r?  r  r
  find_moduler  r  r  get_coder7  r  r   r  OSErrorrL   r9   )r=   ra   rs   errors       r   _testBogusZipFilez*BadFileZipImportTestCase._testBogusZipFile(  s   !'4 
T:./


!!'*	3((*%%h0BC!!)Q]]DA + i=id;i=it<iT:iT:it<,,Eakk%01((*%%h0BC!!%> + eQZZ7gqzz59eQ\\59eQ\\59**002- +* +* **002s>   
K= <K$D3K= 8K1B K= $K.)K= 1K:6K= = LN)rB   rC   rD   r  r  r  r  r  r  r  r  r   is_wasir  r  r  rE   r    r   r  r    sQ    ;5"6+'
 X__W__&?@& A&'3r    r  c                  6    t        j                  t               y r4   )r   rn   r   rE   r    r   tearDownModuler  J  s    Wr    __main__)?r5   r$   r   r   importlib.utilr   rx   r  unittest.mockr  r>  r   test.supportr   r   zipfiler   r   r   r	   rK   rI   rW  rE  rn  	tracebackr
   r   r   r   r   r   r   r   rk  r   r'   rw   r   r   r   r   r   r   r   r   r&   r   r   r   r   cache_from_sourcepyc_filer   TestCaser2   rG   requires_zlibr  r  r  rB   mainrE   r    r   <module>r     s   
 	          & " > >     	 9 9 (GV
,/	% diikGS#h-0 		77??;'77???+>>++GeO<
<h// <"^
K$; ^
KB "?  O3x00 O3d zHMMO i  Ds   &E0 0E;:E;