o
    IXīhA  ć                   @   sĢ  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 zd dlZW n eyu   dZY nw dZe edd	Z!d
Z"dd Z#dd Z$e ” Z%e#e!e%e&eZ'dZ(dZ)dZ*ej+ ,d”Z-ej+ ,d”Z.ej/ 0e(d ”Z1dZ2G dd dej3Z4G dd de4Z5e 6” G dd de5Z7G dd dej3Z8dd Z9e:d kräe ;”  dS dS )!é    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                 C   s6   t  | ”}tjjt ddt|d@ |d@ ” | }|S )Nz<iLLr   ģ   ’’ )ŚmarshalŚdumpsŚ	importlibŚutilŚMAGIC_NUMBERŚstructŚpackŚint)ŚcoŚmtimeŚsizeŚdataŚpyc© r   ś=/opt/python-3.10.19/usr/lib/python3.10/test/test_zipimport.pyŚmake_pyc&   s   
’’žr   c                 C   s   |   tjd”S )NŚ.)ŚreplaceŚosŚsep)Śpathr   r   r   Śmodule_path_to_dotted_name-   ó   r$   ZziptestmoduleZziptestpackageZziptestpackage2Z	junk95142zjunk95142.zipś.pyś.pycc                   @   s   e Zd Zdd Zdd ZdS )ŚImportHooksBaseTestCasec                 C   sH   t jd d  | _t jd d  | _t jd d  | _t j ”  t ” | _d S ©N)	Śsysr#   Ś	meta_pathŚ
path_hooksŚpath_importer_cacheŚclearr   Zmodules_setupŚmodules_before©Śselfr   r   r   ŚsetUp@   s
   
zImportHooksBaseTestCase.setUpc                 C   sJ   | j tj d d < | jtjd d < | jtjd d < tj ”  tj| j  d S r)   )	r#   r*   r+   r,   r-   r.   r   Zmodules_cleanupr/   r0   r   r   r   ŚtearDownG   s
   
z ImportHooksBaseTestCase.tearDownN)Ś__name__Ś
__module__Ś__qualname__r2   r3   r   r   r   r   r(   >   s    r(   c                   @   s  e Zd ZeZdd ZefddZefddZ	dd Z
d	d
 Zdd Zdd Zdd Zdd Zej dd”dd Zdd Zdd Zdd Zdd Zdd  Zd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/d0 Z d1d2 Z!d3d4 Z"d5d6 Z#d7d8 Z$d9d: Z%d;d< Z&d=d> Z'd?d@ Z(dAdB Z)dCdD Z*dEdF Z+dGdH Z,dIdJ Z-dKdL Z.e /e0j1dMu dN”dOdP Z2dQdR Z3dSdT Z4dUdV Z5dWdX Z6dMS )YŚUncompressedZipImportTestCasec                 C   s    t  ”  tj ”  t | ” d S r)   )Ś	linecacheŚ
clearcacheŚ	zipimportŚ_zip_directory_cacher.   r(   r2   r0   r   r   r   r2   S   s   
z#UncompressedZipImportTestCase.setUpc           	   	   C   s²   |   tj|” | ” D ]K\}\}}tj ||”}|d tjkr+tj |”s*t 	|” qtj 
|”}tj |”s<t 	|” t|d}| |” W d    n1 sQw   Y  qd S )Né’’’’Śwb)Ś
addCleanupr   ŚrmtreeŚitemsr!   r#   Śjoinr"   ŚisdirŚmakedirsŚdirnameŚopenŚwrite)	r1   ŚfilesZdirNameŚnamer   r   r#   ZdnameŚfpr   r   r   ŚmakeTreeZ   s   

