o
    g#                     @   s  d dl Z d dlZd dlZd dlZd dlZd dlZd dlZzd dlm	Z
 W n ey3   ddlm	Z
 Y nw ddlmZ d dlmZmZmZmZmZmZm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ejZG dd dejejejZG dd dejejejZG dd dej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Z#G dd dejejej$ejZ%dS )    N   )fake_filesystem_unittest)fixtures)Distribution
EntryPointPackageNotFoundErrordistributionsentry_pointsmetadataversionc                   @   s0   e Zd ZdZdd Zdd Zdd Zdd	 Zd
S )
BasicTestsz\d+\.\d+(\.\d)?c                 C   s   t d}d S )Nzdistinfo-pkg)r   	from_name)selfdist r   S/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/test/test_importlib/test_main.pytest_retrieves_version_of_self      z)BasicTests.test_retrieves_version_of_selfc                 C   :   |  t td W d    d S 1 sw   Y  d S Nzdoes-not-existassertRaisesr   r   r   r   r   r   r   test_for_name_does_not_exist"   s   "z'BasicTests.test_for_name_does_not_existc                 C   s:   |  t}td W d    d S 1 sw   Y  d S r   r   )r   ctxr   r   r   (test_package_not_found_mentions_metadata&   s   "z3BasicTests.test_package_not_found_mentions_metadatac                 C   s   |  tt d S N)ZassertIsInstancer   typer   r   r   r   test_new_style_classes0   s   z!BasicTests.test_new_style_classesN)__name__
__module____qualname__Zversion_patternr   r   r   r   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	S )
ImportTestsc                 C   r   )NZdoes_not_exist)r   ImportError	importlibimport_moduler   r   r   r   test_import_nonexistent_module5   s   "z*ImportTests.test_import_nonexistent_modulec                 C   s$   t ddd }| | jd d S )Nentriesgroupmain)r	   assertEqualloadr   r   epr   r   r   test_resolve;   s   zImportTests.test_resolvec                 C   s    t ddd }| |jd d S )Nr'   r(   zns:subzmod:main)r	   r+   valuer-   r   r   r   "test_entrypoint_with_colon_in_name?   s   z.ImportTests.test_entrypoint_with_colon_in_namec                 C   s   t dddd}d S )Nr.   zimportlib.metadatagrp)namer0   r)   )r   r-   r   r   r   test_resolve_without_attrC   s
   
z%ImportTests.test_resolve_without_attrN)r   r    r!   r&   r/   r1   r4   r   r   r   r   r"   4   s
    r"   c                   @   s4   e Zd Zedd Zdd Zedd Zdd Zd	S )
NameNormalizationTestsc                 C   X   	 | d }|   |d }|jddd}|d W d    dS 1 s%w   Y  dS )Nzmy_pkg.dist-infoMETADATAwutf-8encodingVersion: 1.0
zmy-pkgmkdiropenwritesite_dirmetadata_dirr
   Zstrmr   r   r   pkg_with_dashesM      
