a  ze @svddlZddlZddlZddlZddlZddlZddlZddlmZddl m Z Gdddej Z e dkrredS)N)cache_from_source)create_empty_filec@s<eZdZddZddZddZddZd d Zd d Zd S) TestImportcOsTd|_|jtjvr*|jttj7_q|jd|_tj j |g|Ri|dS)NZPACKAGE_z.foo) package_namesysmodulesrandomchoicestring ascii_letters module_nameunittestTestCase__init__)selfargskwrW/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_importlib/test_pkg_import.pyrs   zTestImport.__init__cCs(|j|jfD]}|tjvr tj|=q dS)N)rr rr)rr rrrremove_moduless zTestImport.remove_modulescCsbt|_tj|jtj|j|j|_ t |j t tj|j dtj|j d|_ dS)Nz __init__.pyzfoo.py) tempfilemkdtemptest_dirrpathappendosjoinrZ package_dirmkdirr module_pathrrrrsetUps   zTestImport.setUpcCs<t|j|tj|jdtj|j|dS)Nr) shutilrmtreerZassertNotEqualrrcountremoverrrrrtearDown#s zTestImport.tearDowncCsZt|j}tj|r t|t|jd}||Wdn1sL0YdS)Nw)rrrrexistsr$openwrite)rcontentsZ compiled_pathfrrr rewrite_file)s    zTestImport.rewrite_filecCs|dzt|jWnty*Yn 0td||jtj|t tj|j dd}|t t vr~|t tj7}q`||zt|jWntyYn 0td|d|t|jj}|t||ddS)NforzFailed to induce SyntaxErrorfooazFailed to induce NameError.z%s = 1)r, __import__r SyntaxError RuntimeErrorZ assertNotInrrZ assertFalsehasattrrdir __builtins__rr r r NameErrorr.Z assertEqualgetattr)rvarmodulerrrtest_package_import__semantics0s     z)TestImport.test_package_import__semanticsN) __name__ __module__ __qualname__rrr r%r,r;rrrrr s  r__main__)rrr!r rrr importlib.utilrZ test.supportrrrr<mainrrrrs  C