a  zesI@sZddlmZedZedZedZddlZddlZddl m Z ddl Z ddl Z ddl Z Gdd d Zejeed \ZZGd d d ZGd ddeZejeed \ZZGdddeZejeed \ZZGdddZejeeed\ZZGdddZejeed \ZZGddde jZ GdddZ!eje!ed\Z"Z#e$dkrVe %dS))util importlibzimportlib.utilzimportlib.machineryN)supportc@sDeZdZddZddZddZddZd d Zd d Zd dZ dS)ImportModuleTestsc CsvtdX}tj|gd*|jd}||jdWdn1sJ0YWdn1sh0YdS)N top_level meta_path test_util mock_modules import_stateinit import_module assertEqual__name__)selfmockmodulerP/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_importlib/test_api.pytest_module_imports  z$ImportModuleTests.test_module_importc Csd}d|}d|}t||X}tj|gd*|j|}||j|Wdn1sd0YWdn1s0YdSNpkg {0}.__init__z{0}.modrformatr r r rrrrrpkg_name pkg_long_namenamerrrrrtest_absolute_package_imports   z.ImportModuleTests.test_absolute_package_importc Csd}d|}d}d||}d|}t||f}tj|gd8|j||j||}||j|Wdn1s0YWdn1s0YdS)Nrrmodz{0}.{1}z.{0}rr)rrr module_nameZ absolute_nameZ relative_namerrrrr$test_shallow_relative_package_import$s    z6ImportModuleTests.test_shallow_relative_package_importc Csgd}tj|r}tj|gdD|jd|jd|jdd}||jdWdn1sl0YWdn1s0YdS)N) a.__init__z a.b.__init__a.craa.bz..cr&r )rmodulesrrrrr!test_deep_relative_package_import1s   z3ImportModuleTests.test_deep_relative_package_importc Csd}d|}d|}t||f}tj|gd8|j||j||}||j|Wdn1sr0YWdn1s0YdSrrrrrr!test_absolute_import_with_package:s   z3ImportModuleTests.test_absolute_import_with_packagecCs:|t|jdWdn1s,0YdS)Nz.support) assertRaises TypeErrorrrrrrrtest_relative_import_wo_packageFs z1ImportModuleTests.test_relative_import_wo_packagec sdfdd}fdd}||d}ddg}tj|d |iJ}tj|gd jdWdn1sp0YWdn1s0Yd dS) NrcsjddS)Nr()rrrr.rrload_aRsz2ImportModuleTests.test_loaded_once..load_acs d7dS)Nrrr) b_load_countrrload_bTsz2ImportModuleTests.test_loaded_once..load_b)r'r(r%r( module_coderr)r r r rrr)rr0r2coder)rr)r1rrtest_loaded_onceMs   Hz"ImportModuleTests.test_loaded_onceN) r __module__ __qualname__rr!r$r*r+r/r5rrrrrs    r)rc@s@eZdZdZddZddZddZdd Zd d Zd d Z dS)FindLoaderTestsNc Csd}t|zt|}d}||_|tj|<t(t dt |j |}Wdn1sd0Y| ||Wdn1s0YdS)Nsome_modz a loader!ignore)r uncachetypes ModuleType __loader__sysr)warningscatch_warnings simplefilterDeprecationWarningr find_loaderr)rr rloaderfoundrrrtest_sys_moduleshs     *z FindLoaderTests.test_sys_modulesc Csd}t|t|}d|_|tj|<|tPt (t dt |j |Wdn1sl0YWdn1s0YWdn1s0YdSNr9r:)r r;r<r=r>r?r)r, ValueErrorr@rArBrCrrDrr rrrrtest_sys_modules_loader_is_Noneus      z/FindLoaderTests.test_sys_modules_loader_is_Nonec Csd}t|t|}z|`Wnty4Yn0|tj|<|t Pt (t dt |j|Wdn1s0YWdn1s0YWdn1s0YdSrH)r r;r<r=r>AttributeErrorr?r)r,rIr@rArBrCrrDrJrrr"test_sys_modules_loader_is_not_sets       z2FindLoaderTests.test_sys_modules_loader_is_not_setc Csd}t|tj|jgd\t4tdt||df|j |Wdn1sd0YWdn1s0YWdn1s0YdS)Nr9rr: r r;r FakeMetaFinderr@rArBrCrrrD)rr rrr test_successs    zFindLoaderTests.test_successc Csd}d}t|tj|jgd^t6tdt|||f|j ||Wdn1sj0YWdn1s0YWdn1s0YdS)Nr9zpath to some placerr:rN)rr pathrrrtest_success_paths     z!FindLoaderTests.test_success_pathcCsJt.tdt||jdWdn1s<0YdS)Nr:Znevergoingtofindthismodule)r@rArBrC assertIsNonerrDr.rrr test_nothings  zFindLoaderTests.test_nothing) rr6r7rOrGrKrMrPrRrTrrrrr8ds    r8c@seZdZGdddZdS)FindLoaderPEP451Testsc@seZdZedddZdS)z$FindLoaderPEP451Tests.FakeMetaFinderNcCstd|||fS)NSource) machinery ModuleSpec)r rQtargetrrr find_specsz.FindLoaderPEP451Tests.FakeMetaFinder.find_spec)NN)rr6r7 staticmethodrZrrrrrOsrONrr6r7rOrrrrrUsrUc@seZdZGdddZdS)FindLoaderPEP302Testsc@seZdZedddZdS)z$FindLoaderPEP302Tests.FakeMetaFinderNcCs||fSNr)r rQrrr find_modulesz0FindLoaderPEP302Tests.FakeMetaFinder.find_module)N)rr6r7r[r_rrrrrOsrONr\rrrrr]sr]c@sLeZdZddZddZddZddZd d Zd d Zd dZ ddZ dS) ReloadTestsc Cs|dD]r}|j|dRt|(|j|}|j|Wdn1sN0YWdq1sl0YqdS)N)tokenizetimemarshal)r)subTestr CleanImportrrreload)rr"rrrrtest_reload_moduless   zReloadTests.test_reload_modulesc Csdd}tjdd|id}||tj|gdN|jd}|j|}tjd}||j d||j dWdn1s0YWdn1s0YdS)NcSs(ddl}t|d}d|_||jd<dS)Nrr)r?typespamr))r?rrrrr4s z.ReloadTests.test_module_replaced..coder)r3rrh) r r r rrrfr?r)rrj)rr4rrreloadedactualrrrtest_module_replaceds   z ReloadTests.test_module_replacedcCs|td^ddl}|j}|`|j|}||||tjd|| |jj |j Wdn1sn0YdSNr<r) rrer<r>rrfassertIsr?r)rrQ)rr<rErkrrrtest_reload_missing_loaders   z&ReloadTests.test_reload_missing_loadercCs~td`ddl}d|_|j|j|}||jd||||t j d|Wdn1sp0YdSrn) rrer<r>rinvalidate_cachesrf assertIsNotror?r))rr<rkrrrtest_reload_loader_replaceds    z'ReloadTests.test_reload_loader_replacedc Csd}td}tdt||jtj ||d}|j |}|d||dd}t ||j |}t|}|d}|d} |dd|| j||| j|||j|||||jtj ||d} |j | }||| |tj| gdd }t|t|| |j|} t| }|d}|d} |dd|| j||| j||| |||j| d|_|||Wdn1s0YWdn1s0YWdn1s 0YdS) Nrjz.py)r __package____file__ __cached____doc__r>__spec__ __builtins__ __init__.py)rrurvrw__path__rx)rtemp_cwdr r; DirsOnSysPathrrqosrQjoinrcache_from_sourceZcreate_empty_filervarscopypoprr rEdirnamemkdirrenamerfroZmaxDiff) rr cwdrQcachedexpectedrnsrEspec init_pathrkrrrtest_reload_location_changeds\                    z(ReloadTests.test_reload_location_changedc Csd}tdx}tdJt||jtj ||d}|j |}||ddd}t |t |d}|dWdn1s0Y|j|}t|}|d} |d} |d} |d d|| j||| j|| || j| |t| ttj|g|t| jWdn1sZ0Y||||jtj ||d } |j | }||| |tj| gddd }t|| |j|} t| }|d} |d} |d d|| j||| j| || ||| j| |||Wdn1sP0YWdn1sp0YWdn1s0YdS) Nrjz __init.py)rrurxrvwz eggs = Noner>r|ryrzr{)rrurvrwr|rxZeggs)rr}r r;r~rrqrrQrrrropenwriterrrrrr ZassertIsNotNonerEsetrr,rLrrfro)rr rZbad_pathrrZ init_filerrrErQrrrkrrrtest_reload_namespace_changed(sj    (          &           z)ReloadTests.test_reload_namespace_changedcCspd}d}tj|ddF}t|||\}}|j|}|j|}|||Wdn1sb0YdS)NrjhamT)r)r Z temp_moduleZ submodulerrrfro)rr ZsubnameZpkg_dirfullname_rrkrrrtest_reload_submodulebs  z!ReloadTests.test_reload_submodulec Csd}t|rt|}tj|<|j|}||j | t |j |Wdn1sh0YWdn1s0YdS)Nrj) r r;r<r=r?r)rrrSryr,ModuleNotFoundErrorrfrJrrrtest_module_missing_specls    z$ReloadTests.test_module_missing_specN) rr6r7rgrmrprsrrrrrrrrr`s  3: r`)rrc@seZdZddZddZdS)InvalidateCacheTestscsGddd}d||}tjd|fdd|tj<|fdd|j|j||jdS)Nc@s$eZdZddZddZddZdS)zGInvalidateCacheTests.test_method_called..InvalidatingNullFindercWs d|_dS)NFcalled)rZignoredrrr__init__szPInvalidateCacheTests.test_method_called..InvalidatingNullFinder.__init__cWsdSr^r)rargsrrrr_szSInvalidateCacheTests.test_method_called..InvalidatingNullFinder.find_modulecSs d|_dS)NTrr.rrrrqszYInvalidateCacheTests.test_method_called..InvalidatingNullFinder.invalidate_cachesN)rr6r7rr_rqrrrrInvalidatingNullFindersrZ gobledeegookrcs tjSr^)r?path_importer_cache __delitem__rkeyrrz9InvalidateCacheTests.test_method_called..cs tjSr^)r?r remover)meta_insrrrr) r?r insert addCleanuprrrq assertTruer)rrZpath_insr)rrrtest_method_calleds   z'InvalidateCacheTests.test_method_calledcs.ddtj<|fdd|jdS)NZ gobbledeegookcstjdSr^)r?rrrrrrrrz:InvalidateCacheTests.test_method_lacking..)r?rrrrqr.rrrtest_method_lackings z(InvalidateCacheTests.test_method_lackingN)rr6r7rrrrrrr~src@seZdZddZdS)FrozenImportlibTestscCstd}||jjjddS)NrVFrozenImporter)rZassertNotEqualr> __class__r)rZ source_initrrrtest_no_frozen_importlibs z-FrozenImportlibTests.test_no_frozen_importlibN)rr6r7rrrrrrsrc@seZdZddZddZdS) StartupTestsc CstjD]\}}t|tjr |j|db|t|dd ||j j |rb| |jdn|j j |r~| |jdWdq 1s0Yq dS)Nr r>z!{!r} lacks a __loader__ attribute)r?r)items isinstancer<r=rdrhasattrrrWBuiltinImporterr_rrr>rrJrrrtest_everyone_has___loader__s  z)StartupTests.test_everyone_has___loader__c CstjD]\}}t|tjr |j|dZ|t|d|j j |rZ| |j dn|j j |rv| |j dWdq 1s0Yq dS)Nrry)r?r)rrr<r=rdrrrWrr_rrryrrJrrrtest_everyone_has___spec__s z'StartupTests.test_everyone_has___spec__N)rr6r7rrrrrrrs r)rW__main__)&rtrr Zimport_importlibrrWZos.pathrr?testrr<Zunittestr@rZ test_bothZFrozen_ImportModuleTestsZSource_ImportModuleTestsr8rUZFrozen_FindLoaderPEP451TestsZSource_FindLoaderPEP451Testsr]ZFrozen_FindLoaderPEP302TestsZSource_FindLoaderPEP302Testsr`ZFrozen_ReloadTestsZSource_ReloadTestsrZFrozen_InvalidateCacheTestsZSource_InvalidateCacheTestsZTestCaserrZFrozen_StartupTestsZSource_StartupTestsrmainrrrrsL     R H  6!