o
    g                      @   s6  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 ddlmZ d dl	m
Z
mZ d dlmZ d dlmZ G d	d
 d
ZG dd deejZG dd deejejZG dd dejZG dd d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ZG dd dejZedkre  dS dS )    N   )data01)	zipdata01	zipdata02)util)	resourcesimport_module)import_helper)unlinkc                   @   ,   e Zd Zdd Zdd Zdd Zdd Zd	S )
ResourceTestsc                 C      |  t| jd d S )Nbinary.file)
assertTruer   is_resourcedataself r   W/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_importlib/test_resource.pytest_is_resource_good_path      z(ResourceTests.test_is_resource_good_pathc                 C   r   )Nz
not-a-fileassertFalser   r   r   r   r   r   r   test_is_resource_missing   r   z&ResourceTests.test_is_resource_missingc                 C   r   )Nsubdirectoryr   r   r   r   r   &test_is_resource_subresource_directory   s   z4ResourceTests.test_is_resource_subresource_directoryc                 C   s.   t t| j}|d | |h d d S )N__pycache__>   
utf-8.fileutf-16.filer   __init__.pyr   )setr   contentsr   discardassertEqualr   r"   r   r   r   test_contents   s   
zResourceTests.test_contentsN)__name__
__module____qualname__r   r   r   r&   r   r   r   r   r      s
    r   c                   @      e Zd Zdd ZdS )ResourceDiskTestsc                 C   s
   t | _d S N)r   r   r   r   r   r   setUp0   s   
zResourceDiskTests.setUpN)r'   r(   r)   r-   r   r   r   r   r+   /       r+   c                   @   s   e Zd ZdS )ResourceZipTestsN)r'   r(   r)   r   r   r   r   r/   4   s    r/   c                   @   r   )
ResourceLoaderTestsc                 C   s4   t jttjg dd}| tt|h d d S )NABCfilepathr"   >   r2   r3   r4   )r   create_packager   __file__r$   r!   r   r"   r   packager   r   r   test_resource_contents9   s   z*ResourceLoaderTests.test_resource_contentsc                 C   ,   t jttjg dd}| t|d d S )Nr2   r3   r4   zD/EzD/Fr5   r3   )r   r8   r   r9   r   r   r   r:   r   r   r   test_resource_is_resource?      z-ResourceLoaderTests.test_resource_is_resourcec                 C   r=   )Nr>   r5   Dr   r8   r   r9   r   r   r   r:   r   r   r   'test_resource_directory_is_not_resourceE   r@   z;ResourceLoaderTests.test_resource_directory_is_not_resourcec                 C   r=   )Nr>   r5   ZrB   r:   r   r   r   %test_resource_missing_is_not_resourceK   r@   z9ResourceLoaderTests.test_resource_missing_is_not_resourceN)r'   r(   r)   r<   r?   rC   rE   r   r   r   r   r0   8   s
    r0   c                   @   r*   )ResourceCornerCaseTestsc                 C   sN   t jttjg dd}t |_d|_|j|j_|j|j_| 	t
|d d S )Nr1   r5   z/path/which/shall/not/be/namedr2   )r   r8   r   r9   object
__loader____spec__loaderoriginr   r   r   )r   moduler   r   r   #test_package_has_no_reader_fallbackS   s   

z;ResourceCornerCaseTests.test_package_has_no_reader_fallbackN)r'   r(   r)   rM   r   r   r   r   rF   R   r.   rF   c                   @   s0   e Zd Ze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ziptestdata.subdirectoryr   )r   r   r   r   r   Z	submoduler   r   r   test_is_submodule_resourceg   s   z1ResourceFromZipsTest01.test_is_submodule_resourcec                 C      |  tdd d S rO   r   r   r   r   r   r   r   $test_read_submodule_resource_by_namek   s   
z;ResourceFromZipsTest01.test_read_submodule_resource_by_namec                 C   s&   t d}| tt|ddh d S NrP   r    r   )r   r$   r!   r   r"   rQ   r   r   r   test_submodule_contentsp   s   z.ResourceFromZipsTest01.test_submodule_contentsc                 C   s   |  ttdddh d S rV   r$   r!   r   r"   r   r   r   r   test_submodule_contents_by_namev   s   z6ResourceFromZipsTest01.test_submodule_contents_by_nameN)	r'   r(   r)   r   
ZIP_MODULErR   rU   rW   rY   r   r   r   r   rN   d   s    rN   c                   @   s   e Zd ZeZdd ZdS )ResourceFromZipsTest02c                 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ziptestdata.oner    zresource1.txtzziptestdata.twozresource2.txtNrX   r   r   r   r   test_unrelated_contents   s   z.ResourceFromZipsTest02.test_unrelated_contentsN)r'   r(   r)   r   rZ   r\   r   r   r   r   r[   }   s    r[   c                   @   sf   e Zd ZdZeZdd Zd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   t  }| jt jg|R   t| jj}|j}|d | _	tt
  d | _| j| j	  tjt| j td| _d S )Nzziptestdata.zipz.zipziptestdata)r	   Zmodules_setupZ
