B
    18\^y  ć               @   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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 yd dlZW n ek
rÄ   dZY nX 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* +e#d ”Z,dZ-G dd dej.Z/G dd de/Z0e	j1G dd de0Z2G dd dej.Z3dd Z4e5dkre4  dS )é    N)Śsupport)ŚZipFileŚZipInfoŚ
ZIP_STOREDŚZIP_DEFLATED)Ś
extract_tbŚextract_stackŚprint_tbzHdef get_name():
    return __name__
def get_file():
    return __file__
z<???>Śexecz def do_raise(): raise TypeError
c             C   sd   t  | ”}t|tdkr<|dk r,t|}ntdt| }tjjt ddt||d@ ” | }|S )Ng        i’’’lż’’’     z<iiir   l   ’’ )	ŚmarshalŚdumpsŚtypeŚintŚ	importlibŚutilŚMAGIC_NUMBERŚstructŚpack)ŚcoŚmtimeŚsizeŚdataŚpyc© r   śW/oak/stanford/groups/akundaje/marinovg/programs/Python-3.7.3/Lib/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.   s    r!   ZziptestmoduleZziptestpackageZziptestpackage2Z	junk95142zjunk95142.zipz.pyz.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   Śmodules_setupŚmodules_before)Śselfr   r   r   ŚsetUpA   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 )N)	r    r#   r$   r%   r&   r'   r   Śmodules_cleanupr)   )r*   r   r   r   ŚtearDownH   s
    
z ImportHooksBaseTestCase.tearDownN)Ś__name__Ś
__module__Ś__qualname__r+   r-   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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-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)e* +e,j-dGkdH”dIdJ Z.dKdL Z/e,j0dMdN Z1dGS )OŚUncompressedZipImportTestCasec             C   s    t  ”  tj ”  t | ” d S )N)Ś	linecacheŚ
clearcacheŚ	zipimportŚ_zip_directory_cacher'   r"   r+   )r*   r   r   r   r+   T   s    
z#UncompressedZipImportTestCase.setUpc       	   
   C   s¢   |   tj|” x| ” D ]\}\}}tj ||”}|d tjkrXtj |”st 	|” qtj 
|”}tj |”szt 	|” t|d}| |” W d Q R X qW d S )Né’’’’Śwb)Ś
addCleanupr   ŚrmtreeŚitemsr   r    Śjoinr   ŚisdirŚmakedirsŚdirnameŚopenŚwrite)	r*   ŚfilesŚdirNameŚnamer   r   r    ZdnameŚfpr   r   r   ŚmakeTree[   s    
z&UncompressedZipImportTestCase.makeTreec          	   K   sĀ   |   tj|” t|dD}x<| ” D ]0\}\}}t|t |”}| j|_	| 
||” q$W W d Q R X | dd ”}	|	d k	r¾t|d}
|
 ” }W d Q R X t|d}
|
 |	” |
 |” W d Q R X d S )NŚwŚstuffŚrbr7   )r8   r   Śunlinkr   r:   r   ŚtimeŚ	localtimeŚcompressionŚcompress_typeŚwritestrŚgetr?   Śreadr@   )r*   rA   ZzipNameŚkwŚzrC   r   r   ŚzinforG   Śfr   r   r   ŚmakeZipl   s    
z%UncompressedZipImportTestCase.makeZipc             O   st   | j |f| tj dt” t d |””}| d”}|d k	rF|| |rp| 	” }|  
|tjjtf| | ” d S )Nr   r   Ścall)rU   r#   r    ŚinsertŚTEMP_ZIPr   Śimport_moduler;   rO   Zget_fileŚassertEqualr   )r*   Zexpected_extrA   ŚmodulesrQ   ŚmodrV   Śfiler   r   r   ŚdoTest   s    
z$UncompressedZipImportTestCase.doTestc             C   s   dt jkr|  d” dt jkr&t jd= dttfi}y|  d|d” W n( tk
rl   | jt	krh|  
d” Y nX | jtkr|  
d” d S )NŚzlibzzlib is a builtin modulezzlib.pyz.pyz&expected test to not raise ImportErrorz"expected test to raise ImportError)r#   Śbuiltin_module_namesŚskipTestr[   ŚNOWŚtest_srcr^   ŚImportErrorrL   r   Śfailr   )r*   rA   r   r   r   ŚtestAFakeZlib   s    