z&NameNormalizationTests.pkg_with_dashesc                 C      |  | j}d S r   )rD   rB   r   pkg_namer   r   r   -test_dashes_in_dist_name_found_as_underscoresZ   s   zDNameNormalizationTests.test_dashes_in_dist_name_found_as_underscoresc                 C   r6   )NzCherryPy.dist-infor7   r8   r9   r:   r<   ZCherryPyr=   rA   r   r   r   pkg_with_mixed_case`   rE   z*NameNormalizationTests.pkg_with_mixed_casec                 C   rF   r   )rJ   rB   rG   r   r   r    test_dist_name_found_as_any_casem   s   z7NameNormalizationTests.test_dist_name_found_as_any_caseN)r   r    r!   staticmethodrD   rI   rJ   rK   r   r   r   r   r5   L   s    

r5   c                   @   s4   e Zd Zedd Zedd Zdd Zdd Zd	S )
NonASCIITestsc                 C   r6   )Nportend.dist-infor7   r8   r9   r:   u   Description: pôrˈtendportendr=   rB   rC   r
   fpr   r   r   pkg_with_non_ascii_descriptionv   rE   z,NonASCIITests.pkg_with_non_ascii_descriptionc                 C   sb   	 | d }|   |d }|jddd}|td  W d    dS 1 s*w   Y  dS )NrN   r7   r8   r9   r:   uK   
                Name: portend

                pôrˈtend
                rO   )r>   r?   r@   textwrapdedentstriprP   r   r   r   'pkg_with_non_ascii_description_egg_info   s   


z5NonASCIITests.pkg_with_non_ascii_description_egg_infoc                 C      |  | j}t|}d S r   )rR   rB   r
   r   rH   metar   r   r   test_metadata_loads      z!NonASCIITests.test_metadata_loadsc                 C   rW   r   )rV   rB   r
   rX   r   r   r   test_metadata_loads_egg_info   r[   z*NonASCIITests.test_metadata_loads_egg_infoN)r   r    r!   rL   rR   rV   rZ   r\   r   r   r   r   rM   u   s    

rM   c                   @      e Zd Zdd Zdd ZdS )DiscoveryTestsc                 C   s   t t }d S r   )listr   )r   Zdistsr   r   r   test_package_discovery   r   z%DiscoveryTests.test_package_discoveryc                 C   s@   |  t ttddd W d    d S 1 sw   Y  d S )NZ	somethingelse)contextr3   )r   
ValueErrorr_   r   r   r   r   r   test_invalid_usage   s   "z!DiscoveryTests.test_invalid_usageN)r   r    r!   r`   rd   r   r   r   r   r^      s    r^   c                   @   r]   )DirectoryTestc                 C   sH   | j d  | t td W d    d S 1 sw   Y  d S )NzEGG-INFOzunknown-package)rB   joinpathr>   r   r   r   r   r   r   r   test_egg_info   s   
"zDirectoryTest.test_egg_infoc              	   C   s   | j d}|  | |* | t td W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nzfoo-3.6.eggZfoo)rB   rf   r>   Zadd_sys_pathr   r   r   )r   Zeggr   r   r   test_egg   s   
"zDirectoryTest.test_eggN)r   r    r!   rg   rh   r   r   r   r   re      s    re   c                   @   s   e Zd ZdZdd ZdS )MissingSysPathz/does-not-existc                 C   s   	 t j  d S r   )r$   r
   r   r   r   r   r   test_discovery   s   zMissingSysPath.test_discoveryN)r   r    r!   rB   rj   r   r   r   r   ri      s    ri   c                       s(   e Zd ZdZ fddZdd Z  ZS )InaccessibleSysPathz/access-deniedc                    s,   t t|   |   | jj| jdd d S )Nr   )Z	perm_bits)superrk   setUpZsetUpPyfakefsfsZ
create_dirrB   r   	__class__r   r   rm      s   zInaccessibleSysPath.setUpc                 C   s   	 t tj  d S r   )r_   r$   r
   r   r   r   r   r   rj      s   z"InaccessibleSysPath.test_discovery)r   r    r!   rB   rm   rj   __classcell__r   r   ro   r   rk      s    rk   c                       s\   e Zd Z f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  ZS )TestEntryPointsc                    s&   t t| j|  tjddd| _d S )Nr3   r0   r)   )rl   rr   __init__r$   r
   r   r.   )r   argsro   r   r   rs      s   zTestEntryPoints.__init__c                 C   s   t t | j}d S r   )pickleloadsdumpsr.   )r   Zrevivedr   r   r   test_entry_point_pickleable   s   z+TestEntryPoints.test_entry_point_pickleablec                 C   s:   	 |  t d| j_W d    d S 1 sw   Y  d S )NZbadactor)r   AttributeErrorr.   r3   r   r   r   r   test_immutable   s   
"zTestEntryPoints.test_immutablec                 C      d S r   r   r   r   r   r   	test_repr       zTestEntryPoints.test_reprc                 C   s   t | j d S r   )hashr.   r   r   r   r   test_hashable   s   zTestEntryPoints.test_hashablec              	   C   sx   |  t- tjdd t| j W d    n1 sw   Y  W d    d S W d    d S 1 s5w   Y  d S )NT)record)r   	Exceptionwarningscatch_warningsjsonrw   r.   r   r   r   r   test_json_dump   s   "zTestEntryPoints.test_json_dumpc                 C   r{   r   r   r   r   r   r   test_module   r}   zTestEntryPoints.test_modulec                 C   r{   r   r   r   r   r   r   	test_attr   r}   zTestEntryPoints.test_attrc                 C   s    t tdddtdddg d S )Nbvalr)   a)sortedr   r   r   r   r   test_sortable   s
   

zTestEntryPoints.test_sortable)r   r    r!   rs   rx   rz   r|   r   r   r   r   r   rq   r   r   ro   r   rr      s    rr   c                   @   s   e Zd Zdd ZdS )
FileSystemc                 C   s&   t j|  i i| jd tt  d S )N)prefix)r   Zbuild_filesZunicode_filenamerB   r_   r   r   r   r   r   test_unicode_dir_on_sys_path
  s
   
z'FileSystem.test_unicode_dir_on_sys_pathN)r   r    r!   r   r   r   r   r   r     s    r   )&rer   ru   rS   Zunittestr   importlib.metadatar$   Z!pyfakefs.fake_filesystem_unittestr   Zffsr#   Zstubs r   r   r   r   r   r	   r
   r   ZDistInfoPkgZTestCaser   r"   Z	OnSysPathZSiteDirr5   rM   Z
EggInfoPkgr^   re   ri   rk   rr   ZFileBuilderr   r   r   r   r   <module>   s4    $).
-