’÷z&UncompressedZipImportTestCase.makeTreec                 K   s  |   tj|” t|d2}| ” D ]\}\}}t|t |”}| j|_	| 
||” q| dd ”}	|	d ur7|	|_W d    n1 sAw   Y  | dd ”}
|
d urt|d}| ” }W d    n1 sdw   Y  t|d}| |
” | |” W d    d S 1 sw   Y  d S d S )NŚwŚcommentŚstuffŚrbr=   )r>   r   Śunlinkr   r@   r   ŚtimeŚ	localtimeŚcompressionŚcompress_typeŚwritestrŚgetrL   rE   ŚreadrF   )r1   rG   ZzipNameŚkwŚzrH   r   r   ŚzinforL   rM   Śfr   r   r   ŚmakeZipk   s*   ł	
’
"žüz%UncompressedZipImportTestCase.makeZipc                 O   s~   | j |fi |¤ tj dt” t d |””}| d”}|d ur%|| |r=| 	” }|  
|tjjtg|¢R  | ” d S d S )Nr   r   Ścall)r[   r*   r#   ŚinsertŚTEMP_ZIPr   Śimport_modulerA   rU   Zget_fileŚassertEqualr!   )r1   Zexpected_extrG   ŚmodulesrW   Śmodr\   Śfiler   r   r   ŚdoTest   s   
’
’žz$UncompressedZipImportTestCase.doTestc                 C   s   dt jv r
|  d” dt jv rt jd= dttfi}z	|  d|d” W n ty9   | jt	kr6|  
d” Y d S Y d S w | jtkrF|  
d” d S d S )NŚzlibzzlib is a builtin modulezzlib.pyr&   z&expected test to not raise ImportErrorz"expected test to raise ImportError)r*   Śbuiltin_module_namesZskipTestra   ŚNOWŚtest_srcrd   ŚImportErrorrR   r   Śfailr   ©r1   rG   r   r   r   ŚtestAFakeZlib   s   



’’
’z+UncompressedZipImportTestCase.testAFakeZlibc                 C   s"   t d ttfi}|  d|t ” d S ©Nr&   ©ŚTESTMODrg   rh   rd   rk   r   r   r   ŚtestPy³   ó   z$UncompressedZipImportTestCase.testPyc                 C   s"   t t ttfi}|  t|t ” d S r)   )ro   Śpyc_extrg   Śtest_pycrd   rk   r   r   r   ŚtestPyc·   rq   z%UncompressedZipImportTestCase.testPycc                 C   s.   t d ttft t ttfi}|  t|t ” d S rm   )ro   rg   rh   rr   rs   rd   rk   r   r   r   ŚtestBoth»   s   ’z&UncompressedZipImportTestCase.testBothc                    ój   d}t j |”}t j t|dd|d”}td tdftd td |fi} fd	d
} jd |t|d d S )Nó   state = 'old'ś???r   Fr&   śstate = 'new'r'   é   c                    ó      | jd” d S )NŚold©r`   Śstate©rb   r0   r   r   ŚcheckŹ   ó   zFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check©r\   ©	r   r   Śsource_hashŚ_bootstrap_externalŚ_code_to_hash_pycŚcompilero   rg   rd   ©r1   Śsourcer   ŚbytecoderG   r   r   r0   r   ŚtestUncheckedHashBasedPycĄ   s   
ż’z7UncompressedZipImportTestCase.testUncheckedHashBasedPycz_imp.check_hash_based_pycsŚalwaysc                    rv   )Nrw   rx   r   Fr&   ry   r'   rz   c                    r{   )NŚnewr}   r   r0   r   r   r   Ł   r   zOUncompressedZipImportTestCase.test_checked_hash_based_change_pyc.<locals>.checkr   r   r   r   r0   r   Ś"test_checked_hash_based_change_pycĪ   s   
ż’z@UncompressedZipImportTestCase.test_checked_hash_based_change_pycc                 C   s"   t d tdfi}|  d |t ” d S )Nr&   Ś )ro   rg   rd   rk   r   r   r   ŚtestEmptyPyŻ   rq   z)UncompressedZipImportTestCase.testEmptyPyc                 C   óF   t t}|d  dN  < td ttftt t|fi}|  d|t” d S )Nr   é   r&   ©Ś	bytearrayrs   ro   rg   rh   rr   rd   )r1   Śbadmagic_pycrG   r   r   r   ŚtestBadMagicį   s   ’z*UncompressedZipImportTestCase.testBadMagicc              
   C   s   t t}|d  dN  < tt t|fi}z|  d|t” |  d” W d S  tjyF } z|  	|j
