a  ze@srddlmZddlZddlmZddlZGdddZejeejd\Z Z Gdd d eej Z e d krnedS) )utilN) MethodTypec@seZdZddZddZdS)UseCachecCsZd}td8|tjd<|d}|t|t|Wdn1sL0YdS)Nzsome module found!Z some_module)runcachesysmodules __import__ assertEqualid)selfZ module_to_usemoduler\/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_importlib/import_/test_caching.pytest_using_caches    zUseCache.test_using_cachec Csd}t|^dtj|<|t}||Wdn1sD0Y||jj |Wdn1sr0YdS)NZ using_None) rrrrZ assertRaises ImportErrorr r exceptionname)r rcmrrrtest_None_in_cache s    (zUseCache.test_None_in_cacheN)__name__ __module__ __qualname__rrrrrrrsr)r c@s<eZdZejdZddddZddZdd Zd d ZdS) ImportlibUseCacheZSourceN)return_cs.tj|}|jfdd}t|||_|S)Ncs |S)Nr)r fullnameZ original_loadrrr load_module8sz2ImportlibUseCache.create_mock..load_module)rZ mock_modulesrr)r rnamesmockrrrr create_mock5s   zImportlibUseCache.create_mockc Cs|db}tj|gd4|d}|t|ttjdWdn1sT0YWdn1sr0YdS)Nr  meta_path)r r import_stater r r rr)r rr rrrtest_using_cache_after_loader@s  z/ImportlibUseCache.test_using_cache_after_loaderc Cs|ddt}tj|gdF|d}|t|d|t|jtt j dWdn1sh0YWdn1s0YdS)N pkg.__init__ pkg.moduler!r r rr#r Z assertTruehasattrr r r rrr Zimporterr rrr+test_using_cache_for_assigning_to_attributeHs   z=ImportlibUseCache.test_using_cache_for_assigning_to_attributec Cs|ddz}tj|gdL|jddgd}|t|d|t|jtt j dWdn1sn0YWdn1s0YdS)Nr%r&r!Zpkgr )fromlistr'r)rrrtest_using_cache_for_fromlistRs  z/ImportlibUseCache.test_using_cache_for_fromlist) rrrrr r r$r*r,rrrrr/s    r__main__)rrtypesrZunittestrZ test_bothr ZFrozen_UseCacheZSource_UseCacheZTestCaserrmainrrrrs  $-