z+UncompressedZipImportTestCase.testAFakeZlibc             C   s"   t d ttfi}|  d|t ” d S )Nz.py)ŚTESTMODrb   rc   r^   )r*   rA   r   r   r   ŚtestPy±   s    z$UncompressedZipImportTestCase.testPyc             C   s"   t t ttfi}|  t|t ” d S )N)rg   Śpyc_extrb   Śtest_pycr^   )r*   rA   r   r   r   ŚtestPycµ   s    z%UncompressedZipImportTestCase.testPycc             C   s.   t d ttft t ttfi}|  t|t ” d S )Nz.py)rg   rb   rc   ri   rj   r^   )r*   rA   r   r   r   ŚtestBoth¹   s    z&UncompressedZipImportTestCase.testBothc                sj   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 )Ns   state = 'old'z???r
   Fz.pyzstate = 'new'z.pycé   c                s      | jd” d S )NŚold)rZ   Śstate)r\   )r*   r   r   ŚcheckČ   s    zFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check)rV   )	r   r   Śsource_hashŚ_bootstrap_externalŚ_code_to_hash_pycŚcompilerg   rb   r^   )r*   Śsourcerq   ŚbytecoderA   rp   r   )r*   r   ŚtestUncheckedHashBasedPyc¾   s    
z7UncompressedZipImportTestCase.testUncheckedHashBasedPycc             C   s"   t d tdfi}|  d |t ” d S )Nz.pyŚ )rg   rb   r^   )r*   rA   r   r   r   ŚtestEmptyPyĢ   s    z)UncompressedZipImportTestCase.testEmptyPyc             C   sF   t t}|d  dN  < td ttftt t|fi}|  d|t” d S )Nr   é   z.py)Ś	bytearrayrj   rg   rb   rc   ri   r^   )r*   Śbadmagic_pycrA   r   r   r   ŚtestBadMagicŠ   s
    z*UncompressedZipImportTestCase.testBadMagicc             C   s^   t t}|d  dN  < tt t|fi}y|  d|t” W n tk
rN   Y nX |  d” d S )Nr   rz   z.pyz)expected ImportError; import from bad pyc)r{   rj   rg   ri   rb   r^   rd   re   )r*   r|   rA   r   r   r   ŚtestBadMagic2Ų   s    z+UncompressedZipImportTestCase.testBadMagic2c             C   sF   t t}|d  dN  < td ttftt t|fi}|  d|t” d S )Né   é   z.py)r{   rj   rg   rb   rc   ri   r^   )r*   Zbadtime_pycrA   r   r   r   ŚtestBadMTimeä   s
    z*UncompressedZipImportTestCase.testBadMTimec             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   ri   rb   rj   rg   r^   )r*   ŚpackdirrA   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 )Nr   )	r   r   r   Ś	TESTPACK2ri   rb   rj   rg   r^   )r*   r   Śpackdir2rA   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 )Nrx   )	r   r   r   r   rb   rg   ri   rj   r^   )r*   r   r   rA   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Ś3rx   Ś2z	path1.zipr   r   éž’’’r   r6   é   éż’’’éü’’’)r   r   r   r   rb   rg   ri   rj   r    ŚabspathrU   ŚTEMP_DIRrE   r#   rW   r   rY   rZ   ŚlenŚ__path__ŚbasenameŚsplitr   Ślistr;   Ś__file__)r*   r   r   Śpackdir3Śfiles1Śfiles2Śzip1Śzip2r\   Śp1Śp2ŚmpathŚsubpkgr   r   r   ŚtestMixedNamespacePackage  sb    


 

 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   rx   z	path1.zipr   z	path2.zipr   r   r   r   r6   r   r   r   )r   r   r   r   rb   rg   ri   rj   r    r   rU   r#   rW   r   rY   rZ   r   r   r   r   r   r;   r   )r*   r   r   r   r   r   r   r   r\   r   r   r   r    r   r   r   ŚtestNamespacePackageU  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t	d}zxB| 
” D ]6\}\}}t|t |”}| j|_d|_| ||” qpW | ”  t t	”}	|  |	jt	” |  |	 t ”d” |	 d”}
|  |
” |  |
tj” |  |
 d”” |
 d”}|  |
 d”|j” |	 t ”}|  |	 t ”|j” t  t ”j!d }tj" #t	t ”}|  ||” |  |	 |d ”d” |  |	 |t ”d” |  |	 |t ”d” |t }t$|}t  |”}|  %|t&j'k” |  |	 (t ”d ” |  |	 (|”d ” |  |	 |”|j” |j)}|  | (|”d ” |  | |”|j” t t	tj t  ”}|  |jt	” |  |j*t tj ” W d | ”  t +t	” X d S )Nr   ZspamrF   s   spamTr   F),r   r   r   r   ri   rb   rj   rg   r   rX   r:   r   rJ   rK   rL   rM   ŚcommentrN   Ścloser4   ŚzipimporterrZ   ŚarchiveŚ
