a
    3j                     @   s   d dl mZ d dl mZ edZddlZddlZddlZeej	j
du dG dd dejZejeed	\ZZeej	j
du dG d
d dZejeed	\ZZedkre  dS )   )abc)utilzimportlib.machinery    Nzno reasonable builtin modulec                   @   sT   e Zd ZdZdd Zdd Zdd Zdd	 Zd
 ZZ	d
Z
dd Zdd Zdd Zd
S )LoaderTestsz(Test load_module() for built-in modules.c                 C   s   dd| j jd| _d S )Nerrno )__name____package__
__loader__)	machineryBuiltinImporterverification)self r   c/www/server/python_manager/versions/3.9.10/lib/python3.9/test/test_importlib/builtin/test_loader.pysetUp   s    zLoaderTests.setUpc                 C   sH   |  |tj | j D ]\}}| t||| q| |jt	j
 dS )z;Verify that the module matches against what it should have.N)ZassertIsInstancetypes
ModuleTyper   itemsassertEqualgetattrZassertInr   sysmodules)r   moduleattrvaluer   r   r   verify   s    zLoaderTests.verifyc                 C   s   | j j|S N)r   r   load_module)r   namer   r   r   r      s    zLoaderTests.load_modulec                 C   sJ   t t jj( | t jj}| | W d    n1 s<0    Y  d S r   )r   uncacheBUILTINS	good_namer   r   )r   r   r   r   r   test_module   s    zLoaderTests.test_moduleNc                 C   sZ   t t jj8 | t jj}| t jj}| || W d    n1 sL0    Y  d S r   )r   r    r!   r"   r   ZassertIs)r   Zmodule1Zmodule2r   r   r   test_module_reuse)   s    zLoaderTests.test_module_reusec                 C   sZ   d}|t jvsJ | t}| | W d    n1 s<0    Y  | |jj| d S )NZ	dssdsdfff)r   builtin_module_namesassertRaisesImportErrorr   r   	exceptionr   )r   r   cmr   r   r   test_unloadable0   s
    (zLoaderTests.test_unloadablec                 C   s   d}|t jvsJ t|$ t|}|t j|< W d    n1 sF0    Y  | t}| 	| W d    n1 sz0    Y  | 
|jj| d S )NZbuiltin_reload_test)r   r%   r   r    r   r   r   r&   r'   r   r   r(   r   )r   module_namer   r)   r   r   r   test_already_imported7   s    
((z!LoaderTests.test_already_imported)r   
__module____qualname____doc__r   r   r   r#   Ztest_packageZtest_lacking_parentZtest_state_after_failurer$   r*   r,   r   r   r   r   r   
   s   r   )r   c                   @   sD   e Zd ZdZdd Zdd Zdd Zee	j
jdu d	d
d ZdS )InspectLoaderTestsz4Tests for InspectLoader methods for BuiltinImporter.c                 C   s    | j jtjj}| | d S r   )r   r   get_coder   r!   r"   assertIsNoner   resultr   r   r   test_get_codeN   s    z InspectLoaderTests.test_get_codec                 C   s    | j jtjj}| | d S r   )r   r   
get_sourcer   r!   r"   r2   r3   r   r   r   test_get_sourceS   s    z"InspectLoaderTests.test_get_sourcec                 C   s    | j jtjj}| | d S r   )r   r   
is_packager   r!   r"   ZassertFalser3   r   r   r   test_is_packageX   s    z"InspectLoaderTests.test_is_packageNzall modules are built inc                 C   sR   dD ]}t | jj|}q| t}|tjj W d    n1 sD0    Y  d S )N)r1   r6   r8   )r   r   r   r&   r'   r   r!   bad_name)r   Z	meth_namemethodr)   r   r   r   test_not_builtin]   s    z#InspectLoaderTests.test_not_builtin)r   r-   r.   r/   r5   r7   r9   unittestskipIfr   r!   r:   r<   r   r   r   r   r0   I   s   r0   __main__)r   r   r   Zimport_importlibr   r   r   r=   r>   r!   r"   r   Z	test_bothZFrozen_LoaderTestsZSource_LoaderTestsr0   ZFrozen_InspectLoaderTestsZSource_InspectLoaderTestsr   mainr   r   r   r   <module>   s"   
;