3
Kd(                 @   sP  d dl Z d dlZd dlmZmZmZ d dlmZ d dlj	j
Zd dlmZmZmZ d dljZd dlmZ d dlmZ d4ddZdad	d
 Zdd ZdZdZdZdZddddg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(G d&d' d'Z)G d(d) d)Z*G d*d+ d+Z+G d,d- d-Z,G d.d/ d/Z-G d0d1 d1Z.d2d3 Z/dS )5    N)mkdtempmkstempNamedTemporaryFile)rmtree)assert_assert_equalassert_raises)urlparse)URLErrorc             C   s$   | t  krtdd}|S tddS )z$Stub to replace urlopen for testing.Zurltmp_)prefixzName or service not knownN)valid_httpurlr   r
   )urldatatmpfile r   T/var/www/html/virt/lib64/python3.6/site-packages/numpy/lib/tests/test__datasource.pyurlopen_stub   s    

r   c               C   s   t jatt _d S )N)urllib_requesturlopenold_urlopenr   r   r   r   r   setup_module   s    r   c               C   s
   t t_d S )N)r   r   r   r   r   r   r   teardown_module!   s    r   zhttp://www.google.com/z
index.htmlzhttp://fake.abc.web/site/zfake.txtz/etc/shadowz../../shadowz..\system.datzc:\windows\system.dats   three is the magic numberc             C   s"   t dd| dd\}}tj| |S )Nz.txtdstmp_T)suffixr   dirtext)r   osclose)filedirfdpathr   r   r   valid_textfile2   s    
r!   c             C   s*   t dd| d\}}tj| tj| |S )Nz.txtr   )r   r   r   )r   r   r   remove)r   r   r    r   r   r   invalid_textfile9   s    