t” |  d|j
j” W Y d }~d S d }~ww )Nr   r   r&   zThis should not be reachedzmagic number)r   rs   ro   rr   rg   rd   rj   r:   ŚZipImportErrorŚassertIsInstanceŚ	__cause__ri   ŚassertInŚmsg)r1   r   rG   Śexcr   r   r   ŚtestBadMagic2é   s   žz+UncompressedZipImportTestCase.testBadMagic2c                 C   r   )Né   é   r&   r   )r1   Zbadtime_pycrG   r   r   r   ŚtestBadMTimeõ   s   ’z*UncompressedZipImportTestCase.testBadMTimec                 C   s>   t tdtt}td ttftt t|fi}|  d|t” d S )Nr   r&   )r   Śtest_coŚlenrh   ro   rg   rr   rd   )r1   Ztwenty_thirty_eight_pycrG   r   r   r   Śtest2038MTimež   s
   ’z+UncompressedZipImportTestCase.test2038MTimec                 C   sB   t tj }|d t ttf|t t ttfi}|  t|t t” d S ©NŚ__init__)ŚTESTPACKr!   r"   rr   rg   rs   ro   rd   )r1   ŚpackdirrG   r   r   r   ŚtestPackage  s
   
’z)UncompressedZipImportTestCase.testPackagec                 C   sb   t tj }|t tj }|d t ttf|d t ttf|t t ttfi}|  t|t tt” d S r¤   )	r¦   r!   r"   Ś	TESTPACK2rr   rg   rs   ro   rd   ©r1   r§   Śpackdir2rG   r   r   r   ŚtestSubPackage  s   
žz,UncompressedZipImportTestCase.testSubPackagec                 C   sR   t tj }|t tj }|tdf|tdf|t t ttfi}|  t|t tt” d S ©Nr   )	r¦   r!   r"   r©   rg   ro   rr   rs   rd   rŖ   r   r   r   ŚtestSubNamespacePackage  s   
žz5UncompressedZipImportTestCase.testSubNamespacePackagec                 C   sR  t tj }|t tj }|t  d tj }|tdf|t t ttf|tdf|tdf|t t ttf|t d t ttf|t t ttfi}|tdf|t d t ttf|tdf|t d t ttf|t t ttfi}tj 	d”}|  
||” t}|  ||” tj d|” tj d|” t t ”}|  dt|j” |j\}	}
|  tj t”|	 tj”d ” |  d|
 tj”d ” t | tjd”d d	 ”}|  d
t|j” t|jd  dtj ”d
 }|  |d d	 |” t d t tf””}|  d|j tj”d ” t d t td f””}|  tj t”|j tj”d ” d t tf”}t |”}|  dt|j” |j\}	}
|  tj t”|	 tj”d ” |  d|
 tj”d ” t d |tf””}|  tj t”|j tj”d ” t d |td f””}|  tj t”|j tj”d ” t d |td f””}|  d|j tj”d ” d S )NŚ3r   Ś2ś	path1.zipr   r   éž’’’r   r<   é   éż’’’éü’’’)r¦   r!   r"   r©   rg   ro   rr   rs   r#   Śabspathr[   ŚTEMP_DIRrJ   r*   r]   r   r_   r`   r¢   Ś__path__ŚbasenameŚsplitr    ŚlistrA   Ś__file__)r1   r§   r«   Śpackdir3Śfiles1Śfiles2Śzip1Śzip2rb   Śp1Śp2ŚmpathŚsubpkgr   r   r   ŚtestMixedNamespacePackage!  sl   
śü

 ’

 ’’z7UncompressedZipImportTestCase.testMixedNamespacePackagec                 C   s2  t tj }|t tj }|t  d tj }|tdf|t t ttf|tdf|tdf|t t ttf|t d t ttf|t t ttfi}tj 	d”}|  
||” |tdf|t d t ttf|tdf|t d t ttf|t t ttfi}tj 	d”}|  
||” tj d|” tj d|” t t ”}|  dt|j” |j\}	}
|  d|	 tj”d ” |  d|
 tj”d ” t | tjd	”d d
 ”}|  dt|j” t|jd  dtj ”d }|  |d d
 |” t d	 t tf””}|  d|j tj”d ” t d	 t td f””}|  d|j tj”d ” d	 t tf”}t |”}|  dt|j” |j\}	}
