B
    u9a^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   ś$/usr/lib/python3.7/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   Z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   Z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   ZrmtreeŚitemsr   r    Śjoinr   ŚisdirŚmakedirsŚdirnameŚopenŚwrite)	r)   ŚfilesZ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Śrbr5   )r6   r   Śunlinkr   r7   r   ŚtimeŚ	localtimeŚcompressionŚcompress_typeŚwritestrŚgetr<   Śreadr=   )r)   r>   ZzipNameŚkwŚzr?   r   r   ŚzinforC   Ś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)rQ   r#   r    ŚinsertŚTEMP_ZIPr   Śimport_moduler8   rK   Zget_fileŚassertEqualr   )r)   Zexpected_extr>   ŚmodulesrM   ŚmodrR   Ś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_namesZskipTestrW   ŚNOWŚtest_srcrZ   ŚImportErrorrH   r   Śfailr   )r)   r>   r   r   r   ŚtestAFakeZlib   s    




z+UncompressedZipImportTestCase.testAFakeZlibc             C   s"   t d ttfi}|  d|t ” d S )Nz.py)ŚTESTMODr]   r^   rZ   )r)   r>   r   r   r   ŚtestPy±   s    z$UncompressedZipImportTestCase.testPyc             C   s"   t t ttfi}|  t|t ” d S )N)rb   Śpyc_extr]   Śtest_pycrZ   )r)   r>   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)rb   r]   r^   rd   re   rZ   )r)   r>   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)rV   Śstate)rX   )r)   r   r   ŚcheckČ   s    zFUncompressedZipImportTestCase.testUncheckedHashBasedPyc.<locals>.check)rR   )	r   r   Śsource_hashŚ_bootstrap_externalŚ_code_to_hash_pycŚcompilerb   r]   rZ   )r)   Śsourcerl   Śbytecoder>   rk   r   )r)   r   ŚtestUncheckedHashBasedPyc¾   s    
z7UncompressedZipImportTestCase.testUncheckedHashBasedPycc             C   s"   t d tdfi}|  d |t ” d S )Nz.pyŚ )rb   r]   rZ   )r)   r>   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)Ś	bytearrayre   rb   r]   r^   rd   rZ   )r)   Śbadmagic_pycr>   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   ru   z.pyz)expected ImportError; import from bad pyc)rv   re   rb   rd   r]   rZ   r_   r`   )r)   rw   r>   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)rv   re   rb   r]   r^   rd   rZ   )r)   Zbadtime_pycr>   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   rd   r]   re   rb   rZ   )r)   Śpackdirr>   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   Ś	TESTPACK2rd   r]   re   rb   rZ   )r)   r   Śpackdir2r>   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 )Nrs   )	r~   r   r   r   r]   rb   rd   re   rZ   )r)   r   r   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Ś3rs   Ś2z	path1.zipr   r{   éž’’’r   r4   é   éż’’’éü’’’)r~   r   r   r   r]   rb   rd   re   r    ŚabspathrQ   ŚTEMP_DIRrA   r#   rS   r   rU   rV   ŚlenŚ__path__ŚbasenameŚsplitr   Ślistr8   Ś__file__)r)   r   r   Śpackdir3Śfiles1Śfiles2Śzip1Śzip2rX   Ś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   rs   z	path1.zipr   z	path2.zipr   r{   r   r   r4   r   r   r   )r~   r   r   r   r]   rb   rd   re   r    r   rQ   r#   rS   r   rU   rV   r   r   r   r   r   r8   r   )r)   r   r   r   r   r   r   r   rX   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spamrB   s   spamTr   F),r~   r   r   r   rd   r]   re   rb   r   rT   r7   r   rF   rG   rH   rI   ŚcommentrJ   Ścloser2   ŚzipimporterrV   ŚarchiveŚ
is_packageŚfind_moduleŚassertIsNotNoneŚassertIsInstanceŚassertFalseŚload_moduleŚget_filenamer   r   rU   r   r    r8   r!   Ś
assertTruer#   rW   Ś
get_sourceŚ
__loader__ŚprefixŚremove)r)   r   r   r>   rN   r?   r   r   rO   ŚziZfind_modŚload_modrX   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}   rB   s   eggsTF))r~   r   r   r   rd   r]   re   rb   r   rT   r7   r   rF   rG   rH   rI   r   rJ   r   r2   r    rV   r”   r¬   r¢   r§   rØ   r   r£   r¤   r„   r¦   r!   r   rU   r©   r#   rW   rŖ   r«   r­   )r)   r   r   r>   rN   r?   r   r   rO   r®   rX   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 )NrB   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   rT   rH   ŚbytesŚrangerJ   r   r2   r    rV   Śget_dataZassertInŚreprr   r­   )r)   rN   r?   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)   ri   Śnewr   r   r   r   !  s    zGUncompressedZipImportTestCase.test_issue31291.<locals>.FunnyStr.replaceN)r,   r-   r.   r   r   r   r   r   ŚFunnyStr   s   rĮ   rB   ztest31291.dats   foo)Śstrr   rT   rJ   r   r2   r    rV   r¼   r   r­   )r)   rĮ   rN   r?   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   ro   r]   r   rb   rd   rZ   )r)   Śsrcr   r>   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)rb   r]   rQ   r#   r    rS   rT   r   rU   rV   ŚtestŚassertRaisesŚAssertionError)r)   rÄ   r>   rX   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)rC   )rb   r]   r^   rZ   )r)   r>   r   r   r   ŚtestImport_WithStuffG  s    
z2UncompressedZipImportTestCase.testImport_WithStuffc             C   s   |   t |”t” d S )N)rV   ŚinspectZ	getsourcer^   )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)rR   )rb   r]   r^   rZ   rĶ   )r)   r>   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)rR   )	r   ro   r^   r]   r   rb   rd   rZ   rĶ   )r)   r   r>   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)
)rR   )rb   r]   r^   rZ   )r)   Ścallbackr>   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)ŚdoctestZmasterZtestfileŚlocalsrV   )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Ö   ŚrunrV   )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   rV   Ś	raise_srcŚstripr   Śtb_frameŚioŚStringIOr	   r©   ŚgetvalueŚendswithrČ   )r)   rĢ   ŚtbrP   Z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)rR   )rb   r]   rß   rZ   rź   )r)   r>   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.ziprB   z.py)r   ŚTESTFN_UNENCODABLEr   r   rb   rF   rG   r]   rH   rI   rJ   r^   r   r2   r    r§   r   r­   )r)   ŚfilenamerN   rO   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.ziprB   z.py)r   ZTESTFNr6   rE   r   r   rb   rF   rG   r]   rH   rI   rJ   r^   r2   r    r   ŚfsencodeZassertWarnsŚDeprecationWarningrv   Ś
memoryview)r)   rķ   rN   rO   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)r2   r    Ś__new__rĒ   Ś
ValueErrorr£   Śfind_loaderr§   rØ   r¢   r¼   Śget_coderŖ   )r)   r®   r   r   r   ŚtestUninitializedZipimporter­  s    z:UncompressedZipImportTestCase.testUninitializedZipimporter)2r,   r-   r.   r   rH   r*   r   rA   rT   rQ   rZ   ra   rc   rf   rg   rr   rt   rx   ry   r|   r   r   r   r   r   r“   rµ   r¾   rĆ   rÅ   rÉ   rŹ   rĶ   rĪ   rĻ   rŃ   rŲ   rŁ   rŪ   rÜ   rź   rė   ŚunittestZskipIfr   rģ   rī   rņ   Ścpython_onlyr÷   r   r   r   r   r/   P   sP    	
MI<5r/   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_decompressrB   zbar.pys   print("hello world")Z
decompressZbar)r   rT   r6   r   rE   rJ   r   r2   r    Z	swap_attrr[   rĒ   Ś	TypeErrorrŖ   )r)   rü   Zzip_filer®   r   r   r   Śtest_issue31602Ą  s    
z+CompressedZipImportTestCase.test_issue31602N)r,   r-   r.   r   rH   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Ē   r2   Ś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 )Nrs   )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ż   r2   r    rb   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   rE   rb   Z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   rE   rb   r   r<   ŚO_CREATr   rĒ   r2   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   rE   rb   r<   r=   r   r  )r)   r@   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   rE   rb   r<   r=   r   r   r   r2   r    rĒ   rż   r£   r§   r¢   rö   r¼   rŖ   r   rV   ŚOSErrorr3   r'   )r)   r@   rN   Śerrorr   r   r   Ś_testBogusZipFileż  s*    



z*BadFileZipImportTestCase._testBogusZipFileN)r,   r-   r.   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   Zrun_unittestr/   rś   r’   rE   rb   r   r   r   r   Ś	test_main  s    
r  Ś__main__)6r#   r   r   r   Śimportlib.utilr   rF   rų   rĘ   r   Zzipfiler   r   r   r   r2   r0   rÕ   rĖ   rā   Ś	tracebackr   r   r	   r[   r_   r^   ro   Ztest_corß   r   r!   r]   r   re   rb   r~   r   r    r   r   rT   r   Ścache_from_sourceZpyc_filerd   ZTestCaser"   r/   Zrequires_zlibrś   r’   r  r,   r   r   r   r   Ś<module>   sZ   
    pK