is_packageŚfind_moduleŚassertIsNotNoneŚassertIsInstanceŚassertFalseŚload_moduleŚget_filenamer   r   rY   r   r    r;   r!   Ś
assertTruer#   r[   Ś
get_sourceŚ
__loader__ŚprefixŚremove)r*   r   r   rA   rR   rC   r   r   rS   ŚziZfind_modŚload_modr\   Zexisting_pack_pathZexpected_path_pathŚmod_pathŚmod_nameŚloaderŚzi2r   r   r   ŚtestZipImporterMethods  s\    







z4UncompressedZipImportTestCase.testZipImporterMethodsc          	   C   sJ  t tj }|t tj }|d t ttf|t t ttfi}tt	d}zčxB| 
” D ]6\}\}}t|t |”}| j|_d|_| ||” qTW | ”  t t	tj | ”}	|  |	jt	” |  |	j|” |  |	 t”d” |	 t”}
|  |	 t”|
j” |  |	 ttj d ”d” |  |	 ttj t ”d” t	tj | t }t |”}| t”}|  |” |  |tj” |  | t”” | t”}|  | t”|j” ttj t }t |}t! "|”}
|  #|t$j%k” |  |	 &t”d ” |  |	 &|”d ” |  |	 |”|
j” |
j'}|  | &|”d ” |  | |”|
j” W d | ”  t (t	” X d S )Nr   rF   s   eggsTF))r   r   r   r   ri   rb   rj   rg   r   rX   r:   r   rJ   rK   rL   rM   r£   rN   r¤   r4   r„   rZ   r¦   r±   r§   r¬   r­   r   rØ   r©   rŖ   r«   r!   r   rY   r®   r#   r[   rÆ   r°   r²   )r*   r   r   rA   rR   rC   r   r   rS   r³   r\   Zpkg_pathrø   Zfind_mod_dottedr“   rµ   r¶   r·   r   r   r   Ś$testZipImporterMethodsInSubDirectoryŚ  sV    







zBUncompressedZipImportTestCase.testZipImporterMethodsInSubDirectoryc          	   C   s   t td}| j|_z^d}tdd tdD }| ||” | ”  t t”}|  	|| 
|”” |  dt|” W d | ”  t t” X d S )NrF   ztestdata.datc             s   s   | ]
}|V  qd S )Nr   )Ś.0Śxr   r   r   ś	<genexpr>  s    z<UncompressedZipImportTestCase.testGetData.<locals>.<genexpr>é   zzipimporter object)r   rX   rL   ŚbytesŚrangerN   r¤   r4   r„   rZ   Śget_dataŚassertInŚreprr   r²   )r*   rR   rC   r   r³   r   r   r   ŚtestGetData  s    

z)UncompressedZipImportTestCase.testGetDatac          	   C   st   G dd dt }ttd}z@d}d}| ||” | ”  t t”}|  || ||”” W d | ”  t	 
t” X d S )Nc               @   s   e Zd Zdd ZdS )z?UncompressedZipImportTestCase.test_issue31291.<locals>.FunnyStrc             S   s   dS )Né*   r   )r*   rn   Śnewr   r   r   r   !  s    zGUncompressedZipImportTestCase.test_issue31291.<locals>.FunnyStr.replaceN)r.   r/   r0   r   r   r   r   r   ŚFunnyStr   s   rĒ   rF   ztest31291.dats   foo)Śstrr   rX   rN   r¤   r4   r„   rZ   rĮ   r   r²   )r*   rĒ   rR   rC   r   r³   r   r   r   Śtest_issue31291  s    

z-UncompressedZipImportTestCase.test_issue31291c             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")
z<???>r
   z	some.dataz	some data)r   rt   rb   r   rg   ri   r^   )r*   Śsrcr   rA   r   r   r   ŚtestImporterAttr/  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
z.pyr   r   F)rg   rb   rU   r#   r    rW   rX   r   rY   rZ   ŚtestŚassertRaisesŚAssertionError)r*   rŹ   rA   r\   r   r   r   ŚtestDefaultOptimizationLevel:  s    

