U
    kuf‰  ã                   @   st   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	 G dd„ dej
ƒZG dd„ dej
ƒZedkrpe ¡  dS )	é    N)Úimport_module)ÚMultiplexedPathÚNamespaceReaderc                   @   sx   e Zd Ze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S )ÚMultiplexedPathTestc                 C   s   t  t¡jd | _d S )NÚnamespacedata01)ÚpathlibÚPathÚ__file__ÚparentÚfolder©Úcls© r   úI/tmp/pip-unpacked-wheel-jirmq66v/importlib_resources/tests/test_reader.pyÚ
setUpClass   s    zMultiplexedPathTest.setUpClassc              	   C   s    |   t¡ tƒ  W 5 Q R X d S ©N)ÚassertRaisesÚFileNotFoundErrorr   ©Úselfr   r   r   Útest_init_no_paths   s    z&MultiplexedPathTest.test_init_no_pathsc              	   C   s(   |   t¡ t| jd ƒ W 5 Q R X d S )Núbinary.file)r   ÚNotADirectoryErrorr   r   r   r   r   r   Útest_init_file   s    z"MultiplexedPathTest.test_init_filec              	   C   sX   dd„ t | jƒ ¡ D ƒ}z| d¡ W n ttfk
r>   Y nX |  |ddddh¡ d S )Nc                 S   s   h | ]
}|j ’qS r   ©Úname©Ú.0Úpathr   r   r   Ú	<setcomp>   s     z3MultiplexedPathTest.test_iterdir.<locals>.<setcomp>Ú__pycache__Úsubdirectoryr   úutf-16.fileú
utf-8.file)r   r   ÚiterdirÚremoveÚKeyErrorÚ
ValueErrorÚassertEqual)r   Úcontentsr   r   r   Útest_iterdir   s     
ÿz MultiplexedPathTest.test_iterdirc              
   C   sx   t  t¡j d¡}dd„ t| j|ƒ ¡ D ƒ}dD ],}z| |¡ W q0 t	t
fk
rZ   Y q0X q0|  |ddddd	h¡ d S )
NÚdata01c                 S   s   h | ]
}|j ’qS r   r   r   r   r   r   r   #   s    z=MultiplexedPathTest.test_iterdir_duplicate.<locals>.<setcomp>)r    z__init__.pycz__init__.pyr   r!   r"   r#   )r   r   r	   r
   Újoinpathr   r   r$   r%   r&   r'   r(   )r   r+   r)   r%   r   r   r   Útest_iterdir_duplicate!   s    ÿþz*MultiplexedPathTest.test_iterdir_duplicatec                 C   s   |   t| jƒ ¡ d¡ d S )NT)r(   r   r   Úis_dirr   r   r   r   Útest_is_dir0   s    zMultiplexedPathTest.test_is_dirc                 C   s   |   t| jƒ ¡ d¡ d S )NF)r(   r   r   Úis_filer   r   r   r   Útest_is_file3   s    z MultiplexedPathTest.test_is_filec              	   C   sh   t | jƒ}|  t¡ | ¡  W 5 Q R X |  t¡ | ¡  W 5 Q R X |  t¡ | ¡  W 5 Q R X d S r   )r   r   r   r   Ú
read_bytesÚ	read_textÚopen©r   r   r   r   r   Útest_open_file6   s    
z"MultiplexedPathTest.test_open_filec                 C   sÔ   t  t¡j d¡}t|jƒ}t| j|ƒ}|  t| d¡ƒt	|ƒd d … t
j dd¡¡ | d¡}t|tƒspt‚dt|ƒks€t‚dt|ƒkst‚|  t| d¡ƒt	|ƒd d … t
j dd¡¡ |  | ¡ |¡ d S )Nr+   r   é   r   r!   Ú	imaginary)r   r   r	   r
   r,   Ústrr   r   r(   ÚlenÚosr   ÚjoinÚ
isinstanceÚAssertionError)r   r+   Úprefixr   Úsubr   r   r   Útest_join_path?   s     
þ
þz"MultiplexedPathTest.test_join_pathc                 C   s    t | jƒ}| d¡ ¡ rt‚d S )Nzimaginary/foo.py)r   r   r,   Úexistsr>   r5   r   r   r   Útest_join_path_compoundQ   s    
z+MultiplexedPathTest.test_join_path_compoundc                 C   s‚   t  t¡j d¡}t  t¡j d¡}t|jƒ}t||ƒ}|  | d¡t¡ |  t| dd¡ƒt	|ƒd d … t
j ddd¡¡ d S )Nr+   Údata02r!   Z	subsubdirr7   )r   r   r	   r
   r,   r9   r   ÚassertIsInstancer(   r:   r;   r   r<   )r   r+   rD   r?   r   r   r   r   Útest_join_path_common_subdirU   s    

þz0MultiplexedPathTest.test_join_path_common_subdirc                 C   s$   |   tt| jƒƒd| j› d¡ d S )NúMultiplexedPath('ú'))r(   Úreprr   r   r   r   r   r   Ú	test_repr`   s    þzMultiplexedPathTest.test_reprc                 C   s"   |   t| jƒjtj | j¡¡ d S r   )r(   r   r   r   r;   r   Úbasenamer   r   r   r   Ú	test_namef   s    
þzMultiplexedPathTest.test_nameN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r*   r-   r/   r1   r6   rA   rC   rF   rJ   rL   r   r   r   r   r   
   s   

	r   c                   @   sL   e Zd Zee e¡jƒZe	dd„ ƒZ
e	dd„ ƒZdd„ Zdd„ Zd	d
„ ZdS )ÚNamespaceReaderTestc                 C   s   t j | j¡ d S r   )Úsysr   ÚappendÚsite_dirr   r   r   r   r   p   s    zNamespaceReaderTest.setUpClassc                 C   s   t j | j¡ d S r   )rR   r   r%   rT   r   r   r   r   ÚtearDownClasst   s    z!NamespaceReaderTest.tearDownClassc              	   C   s&   |   t¡ tddgƒ W 5 Q R X d S )NÚpath1Úpath2)r   r'   r   r   r   r   r   Útest_init_errorx   s    z#NamespaceReaderTest.test_init_errorc                 C   sh   t dƒ}t|jjƒ}tj tj tdd¡¡}|  	| 
d¡tj |d¡¡ |  	| 
d¡tj |d¡¡ d S )Nr   ú..r   r8   )r   r   Ú__spec__Úsubmodule_search_locationsr;   r   Úabspathr<   r	   r(   Úresource_path©r   r   ÚreaderÚrootr   r   r   Útest_resource_path|   s     ÿ ÿz&NamespaceReaderTest.test_resource_pathc                 C   s\   t dƒ}t|jjƒ}tj tj tdd¡¡}|  	| 
¡ t¡ |  t| 
¡ ƒd|› d¡ d S )Nr   rY   rG   rH   )r   r   rZ   r[   r;   r   r\   r<   r	   rE   Úfilesr   r(   rI   r^   r   r   r   Ú
test_filesˆ   s
    zNamespaceReaderTest.test_filesN)rM   rN   rO   r9   r   r   r	   r
   rT   rP   r   rU   rX   ra   rc   r   r   r   r   rQ   m   s   

rQ   Ú__main__)Úos.pathr;   rR   r   ZunittestÚ	importlibr   Zimportlib_resources.readersr   r   ZTestCaser   rQ   rM   Úmainr   r   r   r   Ú<module>   s   c#