U
    ‚i2eQ  ã                   @   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-bn52x7jx/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   sV   dd„ t | jƒ ¡ D ƒ}z| d¡ W n ttfk
r>   Y nX |  |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__r   ú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   Úsubdirectoryr!   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_dir.   s    zMultiplexedPathTest.test_is_dirc                 C   s   |   t| jƒ ¡ d¡ d S )NF)r'   r   r   Úis_filer   r   r   r   Útest_is_file1   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_file4   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¡¡ |  t| d¡ƒt	|ƒd d … t
j dd¡¡ |  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)r   r*   Úprefixr   r   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,   ÚexistsÚAssertionErrorr5   r   r   r   Útest_join_path_compoundO   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*   rB   r=   r   r   r   r   Útest_join_path_common_subdirS   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_named   s    
þzMultiplexedPathTest.test_nameN)Ú__name__Ú
__module__Ú__qualname__Úclassmethodr   r   r   r)   r-   r/   r1   r6   r>   rA   rD   rH   rJ   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   n   s    zNamespaceReaderTest.setUpClassc                 C   s   t j | j¡ d S r   )rP   r   r$   rR   r   r   r   r   ÚtearDownClassr   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_errorv   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_pathz   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   rW   rE   rF   )r   r   rX   rY   r;   r   rZ   r<   r	   rC   Úfilesr   r'   rG   r\   r   r   r   Ú
test_files†   s
    zNamespaceReaderTest.test_filesN)rK   rL   rM   r9   r   r   r	   r
   rR   rN   r   rS   rV   r_   ra   r   r   r   r   rO   k   s   

rO   Ú__main__)Úos.pathr;   rP   r   ZunittestÚ	importlibr   Zimportlib_resources.readersr   r   ZTestCaser   rO   rK   Úmainr   r   r   r   Ú<module>   s   a#