a
    i‚j  ã                   @   s0  d dl Z d dlmZ d dl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)Úimport_moduleé   )Úutilc                   @   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   úe/home/ghrups/robot-bench/.venv/lib/python3.9/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>#   ó    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   s8   t j| j| jjg d¢d}|  tt |¡ƒh d£¡ d S )N©ÚAÚBÚC©ÚfileÚpathÚcontents>   r(   r*   r)   )r   Úcreate_packager	   Ú__file__ÚassertEqualr%   r   r   ©r   Úpackager   r   r   Útest_resource_contents'   s    ÿz*ResourceLoaderTests.test_resource_contentsc                 C   s8   t j| j| jjg d¢d}|  t |¡ d¡ ¡ ¡ d S )N©r(   r)   r*   zD/EzD/Fr+   r)   )	r   r/   r	   r0   r
   r   r   Újoinpathr   r2   r   r   r   Útest_is_file-   s    ýz ResourceLoaderTests.test_is_filec                 C   s8   t j| j| jjg d¢d}|  t |¡ d¡ ¡ ¡ d S )Nr5   r+   ÚD)	r   r/   r	   r0   r
   r   r   r6   r   r2   r   r   r   r   5   s    ýzResourceLoaderTests.test_is_dirc                 C   s8   t j| j| jjg d¢d}|  t |¡ d¡ ¡ ¡ d S )Nr5   r+   ÚZ)	r   r/   r	   r0   r   r   r   r6   r   r2   r   r   r   Útest_resource_missing=   s    ýz)ResourceLoaderTests.test_resource_missingN)r   r   r   r4   r7   r   r:   r   r   r   r   r&   &   s   r&   c                   @   s   e Zd Zdd„ ZdS )ÚResourceCornerCaseTestsc                 C   sZ   t j| j| jjg d¢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+   z/path/which/shall/not/be/namedr(   N)r   r/   r	   r0   ÚobjectÚ
__loader__Ú__spec__ÚloaderÚoriginr   r   r   r6   r   )r   Úmoduler   r   r   Ú#test_package_has_no_reader_fallbackG   s    ÿ

z;ResourceCornerCaseTests.test_package_has_no_reader_fallbackN)r   r   r   rB   r   r   r   r   r;   F   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   r6   r   ©r   Ú	submoduler   r   r   Útest_is_submodule_resource[   s    z1ResourceFromZipsTest01.test_is_submodule_resourcec                 C   s   |   t d¡ d¡ ¡ ¡ d S rD   ©r
   r   r   r6   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 ©NrE   ú__init__.pyr   )r   r1   r%   r   r   rF   r   r   r   Útest_submodule_contentsd   s    ÿz.ResourceFromZipsTest01.test_submodule_contentsc                 C   s   |   tt d¡ƒddh¡ d S rL   ©r1   r%   r   r   rJ   r   r   r   Útest_submodule_contents_by_namej   s    þz6ResourceFromZipsTest01.test_submodule_contents_by_namec                 C   s‚   t  t  d¡¡P}|jdks J ‚| ¡ s,J ‚| d¡ ¡ s>J ‚tt| ¡ ƒƒsRJ ‚W d   ƒ n1 sf0    Y  |j	 
¡ r~J ‚d S )NÚdata01r   )r   Úas_filer   r   r   r6   ÚlenÚlistr$   ÚparentÚexists)r   r	   r   r   r   Útest_as_file_directoryp   s    2z-ResourceFromZipsTest01.test_as_file_directoryN)r   r   r   rH   rK   rN   rP   rW   r   r   r   r   rC   Z   s
   rC   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.onerM   zresource1.txtz
data02.twozresource2.txtNrO   rJ   r   r   r   Útest_unrelated_contents|   s    þþz.ResourceFromZipsTest02.test_unrelated_contentsN)r   r   r   ÚMODULErY   r   r   r   r   rX   y   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>‘   r#   zDDeletingZipsTest.test_iterdir_does_not_keep_open.<locals>.<listcomp>rQ   )r   r   r$   rJ   r   r   r   Útest_iterdir_does_not_keep_open   s    z0DeletingZipsTest.test_iterdir_does_not_keep_openc                 C   s   t  d¡ d¡ ¡  d S ©NrQ   r   ©r   r   r6   r   rJ   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 )NrQ   znot-presentr_   rJ   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   rR   r   rJ   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.
        rQ   r   N)r   rR   r   Ú	__enter__rJ   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   r6   Ú
read_bytesrJ   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 )NrQ   ú
utf-8.filezutf-8)Úencoding)r   r   r6   Ú	read_textrJ   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   r6   r   rJ   r   r   r   rH   ¬   s
    ÿÿz5ResourceFromNamespaceTests.test_is_submodule_resourcec                 C   s   |   t d¡ d¡ ¡ ¡ d S ro   rI   rJ   r   r   r   rK   ³   s    ÿz?ResourceFromNamespaceTests.test_read_submodule_resource_by_namec                 C   sH   t t tdƒ¡ƒ}z| d¡ W n ty2   Y n0 |  |h d£¡ d S ©Nrp   Ú__pycache__>   r   zutf-16.filerg   r   ©r%   r   r   r   ÚremoveÚKeyErrorr1   ©r   r.   r   r   r   rN   ¸   s    ÿz2ResourceFromNamespaceTests.test_submodule_contentsc                 C   sD   t t d¡ƒ}z| d¡ W n ty.   Y n0 |  |h d£¡ d S rq   ©r%   r   r   rt   ru   r1   rv   r   r   r   rP   Â   s    ÿz:ResourceFromNamespaceTests.test_submodule_contents_by_namec                 C   sF   t t tdƒ¡ƒ}z| d¡ W n ty2   Y n0 |  |dh¡ d S ©Nznamespacedata01.subdirectoryrr   r   rs   rv   r   r   r   Útest_submodule_sub_contentsÌ   s    z6ResourceFromNamespaceTests.test_submodule_sub_contentsc                 C   sB   t t d¡ƒ}z| d¡ W n ty.   Y n0 |  |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   rH   rK   rN   rP   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   Ú	importlibr   Zimportlib_resourcesr   Ú r   r   Z	DiskSetupZTestCaser   ZZipSetupr   r%   r&   r;   rC   rX   r[   rn   r{   r}   r   Úmainr   r   r   r   Ú<module>   s2     2
ý
ý