r#   c               C   s   t t S )N)	http_path	http_filer   r   r   r   r   A   s    r   c               C   s   t t S )N)http_fakepathhttp_fakefiler   r   r   r   invalid_httpurlE   s    r(   c               C   s   t S )N)r$   r   r   r   r   valid_baseurlI   s    r)   c               C   s   t S )N)r&   r   r   r   r   invalid_baseurlM   s    r*   c               C   s   t S )N)r%   r   r   r   r   valid_httpfileQ   s    r+   c               C   s   t S )N)r'   r   r   r   r   invalid_httpfileU   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 )TestDataSourceOpenc             C   s   t  | _tj| j| _d S )N)r   tmpdir
datasource
DataSourceds)selfr   r   r   setupZ   s    zTestDataSourceOpen.setupc             C   s   t | j | `d S )N)r   r.   r1   )r2   r   r   r   teardown^   s    
zTestDataSourceOpen.teardownc             C   s"   | j jt }t| |j  d S )N)r1   openr   r   r   )r2   fhr   r   r   test_ValidHTTPb   s    z!TestDataSourceOpen.test_ValidHTTPc             C   s\   t  }tt| jj| y| jj| W n0 tk
rV } zt|jd k W Y d d }~X nX d S )N)r(   r   IOErrorr1   r5   r   errno)r2   r   er   r   r   test_InvalidHTTPg   s    z#TestDataSourceOpen.test_InvalidHTTPc             C   s   t t| jjt  d S )N)r   r
   r1   _cacher(   )r2   r   r   r   test_InvalidHTTPCacheURLErrorp   s    z0TestDataSourceOpen.test_InvalidHTTPCacheURLErrorc             C   s*   t | j}| jj|}t| |j  d S )N)r!   r.   r1   r5   r   r   )r2   
local_filer6   r   r   r   test_ValidFiles   s    
z!TestDataSourceOpen.test_ValidFilec             C   s   t | j}tt| jj| d S )N)r#   r.   r   r8   r1   r5   )r2   Zinvalid_filer   r   r   test_InvalidFiley   s    
z#TestDataSourceOpen.test_InvalidFilec             C   s   ydd l }W n tk
r(   tj  Y nX tjj| jd}|j|d}|j	t
 |j  | jj|}|j }|j  tt
| d S )Nr   zfoobar.txt.gzw)gzipImportErrorpytestskipr   r    joinr.   r5   write
magic_liner   r1   readliner   )r2   rB   filepathfpresultr   r   r   test_ValidGzipFile}   s    
z%TestDataSourceOpen.test_ValidGzipFilec             C   s   ydd l }W n tk
r(   tj  Y nX tjj| jd}|j|d}|j	t
 |j  | jj|}|j }|j  tt
| d S )Nr   zfoobar.txt.bz2rA   )bz2rC   rD   rE   r   r    rF   r.   BZ2FilerG   rH   r   r1   r5   rI   r   )r2   rN   rJ   rK   rL   r   r   r   test_ValidBz2File   s    
z$TestDataSourceOpen.test_ValidBz2FileN)__name__
__module____qualname__r3   r4   r7   r;   r=   r?   r@   rM   rP   r   r   r   r   r-   Y   s   	r-   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestDataSourceExistsc             C   s   t  | _tj| j| _d S )N)r   r.   r/   r0   r1   )r2   r   r   r   r3      s    zTestDataSourceExists.setupc             C   s   t | j | `d S )N)r   r.   r1   )r2   r   r   r   r4      s    
zTestDataSourceExists.teardownc             C   s   t | jjt  d S )N)r   r1   existsr   )r2   r   r   r   r7      s    z#TestDataSourceExists.test_ValidHTTPc             C   s   t | jjt d d S )NF)r   r1   rU   r(   )r2   r   r   r   r;      s    z%TestDataSourceExists.test_InvalidHTTPc             C   sD   t | j}t| jj| t }t |}t| jj| t| d S )N)r!   r.   r   r1   rU   r   r   )r2   r   Zlocaldirr   r   r   r?      s    
z#TestDataSourceExists.test_ValidFilec             C   s    t | j}t| jj|d d S )NF)r#   r.   r   r1   rU   )r2   r   r   r   r   r@      s    
z%TestDataSourceExists.test_InvalidFileN)	rQ   rR   rS   r3   r4   r7   r;   r?   r@   r   r   r   r   rT      s   
rT   c               @   sL   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S )TestDataSourceAbspathc             C   s"   t jjt | _tj| j| _d S )N)r   r    abspathr   r.   r/   r0   r1   )r2   r   r   r   r3      s    zTestDataSourceAbspath.setupc             C   s   t | j | `d S )N)r   r.   r1   )r2   r   r   r   r4      s    
zTestDataSourceAbspath.teardownc             C   sN   t t \}}}}}}tjj| j||jtjjd}t|| j	j
t  d S )N/)r	   r   r   r    rF   r.   stripsepr   r1   rW   )r2   schemenetlocupathpmsqryfrg
local_pathr   r   r   r7      s    z$TestDataSourceAbspath.test_ValidHTTPc             C   sB   t | j}tjj|d }t|| jj| t|| jj| d S )N   )r!   r.   r   r    splitr   r1   rW   )r2   r   tmpfilenamer   r   r   r?      s    
z$TestDataSourceAbspath.test_ValidFilec             C   sP   t t \}}}}}}tjj| j||jtjjd}t|| j	j
t k d S )NrX   )r	   r(   r   r    rF   r.   rY   rZ   r   r1   rW   r   )r2   r[   r\   r]   r^   r_   r`   Zinvalidhttpr   r   r   r;      s    z&TestDataSourceAbspath.test_InvalidHTTPc             C   sP   t | j}t | j}tjj|d }t|| jj|k t|| jj|k d S )Nrb   rc   )r!   r.   r   r    rd   r   r1   rW   )r2   Zinvalidfiler   re   r   r   r   r@      s
    

z&TestDataSourceAbspath.test_InvalidFilec                s   t  j}tjj|d } fdd}t|t j j t|t j j t||j j t||j j x8t	D ]0}t|t
| j j t||j j qW d S )Nrb   c                s   t jj jj| S )N)r   r    rW   r1   )x)r2   r   r   <lambda>   s    z7TestDataSourceAbspath.test_sandboxing.<locals>.<lambda>rc   )r!   r.   r   r    rd   r   r   
startswithr(   malicious_filesr$   )r2   r   re   tmp_pathfnr   )r2   r   test_sandboxing   s    

z%TestDataSourceAbspath.test_sandboxingc             C   sF   t j}z2dt _| j  | j  | j  | j  | j  W d |t _X d S )N\)r   rZ   r7   r?   r;   r@   rl   )r2   orig_os_sepr   r   r   test_windows_os_sep   s    z)TestDataSourceAbspath.test_windows_os_sepN)rQ   rR   rS   r3   r4   r7   r?   r;   r@   rl   ro   r   r   r   r   rV      s   	rV   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )TestRepositoryAbspathc             C   s&   t jjt | _tjt | j| _d S )N)	r   r    rW   r   r.   r/   
Repositoryr)   repos)r2   r   r   r   r3      s    zTestRepositoryAbspath.setupc             C   s   t | j | `d S )N)r   r.   rr   )r2   r   r   r   r4     s    
zTestRepositoryAbspath.teardownc       	      C   sT   t t \}}}}}}tjj| jj||jtjjd}| jj	t
 }t|| d S )NrX   )r	   r   r   r    rF   rr   	_destpathrY   rZ   rW   r+   r   )	r2   r[   r\   r]   r^   r_   r`   ra   rJ   r   r   r   r7     s
    z$TestRepositoryAbspath.test_ValidHTTPc                s`    fdd}t |t j j x8tD ]0}t |t| j j t ||j j q(W d S )Nc                s   t jj jj| S )N)r   r    rW   rr   )rf   )r2   r   r   rg     s    z7TestRepositoryAbspath.test_sandboxing.<locals>.<lambda>)r   r+   rh   r.   ri   r$   )r2   rj   rk   r   )r2   r   rl     s
    
