a ze`&@s^ddlZddlZddlZddlZddlZddZddZGdddejZe dkrZe dS) NcCs\t|}|D]>}tj||}tj|rBtj|sBt|qt|qt|dSN) oslistdirpathjoinisdirislinkcleanoutremovermdir)rootnamesnamefullnamerA/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_pkg.pyr s   r cCs(d|vr|dd|vr$|d|S)N __builtins____initializing__)r )Zlstrrrfixdirs   rc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ eejjdkdddZdS)TestPkgcCs$d|_d|_ttj|_t|_dSr)r pkgnamelistsysrsyspathsetmodules_to_cleanupselfrrrsetUp0s z TestPkg.setUpcsnjtjdd<jD]}|tjvrtj|=qjr>tjjrjfddtjD}|D] }tj|=q\dS)Ncs g|]}j|dvr|qS).)rsplit).0rrrr @sz$TestPkg.tearDown..)rrrrmodulesr r r)rZ modulenamer#rrrrtearDown6s    zTestPkg.tearDowncCstt|td|idS)Nr)exectextwrapdedentglobals)rcoderrrrun_codeEszTestPkg.run_codec Cst}tjd|tj|s,t||D]\}}|}|j d ||}|D]}tj ||}qZ|durt|q0t |d.}| ||ds| dWdq01s0Yq0||_|dd|_dS)Nrrw )tempfilemkdtemprrinsertrrmkdirr raddropenwriteendswithr r) rZdescrr rcontentscompsrcfrrrmkhierHs$       *zTestPkg.mkhiercCsddg}||ddl}dS)N)t1N)zt1 __init__.pyr)r9r:)rhierr:rrrtest_1^s zTestPkg.test_1cCs"gd}||ddl}ddl}||jd||jjd||jjjdd}||ddlm}ddlm}dd lm }||jd||jd||jjdd D]}| t d d |qddl}ddl}||jd||jjd||jjjdd }||dS)N))t2N)zt2 __init__.pyz 'doc for t2')zt2 subN)zt2 sub __init__.pyr;)z t2 sub subsubN)zt2 sub subsub __init__.pyspam = 1rr>zt2.subz t2.sub.subsubz{ import t2 from t2 import * self.assertEqual(dir(), ['self', 'sub', 't2']) subsubsubspam)rErArCr>rzFailed to import %sz_ from t2 import * self.assertEqual(dir(), ['self', 'sub']) ) r9Zt2.subZ t2.sub.subsub assertEqual__name__rArCr*r>rEZ assertTruelocals)rr<r>srArCrErrrrtest_2cs0     zTestPkg.test_2cCsNgd}||ddl}||jd||jjd||jjjddS)N))t3N)zt3 __init__.pyr;)zt3 subN)zt3 sub __init__.pyr;)z t3 sub subsubN)zt3 sub subsub __init__.pyr?rrKzt3.subz t3.sub.subsub)r9Z t3.sub.subsubrFrGrArC)rr<rKrrrtest_3s  zTestPkg.test_3cCs$gd}||d}||dS)N) )zt4.pyz)raise RuntimeError('Shouldnt load t4.py'))Zt4N)zt4 __init__.pyr;)z t4 sub.py*raise RuntimeError('Shouldnt load sub.py'))zt4 subN)zt4 sub __init__.pyr;)zt4 sub subsub.py-raise RuntimeError('Shouldnt load subsub.py'))z t4 sub subsubN)zt4 sub subsub __init__.pyr?z[ from t4.sub.subsub import * self.assertEqual(spam, 1) )r9r*)rr<rIrrrtest_4s zTestPkg.test_4cCsgd}||ddl}d}||ddl}|tt|gd|tt|jgd|tt|jgddS)N))t5N)zt5 __init__.pyz import t5.foo)z t5 string.pyr?)z t5 foo.pyz-from . import string; assert string.spam == 1rzo from t5 import * self.assertEqual(dir(), ['foo', 'self', 'string', 't5']) ) __cached____doc____file__ __loader__rG __package____path____spec__foostringrP)rQrRrSrTrGrUrWrY)rQrRrSrTrGrUrWrE)r9rPr*rFrdirrXrY)rr<rPrIrrrtest_5s  zTestPkg.test_5cCsDgd}||ddl}|tt|gdd}||dS)N))t6N)zt6 __init__.pyz!__all__ = ['spam', 'ham', 'eggs'])z t6 spam.pyr;)z t6 ham.pyr;)z t6 eggs.pyr;r) __all__rQrRrSrTrGrUrVrWa import t6 from t6 import * self.assertEqual(fixdir(dir(t6)), ['__all__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', 'eggs', 'ham', 'spam']) self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6']) )r9r\rFrrZr*)rr<r\rIrrrtest_6s  zTestPkg.test_6c Csgd}||d\}}}ddl}|tt|gd||ddlm}|tt|gd||||ddlm}|tt|gd||||||ddl m }||d ||||||dS) N) )zt7.pyr;)t7N)zt7 __init__.pyr;)z t7 sub.pyrM)zt7 subN)zt7 sub __init__.pyr;)z t7 sub .pyrN)z t7 sub subsubN)zt7 sub subsub __init__.pyr?)NNNr)rQrRrSrTrGrUrVrWr@rB) rQrRrSrTrGrUrVrWrErD) r9r_rFrrZZ assertFalserAZt7.subrCZ t7.sub.subsubrE) rr<r_rArCZtasZsubparZ subsubsubZhamrrrtest_7s4              zTestPkg.test_7z)Docstrings are omitted with -O2 and abovecCs:ddtjddfg}||ddl}||jddS)N)t8Nz t8 __init__pyz 'doc for t8'rz doc for t8)rextsepr9rcrFrR)rr<rcrrrtest_8s  zTestPkg.test_8N)rG __module__ __qualname__rr$r*r9r=rJrLrOr[r^raunittestZskipIfrflagsoptimizerfrrrrr.s/,r__main__) rrr-r&rir rZTestCaserrGmainrrrrs z