U
    ?h                     @   s0  d dl Z d dlZddlmZ d dlmZ G dd dZG dd deeje j	Z
G d	d
 d
eeje j	Zdd ZG dd deje j	ZG dd deje j	ZG dd deje j	ZG dd deje j	ZG dd deje j	ZG dd dZG dd dejee j	ZG dd dejee j	Zedkr,e   dS )    N   )util)import_modulec                   @   s$   e Zd Zdd Zdd Zdd ZdS )ResourceTestsc                 C   s"   t | jd }| |  d S )Nbinary.file)	resourcesfilesdata
assertTrueis_fileselftarget r   Y/var/www/html/venv/lib/python3.8/site-packages/importlib_resources/tests/test_resource.pytest_is_file_exists   s    z!ResourceTests.test_is_file_existsc                 C   s"   t | jd }| |  d S )Nz
not-a-file)r   r   r	   assertFalser   r   r   r   r   test_is_file_missing   s    z"ResourceTests.test_is_file_missingc                 C   s0   t | jd }| |  | |  d S )Nsubdirectory)r   r   r	   r   r   r
   is_dirr   r   r   r   test_is_dir   s    zResourceTests.test_is_dirN)__name__
__module____qualname__r   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )ResourceDiskTestsNr   r   r   r   r   r   r   r      s   r   c                   @   s   e Zd ZdS )ResourceZipTestsNr   r   r   r   r   r      s   r   c                 C   s   dd |   D S )Nc                 S   s   h | ]
}|j qS r   name.0itemr   r   r   	<setcomp>"   s     znames.<locals>.<setcomp>)iterdir)Ztraversabler   r   r   names!   s    r$   c                   @   s,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ResourceLoaderTestsc                 C   s<   t j| j| jjdddgd}| tt|dddh d S )NABCfilepathcontents)r   create_packager	   __file__assertEqualr$   r   r   r   packager   r   r   test_resource_contents&   s      z*ResourceLoaderTests.test_resource_contentsc                 C   s>   t j| j| jjdddddgd}| t|d  d S )Nr&   r'   r(   D/ED/Fr)   )	r   r-   r	   r.   r
   r   r   joinpathr   r0   r   r   r   test_is_file,   s    z ResourceLoaderTests.test_is_filec                 C   s>   t j| j| jjdddddgd}| t|d  d S )Nr&   r'   r(   r3   r4   r)   D)	r   r-   r	   r.   r
   r   r   r5   r   r0   r   r   r   r   4   s    zResourceLoaderTests.test_is_dirc                 C   s>   t j| j| jjdddddgd}| t|d  d S )Nr&   r'   r(   r3   r4   r)   Z)	r   r-   r	   r.   r   r   r   r5   r   r0   r   r   r   test_resource_missing<   s    z)ResourceLoaderTests.test_resource_missingN)r   r   r   r2   r6   r   r9   r   r   r   r   r%   %   s   r%   c                   @   s   e Zd Zdd ZdS )ResourceCornerCaseTestsc                 C   s\   t j| j| jjdddgd}t |_d|_|j|j_|j|j_| 	t
|d  dS )z
        Test odd ball packages which:
        # 1. Do not have a ResourceReader as a loader
        # 2. Are not on the file system
        # 3. Are not in a zip file
        r&   r'   r(   r)   z/path/which/shall/not/be/namedN)r   r-   r	   r.   object
__loader____spec__loaderoriginr   r   r   r5   r   )r   moduler   r   r   #test_package_has_no_reader_fallbackF   s      

z;ResourceCornerCaseTests.test_package_has_no_reader_fallbackN)r   r   r   rA   r   r   r   r   r:   E   s   r:   c                   @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ResourceFromZipsTest01c                 C   s&   t d}| t|d  d S Ndata01.subdirectoryr   )r   r
   r   r   r5   r   r   	submoduler   r   r   test_is_submodule_resourceZ   s    z1ResourceFromZipsTest01.test_is_submodule_resourcec                 C   s   |  tdd  d S rC   r
   r   r   r5   r   r   r   r   r   $test_read_submodule_resource_by_name^   s    z;ResourceFromZipsTest01.test_read_submodule_resource_by_namec                 C   s&   t d}| tt|ddh d S NrD   __init__.pyr   )r   r/   r$   r   r   rE   r   r   r   test_submodule_contentsc   s
     z.ResourceFromZipsTest01.test_submodule_contentsc                 C   s   |  ttdddh d S rK   r/   r$   r   r   rI   r   r   r   test_submodule_contents_by_namei   s    z6ResourceFromZipsTest01.test_submodule_contents_by_namec              	   C   sn   t t dF}|jdks t| s,t|d s>ttt|	 sRtW 5 Q R X |j
 rjtd S )Ndata01r   )r   as_filer   r   AssertionErrorr   r5   lenlistr#   parentexists)r   r	   r   r   r   test_as_file_directoryo   s    z-ResourceFromZipsTest01.test_as_file_directoryN)r   r   r   rG   rJ   rM   rO   rW   r   r   r   r   rB   Y   s
   rB   c                   @   s   e Zd ZdZdd ZdS )ResourceFromZipsTest02Zdata02c                 C   s8   |  ttdddh |  ttdddh dS )z
        Test thata zip with two unrelated subpackages return
        distinct resources. Ref python/importlib_resources#44.
        z