|  d|	 tj”d ” |  d|
 tj”d ” t d	 |tf””}|  d|j tj”d ” t d	 |td f””}|  d|j tj”d ” t d	 |td f””}|  d|j tj”d ” d S )NrÆ   r   r±   r°   z	path2.zipr   r   r²   r   r<   r³   r“   rµ   )r¦   r!   r"   r©   rg   ro   rr   rs   r#   r¶   r[   r*   r]   r   r_   r`   r¢   rø   rŗ   r    r»   rA   r¼   )r1   r§   r«   r½   r¾   rĄ   ræ   rĮ   rb   rĀ   rĆ   rÄ   rÅ   r   r   r   ŚtestNamespacePackagen  s`   
śü



z2UncompressedZipImportTestCase.testNamespacePackagec              	   C   s^  t tj }|t tj }|d t ttf|d t ttf|t t ttfdt ttfi}|  t	j
t” ttd(}| ” D ]\}\}}t|t |”}| j|_d|_| ||” q=W d    n1 scw   Y  t t”}	|  |	jt” |  |	 t ”” t ” E t dt” |	 d”}
|   |
” |  !|
tj” |  "|
 d”” |
 #d”}|  |
 $d”|j%” |	 #t ”}|  |	 $t ”|j%” W d    n1 sČw   Y  |	 &d”}|   |” |  !|j'tj” |  "|j' d”” t(j) *|”}|j' +|” |  |j' $d”|j%” |	 &t ”}t(j) *|”}|j' +|” |  |	 $t ”|j%” t( ,t ”j-d }tj. /tt ”}|  ||” |  "|	 |d ”” |  |	 |t ”” |  "|	 |t ”” |t }t0|}t( ,|”}|  |t1j2v ” |  3|	 4t ”” |  3|	 4|”” |  |	 $|”|j%” |j5j'}|  3| 4|”” |  | $|”|j%” t ttj t  ”}|  |jt” |  |j6t tj ” d S )Nr„   ŚspamrK   ó   spamŚignorer   )7r¦   r!   r"   r©   rr   rg   rs   ro   r>   r   rO   r^   r   r@   r   rP   rQ   rR   rS   rL   rT   r:   Śzipimporterr`   ŚarchiveŚ
assertTrueŚ
is_packageŚwarningsŚcatch_warningsŚsimplefilterŚDeprecationWarningŚfind_moduleŚassertIsNotNoner   ŚassertFalseŚload_moduleŚget_filenamer¼   Ś	find_specŚloaderr   r   Śmodule_from_specŚexec_moduler_   rø   r#   rA   r$   r*   ra   ŚassertIsNoneŚ
get_sourceŚ__spec__Śprefix)r1   r§   r«   rG   rX   rH   r   r   rY   ŚziZfind_modŚload_modrb   ŚspecZexec_modZexisting_pack_pathZexpected_path_pathŚmod_pathŚmod_namerŁ   Śzi2r   r   r   ŚtestZipImporterMethods·  sx   
żü’





ö



z4UncompressedZipImportTestCase.testZipImporterMethodsc              	   C   s  t tj }|t tj }|d t ttf|d t ttf|t t ttfdt ttfi}|  t	j
t” ttd(}| ” D ]\}\}}t|t |”}| j|_d|_| ||” q=W d    n1 scw   Y  t t”}	|  |	j ” | ” ” |	 ”  |  |	j ” | ” ” dt ttfi}
| |
” ttd(}|
 ” D ]\}\}}t|t |”}| j|_d|_| ||” qW d    n1 sÄw   Y  |	 ”  |  |	j ” | ” ” |	 d”}|  |” |  |jtj” t  t” |	 ”  |  !|	j” |  "tj# $|	j%”” |  "|	 d”” d S )Nr„   rČ   rK   rÉ   Zspam2ŚaZname_does_not_matter)&r¦   r!   r"   r©   rr   rg   rs   ro   r>   r   rO   r^   r   r@   r   rP   rQ   rR   rS   rL   rT   r:   rĖ   r`   Ś_filesŚkeysŚinvalidate_cachesŚupdaterŲ   rŌ   r   rŁ   ŚremoverÕ   rÜ   r;   rU   rĢ   )r1   r§   r«   rG   rX   rH   r   r   rY   rą   Śnewfilerā   r   r   r   ŚtestInvalidateCaches   sP   
żü’

ü’