z%TestRepositoryAbspath.test_sandboxingc             C   s.   t j}zdt _| j  | j  W d |t _X d S )Nrm   )r   rZ   r7   rl   )r2   rn   r   r   r   ro     s    z)TestRepositoryAbspath.test_windows_os_sepN)rQ   rR   rS   r3   r4   r7   rl   ro   r   r   r   r   rp      s
   rp   c               @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )TestRepositoryExistsc             C   s   t  | _tjt | j| _d S )N)r   r.   r/   rq   r)   rr   )r2   r   r   r   r3     s    zTestRepositoryExists.setupc             C   s   t | j | `d S )N)r   r.   rr   )r2   r   r   r   r4   #  s    
zTestRepositoryExists.teardownc             C   s   t | j}t| jj| d S )N)r!   r.   r   rr   rU   )r2   r   r   r   r   r?   '  s    
z#TestRepositoryExists.test_ValidFilec             C   s    t | j}t| jj|d d S )NF)r#   r.   r   rr   rU   )r2   r   r   r   r   r@   ,  s    
z%TestRepositoryExists.test_InvalidFilec             C   s   t | jjt  d S )N)r   rr   rU   r   )r2   r   r   r   test_RemoveHTTPFile0  s    z(TestRepositoryExists.test_RemoveHTTPFilec       
      C   sT   t  }t|\}}}}}}tjj| jj|}tj|d t|}	t	| jj
|	 d S )Ni  )r   r	   r   r    rF   rr   rs   mkdirr!   r   rU   )
r2   	localfiler[   r\   r]   r^   r_   r`   ra   r   r   r   r   test_CachedHTTPFile3  s    z(TestRepositoryExists.test_CachedHTTPFileN)	rQ   rR   rS   r3   r4   r?   r@   ru   rx   r   r   r   r   rt     s   rt   c               @   s$   e Zd Zdd Zdd Zdd ZdS )TestOpenFuncc             C   s   t  | _d S )N)r   r.   )r2   r   r   r   r3   @  s    zTestOpenFunc.setupc             C   s   t | j d S )N)r   r.   )r2   r   r   r   r4   C  s    zTestOpenFunc.teardownc             C   sH   t | j}tj|| jd}t| |j  tj|}t| |j  d S )N)Zdestpath)r!   r.   r/   r5   r   r   )r2   r>   rK   r   r   r   test_DataSourceOpenF  s    

z TestOpenFunc.test_DataSourceOpenN)rQ   rR   rS   r3   r4   rz   r   r   r   r   ry   ?  s   ry   c              C   s   t j } | `| j  d S )N)r/   r0   Z
_istmpdest__del__)r1   r   r   r   test_del_attr_handlingQ  s    r|   )N)0r   rD   tempfiler   r   r   shutilr   Znumpy.lib._datasourcelibZ_datasourcer/   Znumpy.testingr   r   r   urllib.requestrequestr   urllib.parser	   urllib.errorr
   r   r   r   r   r$   r%   r&   r'   ri   rH   r!   r#   r   r(   r)   r*   r+   r,   r-   rT   rV   rp   rt   ry   r|   r   r   r   r   <module>   sD   

	EA!!