data02.onerL   zresource1.txtz
data02.twozresource2.txtNrN   rI   r   r   r   test_unrelated_contents{   s    z.ResourceFromZipsTest02.test_unrelated_contentsN)r   r   r   MODULErY   r   r   r   r   rX   x   s   rX   c                   @   sR   e Zd ZdZdd Zdd Zdd Zedd	d
 Z	dd Z
dd Zdd ZdS )DeletingZipsTestz^Having accessed resources in a zip file should not keep an open
    reference to the zip.
    c                 C   s   dd t d D  d S )Nc                 S   s   g | ]
}|j qS r   r   r   r   r   r   
<listcomp>   s     zDDeletingZipsTest.test_iterdir_does_not_keep_open.<locals>.<listcomp>rP   )r   r   r#   rI   r   r   r   test_iterdir_does_not_keep_open   s    z0DeletingZipsTest.test_iterdir_does_not_keep_openc                 C   s   t dd  d S NrP   r   r   r   r5   r   rI   r   r   r   test_is_file_does_not_keep_open   s    z0DeletingZipsTest.test_is_file_does_not_keep_openc                 C   s   t dd  d S )NrP   znot-presentr_   rI   r   r   r   'test_is_file_failure_does_not_keep_open   s    z8DeletingZipsTest.test_is_file_failure_does_not_keep_openzDesired but not supported.c                 C   s   t t dd  d S r^   )r   rQ   r   rI   r   r   r   test_as_file_does_not_keep_open   s    z0DeletingZipsTest.test_as_file_does_not_keep_openc                 C   s   t t dd   dS )zr
        Mimic what certifi does on import to make its bundle
        available for the process duration.
        rP   r   N)r   rQ   r   	__enter__rI   r   r   r   $test_entered_path_does_not_keep_open   s    z5DeletingZipsTest.test_entered_path_does_not_keep_openc                 C   s   t dd  d S r^   )r   r   r5   
read_bytesrI   r   r   r   #test_read_binary_does_not_keep_open   s    z4DeletingZipsTest.test_read_binary_does_not_keep_openc                 C   s   t ddjdd d S )NrP   
utf-8.filezutf-8)encoding)r   r   r5   	read_textrI   r   r   r   !test_read_text_does_not_keep_open   s    z2DeletingZipsTest.test_read_text_does_not_keep_openN)r   r   r   __doc__r]   r`   ra   unittestskiprb   rd   rf   rj   r   r   r   r   r[      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 )ResourceFromNamespaceTestsc                 C   s"   |  ttdd  d S Nnamespacedata01r   )r
   r   r   r   r5   r   rI   r   r   r   rG      s
    z5ResourceFromNamespaceTests.test_is_submodule_resourcec                 C   s   |  tdd  d S ro   rH   rI   r   r   r   rJ      s    z?ResourceFromNamespaceTests.test_read_submodule_resource_by_namec                 C   sN   t ttd}z|d W n tk
r4   Y nX | |ddddh d S Nrp   __pycache__r   r   rg   zutf-16.filer$   r   r   r   removeKeyErrorr/   r   r,   r   r   r   rM      s     
z2ResourceFromNamespaceTests.test_submodule_contentsc                 C   sJ   t td}z|d W n tk
r0   Y nX | |ddddh d S rq   r$   r   r   rt   ru   r/   rv   r   r   r   rO      s     
z:ResourceFromNamespaceTests.test_submodule_contents_by_namec                 C   sH   t ttd}z|d W n tk
r4   Y nX | |dh d S Nznamespacedata01.subdirectoryrr   r   rs   rv   r   r   r   test_submodule_sub_contents   s    z6ResourceFromNamespaceTests.test_submodule_sub_contentsc                 C   sD   t td}z|d W n tk
r0   Y nX | |dh d S rx   rw   rv   r   r   r   #test_submodule_sub_contents_by_name   s    z>ResourceFromNamespaceTests.test_submodule_sub_contents_by_nameN)	r   r   r   rG   rJ   rM   rO   ry   rz   r   r   r   r   rn      s   

rn   c                   @   s   e Zd ZdZdS )ResourceFromNamespaceDiskTestsrp   Nr   r   r   rZ   r   r   r   r   r{      s   r{   c                   @   s   e Zd ZdZdS )ResourceFromNamespaceZipTestsrp   Nr|   r   r   r   r   r}      s   r}   __main__)rl   Zimportlib_resourcesr    r   	importlibr   r   Z	DiskSetupZTestCaser   ZZipSetupr   r$   r%   r:   rB   rX   r[   rn   r{   r}   r   mainr   r   r   r   <module>   s2     2