z2UncompressedZipImportTestCase.testInvalidateCachesc                 C   sJ  t tj }|t tj }|d t ttf|t t ttfi}|  t	j
t” ttd(}| ” D ]\}\}}t|t |”}| j|_d|_| ||” q/W d    n1 sUw   Y  t ttj | ”}	|  |	jt” |  |	j|” |  |	 t”” t ”  t dt” |	  t”}
|  |	 !t”|
j"” W d    n1 sw   Y  |	 #t”}t$j% &|”}
|j' (|
” |  |j' !t”|
j"” |  )|	 ttj d ”” |  )|	 ttj t ”” ttj | t }t |”}t ” 6 t dt” | *t”}|  +|” |  ,|tj” |  )| t”” |  t”}|  | !t”|j"” W d    n	1 s%w   Y  | #t”}|  +|” |  ,|j'tj” |  )|j' t”” t$j% &|”}|j' (|” |  |j' !t”|j"” ttj t }t-|}t$ .|”}
|  |t/j0v ” |  1|	 2t”” |  1|	 2|”” |  |	 !|”|
j"” |
j3}|  1| 2|”” |  | !|”|
j"” d S )Nr„   rK   s   eggsrŹ   )4r¦   r!   r"   r©   rr   rg   rs   ro   r>   r   rO   r^   r   r@   r   rP   rQ   rR   rS   rL   rT   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*   ra   rÜ   rŻ   Ś
__loader__)r1   r§   r«   rG   rX   rH   r   r   rY   rą   rb   rā   Zpkg_pathrå   Zfind_mod_dottedrį   rć   rä   rŁ   r   r   r   Ś$testZipImporterMethodsInSubDirectory*  sz   
’ü’

ż





’ł

’
zBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectoryc                 C   s   |   tjt” ttd}| j|_d}tdd tdD }| ||” W d    n1 s.w   Y  t	 
t”}|  || |”” |  dt|” d S )NrK   ztestdata.datc                 s   s    | ]}|V  qd S r)   r   )Ś.0Śxr   r   r   Ś	<genexpr>s  s    z<UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>é   zzipimporter object)r>   r   rO   r^   r   rR   ŚbytesŚrangerT   r:   rĖ   r`   Śget_datar   Śrepr)r1   rX   rH   r   rą   r   r   r   ŚtestGetDatan  s   ü
z)UncompressedZipImportTestCase.testGetDatac                 C   sF   d}t t|ddtt|}tt t|fdtdfi}|  t|t” d S )Nz³if 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 data)r   r   rg   r¢   ro   rr   rd   )r1   Śsrcr   rG   r   r   r   ŚtestImporterAttrz  s   ’z.UncompressedZipImportTestCase.testImporterAttrc                 C   s^   d}t d t|fi}|  |” tj dt” t t ”}|  	| 
d”d” 	 |  t|j
d” d S )Nz[if 1:  # indent hack
        def test(val):
            assert(val)
            return val
r&   r   r³   TF)ro   rg   r[   r*   r#   r]   r^   r   r_   r`   ŚtestŚassertRaisesŚAssertionError)r1   rś   rG   rb   r   r   r   ŚtestDefaultOptimizationLevel  s   

z:UncompressedZipImportTestCase.testDefaultOptimizationLevelc                 C   ó&   t d ttfi}| jd|t dd d S )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)rM   rn   rk   r   r   r   ŚtestImport_WithStuff  s   

