a  ze*@sddlmZddlmZedZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z GdddejZejeed \ZZGd d d ejZejeed \ZZed kre dS) )abc)utilzimportlib.machineryN)assert_python_failurec@s`eZdZddZddZddZddZd d Zd d Zd Z d Z ddZ d Z ddZ ddZd S) LoaderTestscCs|jtjjtjj|_dSN) machineryExtensionFileLoaderr EXTENSIONSname file_pathloaderselfr]/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_importlib/extension/test_loader.pysetUps zLoaderTests.setUpcCs |j|Sr)r load_module)rfullnamerrrrszLoaderTests.load_modulecCsN|j|jd|t|dWdn1s@0YdS)NZXXX)r r assertRaises ImportErrorrrrrtest_load_module_APIs   z LoaderTests.test_load_module_APIcCs(|jtjjtjj}||j|dSr)rr rr r r assertEqualr rotherrrr test_equality s zLoaderTests.test_equalitycCs,|jdtjjtjj}||j|dS)N_)rr rr r r assertNotEqualr rrrrtest_inequality%szLoaderTests.test_inequalitycCsttjjx|tjj}dtjjfdtjjfdfD]\}}|t|||q8|tjjt j | |j |j jWdn1s0YdSN__name____file__) __package__)runcacher r rr rgetattrZassertInsysmodulesassertIsInstance __loader__rr rmoduleattrvaluerrr test_module*s   zLoaderTests.test_moduleNcCsZttjj8|tjj}|tjj}|||Wdn1sL0YdSr)rr$r r rassertIsrZmodule1Zmodule2rrrtest_module_reuse;szLoaderTests.test_module_reusecCsLd}|t}||Wdn1s.0Y||jj|dSNzasdfjkl;)rrrr exceptionr rr cmrrrtest_unloadableDs (zLoaderTests.test_unloadablecCs\||jtjj|jjD]8}tj dddd|}|j d|}| |dqdS)NZsomepathZpkg__init__) Z assertFalser is_packagerr r rEXTENSION_SUFFIXESosr7joinr Z assertTrue)rsuffixr7r rrrtest_is_packageJs  zLoaderTests.test_is_package)r __module__ __qualname__rrrrrr. test_packagetest_lacking_parentr1test_state_after_failurer6r>rrrrrs r)rc@seZdZddZdZdZdZddZddZdd Z d d Z d d Z ddZ ddZ ddZddZddZddZddZddZddZd d!Zd"d#ZdS)$MultiPhaseExtensionModuleTestscCs<d|_|jd}tj|j|_|j|j|jj|_ dS)NZ_testmultiphase) r r FileFinder importlibr find_specspecr originr )rfinderrrrrYs   z$MultiPhaseExtensionModuleTests.setUpNc Cst|j|}d|jfd|jjfdfD]\}}|t|||q.|t |j Wdn1sp0Y| |t j |j||j|jjWdn1s0YdSr)rr$r rrHrIrr%rAttributeError__path__r/r&r'r(r)rr r*rrrr.js   $z*MultiPhaseExtensionModuleTests.test_modulec CsBt|j|}||tj|}|| dd|| d| t |j Wdn1sv0Yd|_ ||j d|| ddd||t||ddd| |j|Wdn1s0Y||jd||jd Wdn1s40YdS) NZabcdr Z23Z123isomething different)rr$r rr(types ModuleTypeExamplerdemorrKrZfooZStrstrerrorZ int_const str_const)rr+exrrrtest_functionalityxs" $&z1MultiPhaseExtensionModuleTests.test_functionalitycCsVt|j6|}|j}t||||jWdn1sH0YdSr)rr$r rrSrFreloadr/)rr+Zex_classrrr test_reloads  z*MultiPhaseExtensionModuleTests.test_reloadc Cs|}|d"||ddWdn1s:0Y|dD|t|dWdn1sz0YWdn1s0Y|dD|t|dWdn1s0YWdn1s0YdS)NZPyState_FindModulerZPyState_AddModulerOZPyState_RemoveModuler)rsubTestrZcall_state_registration_funcr SystemErrorrr+rrrtest_try_registrations 0  F  z4MultiPhaseExtensionModuleTests.test_try_registrationcCs|j|jSr)r rr rrrrrsz*MultiPhaseExtensionModuleTests.load_modulecCs>|jj}|j||}tj||}tj|}|||Sr) rHrIrr rFrspec_from_loadermodule_from_spec exec_module)rrrIr rHr+rrrload_module_by_names   z2MultiPhaseExtensionModuleTests.load_module_by_namecCsD|d|j}||tj||jd|j||jddS)Nzpkg.rP)rcr r(rQrRrr rWr^rrrtest_load_submodulesz2MultiPhaseExtensionModuleTests.test_load_submodulecCsF|d}||tj||jd||jd|dtj dS)NxrP) rcr(rQrRrr rWZ assertNotInr&r'r^rrrtest_load_short_names  z3MultiPhaseExtensionModuleTests.test_load_short_namecCs(||j}||j}|||dSr)rcr Z assertIsNotr0rrrtest_load_twices  z.MultiPhaseExtensionModuleTests.test_load_twicecCsLd}|t}||Wdn1s.0Y||jj|dSr2rrrcrr3r r4rrrr6s (z.MultiPhaseExtensionModuleTests.test_unloadablecCsLd}|t}||Wdn1s.0Y||jj|dS)Nufoórhr4rrrtest_unloadable_nonasciis (z7MultiPhaseExtensionModuleTests.test_unloadable_nonasciicCs:|jd}||}|t|tt||jddS)NZ _nonmodule)r rcrtypeunittestrthreerr modrrrtest_nonmodules  z-MultiPhaseExtensionModuleTests.test_nonmodulecCsN|jd}||}|t|tt||jd||ddddS)NZ_nonmodule_with_methodsrj rOrM)r rcrrkrlrrmZbarrnrrrtest_nonmodule_with_methodss   z:MultiPhaseExtensionModuleTests.test_nonmodule_with_methodscCs4|jd}||}||tj||j|dS)NZ _null_slots)r rcr(rQrRrr )rr r+rrrtest_null_slotss  z.MultiPhaseExtensionModuleTests.test_null_slotsc CszdD]p}||R|jd|}|t||Wdn1sL0YWdq1sj0YqdS)N)Zbad_slot_largeZbad_slot_negativeZcreate_int_with_stateZ negative_sizeZ export_nullZexport_uninitializedZ export_raiseZexport_unreported_exceptionZ create_nullZ create_raiseZcreate_unreported_exceptionZnonmodule_with_exec_slotsZexec_errZ exec_raiseZexec_unreported_exceptionr)r\r rr]rc)rZ name_baser rrrtest_bad_moduless   z/MultiPhaseExtensionModuleTests.test_bad_modulesc Csx|jddfdg}|D]\\}}||:||}||j|||jd|Wdq1sh0YqdS)Nu_zkouška_načteníZCzech)u_インポートテストZJapanesezModule named in %s)r r\rcrr __doc__)rZcasesr langr+rrr test_nonasciis    z,MultiPhaseExtensionModuleTests.test_nonascii)r r?r@rrArBrCr.rYr[r_rrcrdrfrgr6rirprrrsrtrwrrrrrDUs(   rD__main__)r#rrZimport_importlibrZos.pathr;r&rQrlimportlib.utilrFZtest.support.script_helperrrZ test_bothZFrozen_LoaderTestsZSource_LoaderTestsrDZ%Frozen_MultiPhaseExtensionModuleTestsZ%Source_MultiPhaseExtensionModuleTestsr mainrrrrs(    E =