z:UncompressedZipImportTestCase.testDefaultOptimizationLevelc             C   s&   t d ttfi}| jd|t dd d S )Nz.pys6  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)rG   )rg   rb   rc   r^   )r*   rA   r   r   r   ŚtestImport_WithStuffG  s    
z2UncompressedZipImportTestCase.testImport_WithStuffc             C   s   |   t |”t” d S )N)rZ   ŚinspectŚ	getsourcerc   )r*   Śmoduler   r   r   ŚassertModuleSourceN  s    z0UncompressedZipImportTestCase.assertModuleSourcec             C   s(   t d ttfi}| jd|t | jd d S )Nz.py)rV   )rg   rb   rc   r^   rŌ   )r*   rA   r   r   r   ŚtestGetSourceQ  s    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 )Nz<???>r
   z.py)rV   )	r   rt   rc   rb   r   rg   ri   r^   rŌ   )r*   r   rA   r   r   r   ŚtestGetCompiledSourceU  s    z3UncompressedZipImportTestCase.testGetCompiledSourcec             C   s.   t d ttfdtdfi}| jd|t |d d S )Nz.pyzxyz.txtz>>> log.append(True)
)rV   )rg   rb   rc   r^   )r*   ŚcallbackrA   r   r   r   Ś
runDoctest[  s    z(UncompressedZipImportTestCase.runDoctestc             C   sF   g }t jd  }t _zt jd|dt d W d |t _X |  |dg” d S )Nzxyz.txtT)ŚpackageŚmodule_relativeŚglobs)ŚdoctestŚmasterZtestfileŚlocalsrZ   )r*   rÓ   ŚlogZ
old_masterr   r   r   ŚdoDoctestFile`  s    z+UncompressedZipImportTestCase.doDoctestFilec             C   s   |   | j” d S )N)rŲ   rą   )r*   r   r   r   ŚtestDoctestFilel  s    z-UncompressedZipImportTestCase.testDoctestFilec             C   s.   g }t jd|dt d ”  |  |dg” d S )Nzxyz.txtT)rŁ   rŚ   rŪ   )rÜ   ZDocFileTestrŽ   ŚrunrZ   )r*   rÓ   rß   r   r   r   ŚdoDoctestSuiteo  s
    z,UncompressedZipImportTestCase.doDoctestSuitec             C   s   |   | j” d S )N)rŲ   rć   )r*   r   r   r   ŚtestDoctestSuitew  s    z.UncompressedZipImportTestCase.testDoctestSuitec             C   sŖ   y|  ”  W n   t ” d j}t|dd \}}}}|  |t ” ” t|j	dd \}}}}|  |t ” ” t
 ” }t|d| |  | ”  t”” Y n
X tdd S )Nr   r   r   zThis ought to be impossible)Zdo_raiser#   Śexc_infoŚtb_nextr   rZ   Ś	raise_srcŚstripr   Śtb_frameŚioŚStringIOr	   r®   ŚgetvalueŚendswithrĪ   )r*   rÓ   ŚtbrT   ŚlnoŚnŚlineŚsr   r   r   ŚdoTracebackz  s    z)UncompressedZipImportTestCase.doTracebackc             C   s(   t d ttfi}| jd |t | jd d S )Nz.py)rV   )rg   rb   rē   r^   ró   )r*   rA   r   r   r   ŚtestTraceback  s    z+UncompressedZipImportTestCase.testTracebackNzneed an unencodable filenamec          	   C   sj   t jd }t|d}ttd t t”}| j|_	| 
|t” | ”  zt |” t” W d t |” X d S )Nz.ziprF   z.py)r   ŚTESTFN_UNENCODABLEr   r   rg   rJ   rK   rb   rL   rM   rN   rc   r¤   r4   r„   r¬   r   r²   )r*   ŚfilenamerR   rS   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 Q R X t |” t t |”” |  t” t tt |”” W d Q R X |  t” t tt |”” W d Q R X d S )Nz.ziprF   z.py)r   ŚTESTFNr8   rI   r   r   rg   rJ   rK   rb   rL   rM   rN   rc   r4   r„   r   ŚfsencodeŚassertWarnsŚDeprecationWarningr{   Ś
memoryview)r*   rö   rR   rS   r   r   r   ŚtestBytesPath  s    

z+UncompressedZipImportTestCase.testBytesPathc             C   s   t j t j”}|  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 S )NZfoo)r4   r„   Ś__new__rĶ   Ś
ValueErrorrØ   Śfind_loaderr¬   r­   r§   rĮ   Śget_coderÆ   )r*   r³   r   r   r   ŚtestUninitializedZipimporter­  s    z:UncompressedZipImportTestCase.testUninitializedZipimporter)2r.   r/   r0   r   rL   r+   r   rE   rX   rU   r^   rf   rh   rk   rl   rw   ry   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ō   ŚunittestŚskipIfr   rõ   r÷   rż   Ścpython_onlyr  r   r   r   r   r1   P   sP    	
MI<5r1   c               @   s   e Zd ZeZejdd ZdS )ŚCompressedZipImportTestCasec          	   C   sr   dd }t td"}|  tjt” | ddt” W d Q R X t t”}t 	t
d|” |  t|jd” W d Q R X d S )Nc              W   s   d S )Nr   )Śargsr   r   r   Śbad_decompressÄ  s    zCCompressedZipImportTestCase.test_issue31602.<locals>.bad_decompressrF   zbar.pys   print("hello world")Ś
decompressZbar)r   rX   r8   r   rI   rN   r   r4   r„   Ś	swap_attrr_   rĶ   Ś	TypeErrorrÆ   )r*   r  Zzip_filer³   r   r   r   Śtest_issue31602Ą  s    
z+CompressedZipImportTestCase.test_issue31602N)r.   r/   r0   r   rL   r   r  r  r   r   r   r   r  ¼  s   r  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 )N)rĶ   r4   ŚZipImportErrorr„   )r*   rö   r   r   r   ŚassertZipFailureĻ  s    z)BadFileZipImportTestCase.assertZipFailurec             C   s   |   d” d S )NZAdfjdkFJKDFJjdklfjs)r  )r*   r   r   r   Ś
testNoFileÓ  s    z#BadFileZipImportTestCase.testNoFilec             C   s   |   d” d S )Nrx   )r  )r*   r   r   r   ŚtestEmptyFilenameÖ  s    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  r4   r„   rg   r   r   rł   )r*   r   r   r   ŚtestBadArgsŁ  s    
z$BadFileZipImportTestCase.testBadArgsc             C   s   |   dd ” d S )NŚAič  )r  )r*   r   r   r   ŚtestFilenameTooLongß  s    z,BadFileZipImportTestCase.testFilenameTooLongc             C   s"   t  t” t  t” |  t” d S )N)r   rI   rg   Ścreate_empty_filer  )r*   r   r   r   ŚtestEmptyFileā  s    

z&BadFileZipImportTestCase.testEmptyFilec          
   C   sh   t  t” t ttjd”}z0t |” |  tj	”}t 
t” W d Q R X W d t td” t  t” X d S )Nr   i¶  )r   rI   rg   r   r?   ŚO_CREATr¤   rĶ   r4   r  r„   Śchmod)r*   ŚfdŚcmr   r   r   ŚtestFileUnreadableē  s    

z+BadFileZipImportTestCase.testFileUnreadablec             C   s4   t  t” ttd}| d” | ”  |  t” d S )Nzw+Zaaaaaaaaaaaaaaaaaaaaaa)r   rI   rg   r?   r@   r¤   r  )r*   rD   r   r   r   ŚtestNotZipFileõ  s
    


z'BadFileZipImportTestCase.testNotZipFilec             C   s   t  t” ttd}| t dd”” | d” | ”  t 	t”}zĢ|  
t|jd ” |  
t|jd ” |  
t|jd ” |  
t|jd ” |  
t|jd ” |  
t|jd ” tj}|  | d”d ” |  
||jd” |  
||jd” |  
t|jd” |  
||jd” |  
||jd” W d tj ”  X d S )Nzw+z=IiPKZaaaaaaaaaaaaaaaaaaŚabc)r   rI   rg   r?   r@   r   r   r¤   r4   r„   rĶ   r  rØ   r¬   r§   r  rĮ   rÆ   r  rZ   ŚOSErrorr5   r'   )r*   rD   rR   Śerrorr   r   r   Ś_testBogusZipFileż  s*    



z*BadFileZipImportTestCase._testBogusZipFileN)r.   r/   r0   r  r  r  r  r  r  r  r  r   r   r   r   r   r  Ī  s   r  c            	   C   s$   zt  ttt” W d t  t” X d S )N)r   Śrun_unittestr1   r  r  rI   rg   r   r   r   r   Ś	test_main  s    
r"  Ś__main__)6r#   r   r   r   Śimportlib.utilr   rJ   r  rĢ   r   Śzipfiler   r   r   r   r4   r2   rÜ   rŃ   rź   Ś	tracebackr   r   r	   r_   rd   rc   rt   Ztest_corē   r   r!   rb   r   rj   rg   r   r   r    r   r   rX   r   Ścache_from_sourceŚpyc_fileri   ŚTestCaser"   r1   Śrequires_zlibr  r  r"  r.   r   r   r   r   Ś<module>   sZ   
    pK