’z2UncompressedZipImportTestCase.testImport_WithStuffc                 C   s   |   t |”t” d S r)   )r`   ŚinspectZ	getsourcerh   )r1   Śmoduler   r   r   ŚassertModuleSource  s   z0UncompressedZipImportTestCase.assertModuleSourcec                 C   s(   t d ttfi}| jd|t | jd d S ©Nr&   r   )ro   rg   rh   rd   r  rk   r   r   r   ŚtestGetSource  ó   z+UncompressedZipImportTestCase.testGetSourcec                 C   sL   t ttddttt}td ttftt t|fi}| jt|t| jd d S )Nr   r   r&   r   )	r   r   rh   rg   r¢   ro   rr   rd   r  )r1   r   rG   r   r   r   ŚtestGetCompiledSource£  s
   ’z3UncompressedZipImportTestCase.testGetCompiledSourcec                 C   s.   t d ttfdtdfi}| jd|t |d d S )Nr&   śxyz.txtz>>> log.append(True)
r   rn   )r1   ŚcallbackrG   r   r   r   Ś
runDoctest©  s   ’z(UncompressedZipImportTestCase.runDoctestc                 C   sL   g }t jd }t _zt jd|dt d W |t _n|t _w |  |dg” d S ©Nr	  T)ŚpackageZmodule_relativeZglobs)ŚdoctestZmasterZtestfileŚlocalsr`   )r1   r  ŚlogZ
old_masterr   r   r   ŚdoDoctestFile®  s   žz+UncompressedZipImportTestCase.doDoctestFilec                 C   ó   |   | j” d S r)   )r  r  r0   r   r   r   ŚtestDoctestFileŗ  ó   z-UncompressedZipImportTestCase.testDoctestFilec                 C   s.   g }t jd|dt d ”  |  |dg” d S r  )r  ZDocFileTestr  Śrunr`   )r1   r  r  r   r   r   ŚdoDoctestSuite½  s   žz,UncompressedZipImportTestCase.doDoctestSuitec                 C   r  r)   )r  r  r0   r   r   r   ŚtestDoctestSuiteÅ  r  z.UncompressedZipImportTestCase.testDoctestSuitec           	   
   C   sø   z	|  ”  W td ty[ } zF|jj}t|dd \}}}}|  |t ” ” t|j	dd \}}}}|  |t ” ” t
 ” }t|d| |  | ”  t”” W Y d }~d S d }~ww )Nr³   r   zThis ought to be impossible)Zdo_raiseŚ	ExceptionŚ__traceback__Śtb_nextr	   r`   Ś	raise_srcŚstripr
   Śtb_frameŚioŚStringIOr   rĶ   ŚgetvalueŚendswithrž   )	r1   r  ŚeŚtbrZ   ŚlnoŚnŚlineŚsr   r   r   ŚdoTracebackČ  s   
ó"õz)UncompressedZipImportTestCase.doTracebackc                 C   s(   t d ttfi}| jd |t | jd d S r  )ro   rg   r  rd   r(  rk   r   r   r   ŚtestTracebackŚ  r  z+UncompressedZipImportTestCase.testTracebackNzneed an unencodable filenamec                 C   s   t jd }|  t j|” t|d}ttd t t	”}| j
|_| |t” W d    n1 s0w   Y  t |” t”}tj |”}|j |” d S ©Nz.ziprK   r&   )r   ŚTESTFN_UNENCODABLEr>   rO   r   r   ro   rP   rQ   rg   rR   rS   rT   rh   r:   rĖ   rŲ   r   r   rŚ   rŁ   rŪ   )r1   ŚfilenamerX   rY   rā   rb   r   r   r   ŚtestUnencodableŽ  s   
żz-UncompressedZipImportTestCase.testUnencodablec                 C   s  t jd }|  t j|” t|d}ttd t t	”}| j
|_| |t” W d    n1 s0w   Y  t |” t t |”” |  t” t tt |”” W d    n1 s\w   Y  |  t” t tt |”” W d    d S 1 s|w   Y  d S r*  )r   ZTESTFNr>   rO   r   r   ro   rP   rQ   rg   rR   rS   rT   rh   r:   rĖ   r!   Śfsencoderż   Ś	TypeErrorr   Ś
memoryview)r1   r,  rX   rY   r   r   r   ŚtestBytesPathė  s   
ż
’"’z+UncompressedZipImportTestCase.testBytesPathc                 C   r   )Nr&   s   comment©rL   rn   rk   r   r   r   ŚtestCommentś  s   z)UncompressedZipImportTestCase.testCommentc                 C   s(   t d ttfi}| jd|t ddd d S )Nr&   s@  cruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcruftcrufts   hi)rM   rL   rn   rk   r   r   r   ŚtestBeginningCruftAndCommentž  r  z:UncompressedZipImportTestCase.testBeginningCruftAndCommentc                 C   s*   t d ttfi}| jd|t dd d d S )Nr&   ó   ci’’  r2  rn   rk   r   r   r   ŚtestLargestPossibleComment  s   z8UncompressedZipImportTestCase.testLargestPossibleComment)7r4   r5   r6   r   rR   r2   r·   rJ   r^   r[   rd   rl   rp   rt   ru   r   ŚunittestZmockZpatchr   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)  ZskipIfr   r+  r-  r1  r3  r4  r6  r   r   r   r   r7   O   s`     
	