addCleanupZmodules_cleanuppathlibPathrZ   r9   parentZsource_zip_pathuuidZuuid4absolutezip_pathwrite_bytes
read_bytessysr7   appendstrr   r   )r   modulesZ	data_pathZdata_dirr   r   r   r-      s   
zDeletingZipsTest.setUpc                 C   s   zt jt| j W n	 ty   Y nw zt jt| j= t j| jj	= W n	 t
y-   Y nw zt| j W d S  ty@   Y d S w r,   )rg   r7   removeri   rd   
ValueErrorpath_importer_cacherj   r   r'   KeyErrorr
   OSErrorr   r   r   r   tearDown   s    zDeletingZipsTest.tearDownc                 C   s   t d}| j  ~d S )Nr^   )r   r"   rd   r
   r   cr   r   r    test_contents_does_not_keep_open   s   

z1DeletingZipsTest.test_contents_does_not_keep_openc                 C      t dd}| j  ~d S Nr^   r   r   r   rd   r
   rq   r   r   r   #test_is_resource_does_not_keep_open      
z4DeletingZipsTest.test_is_resource_does_not_keep_openc                 C   rt   )Nr^   znot-presentrv   rq   r   r   r   +test_is_resource_failure_does_not_keep_open   rx   z<DeletingZipsTest.test_is_resource_failure_does_not_keep_openzDesired but not supported.c                 C   rt   ru   )r   r7   rd   r
   rq   r   r   r   test_path_does_not_keep_open   s   
z-DeletingZipsTest.test_path_does_not_keep_openc                 C   s    t dd }| j  ~d S ru   )r   r7   	__enter__rd   r
   rq   r   r   r   $test_entered_path_does_not_keep_open   s   
z5DeletingZipsTest.test_entered_path_does_not_keep_openc                 C   rt   ru   )r   Zread_binaryrd   r
   rq   r   r   r   #test_read_binary_does_not_keep_open   rx   z4DeletingZipsTest.test_read_binary_does_not_keep_openc                 C   s    t jdddd}| j  ~d S )Nr^   r   zutf-8)encoding)r   	read_textrd   r
   rq   r   r   r   !test_read_text_does_not_keep_open   s   
z2DeletingZipsTest.test_read_text_does_not_keep_openN)r'   r(   r)   __doc__r   rZ   r-   rp   rs   rw   ry   unittestskiprz   r|   r}   r   r   r   r   r   r]      s    
r]   c                   @   sT   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d ZdS )ResourceFromNamespaceTest01c                 C      t j| j d S r,   )rg   r7   rh   site_dirclsr   r   r   
setUpClass      z&ResourceFromNamespaceTest01.setUpClassc                 C   r   r,   )rg   r7   rk   r   r   r   r   r   tearDownClass   r   z)ResourceFromNamespaceTest01.tearDownClassc                 C   s   |  ttdd d S Nnamespacedata01r   )r   r   r   r   r   r   r   r   rR      s   z6ResourceFromNamespaceTest01.test_is_submodule_resourcec                 C   rS   r   rT   r   r   r   r   rU      s   z@ResourceFromNamespaceTest01.test_read_submodule_resource_by_namec                 C   sH   t ttd}z|d W n	 ty   Y nw | |h d d S Nr   r   >   r   r   r   )r!   r   r"   r   rk   rn   r$   r%   r   r   r   rW      s   z3ResourceFromNamespaceTest01.test_submodule_contentsc                 C   sD   t td}z|d W n	 ty   Y nw | |h d d S r   )r!   r   r"   rk   rn   r$   r%   r   r   r   rY      s   z;ResourceFromNamespaceTest01.test_submodule_contents_by_nameN)r'   r(   r)   ri   r_   r`   r9   ra   r   classmethodr   r   rR   rU   rW   rY   r   r   r   r   r      s    

r   __main__)rg   r   rb   r_    r   r   r   r   	importlibr   r   Ztest.supportr	   Ztest.support.os_helperr
   r   ZTestCaser+   ZZipSetupr/   r0   rF   ZZipSetupBaserN   r[   r]   r   r'   mainr   r   r   r   <module>   s,    !L$