MII*D’
r7   c                   @   s   e Zd ZeZdS )ŚCompressedZipImportTestCaseN)r4   r5   r6   r   rR   r   r   r   r   r8    s    r8  c                   @   sT   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd ZdS )ŚBadFileZipImportTestCasec                 C   s   |   tjtj|” d S r)   )rż   r:   r   rĖ   )r1   r,  r   r   r   ŚassertZipFailure  s   ’z)BadFileZipImportTestCase.assertZipFailurec                 C   ó   |   d” d S )NZAdfjdkFJKDFJjdklfjs©r:  r0   r   r   r   Ś
testNoFile  r%   z#BadFileZipImportTestCase.testNoFilec                 C   r;  r­   r<  r0   r   r   r   ŚtestEmptyFilename  r%   z*BadFileZipImportTestCase.testEmptyFilenamec                 C   sB   |   ttjd ” | j ttjtd d |   ttjtt t”” d S )N)Zkwd)rż   r/  r:   rĖ   ro   r»   r!   r.  r0   r   r   r   ŚtestBadArgs  s
   
’z$BadFileZipImportTestCase.testBadArgsc                 C   s   |   dd ” d S )NŚAič  r<  r0   r   r   r   ŚtestFilenameTooLong  r   z,BadFileZipImportTestCase.testFilenameTooLongc                 C   s"   t  t” t  t” |  t” d S r)   )r   rO   ro   Zcreate_empty_filer:  r0   r   r   r   ŚtestEmptyFile   s   

z&BadFileZipImportTestCase.testEmptyFilec              
   C   s¬   t  t” t ttjd”}z<t |” |  tj	”}t 
t” W d    n1 s)w   Y  W t td” t  t” d S W t td” t  t” d S t td” t  t” w )Nr   i¶  )r   rO   ro   r!   rE   ŚO_CREATŚcloserż   r:   r   rĖ   Śchmod)r1   ŚfdŚcmr   r   r   ŚtestFileUnreadable%  s   

’ś’z+BadFileZipImportTestCase.testFileUnreadablec                 C   s4   t  t” ttd}| d” | ”  |  t” d S )Nśw+Zaaaaaaaaaaaaaaaaaaaaaa)r   rO   ro   rE   rF   rD  r:  )r1   rI   r   r   r   ŚtestNotZipFile3  s
   


z'BadFileZipImportTestCase.testNotZipFilec                 C   s¾  t  t” ttd}| t dd”” | d” | ”  t 	t”}z·t
 ”  t
 dt” |  t|jd ” W d    n1 s?w   Y  |  t|jd ” |  t|jd ” |  t|jd ” |  t|jd ” |  t|jd ” |  t|jd ” |  t|jd ” tj}|  | d”” |  | d”” t
 ”  t
 dt” |  ||jd” W d    n1 s¬w   Y  |  ||jd” |  t|jd” |  ||jd” |  ||jd” W tj ”  d S tj ”  w )NrI  z=IiPKZaaaaaaaaaaaaaaaaaarŹ   Śabc)r   rO   ro   rE   rF   r   r   rD  r:   rĖ   rĻ   rŠ   rŃ   rŅ   rż   r/  rÖ   rÓ   rŲ   rŪ   rĪ   Śget_coder÷   rŻ   r   rÜ   ŚOSErrorr;   r.   )r1   rI   rX   Śerrorr   r   r   Ś_testBogusZipFile;  s<   




ž
žz*BadFileZipImportTestCase._testBogusZipFileN)r4   r5   r6   r:  r=  r>  r?  rA  rB  rH  rJ  rO  r   r   r   r   r9    s    r9  c                   C   s   t  t” d S r)   )r   rO   ro   r   r   r   r   ŚtearDownModule^  r%   rP  Ś__main__)<r*   r!   r   r   Śimportlib.utilr   rP   r7  Zunittest.mockrĻ   rü   r   Ztest.supportr   r   Śzipfiler   r   r   r   r:   r8   r  r  r  Ś	tracebackr	   r
   r   re   ri   rh   r   r”   r  r   r$   rg   r¢   rs   ro   r¦   r©   r#   r¶   r·   r^   r   Ścache_from_sourceZpyc_filerr   ZTestCaser(   r7   Zrequires_zlibr8  r9  rP  r4   Śmainr   r   r   r   Ś<module>   sj    ’     =R’