a 5êdg`&ã@s^ddlZddlZddlZddlZddlZdd„Zdd„ZGdd„dejƒZe dkrZe  ¡dS) éNcCs\t |¡}|D]>}tj ||¡}tj |¡rBtj |¡sBt|ƒqt |¡qt |¡dS©N) ÚosÚlistdirÚpathÚjoinÚisdirÚislinkÚcleanoutÚremoveÚrmdir)ÚrootÚnamesÚnameÚfullname©rú)/usr/local/lib/python3.9/test/test_pkg.pyr s   r cCs(d|vr| d¡d|vr$| d¡|S)NÚ __builtins__Ú__initializing__)r )ZlstrrrÚfixdirs   rc@s€eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z e ejjdkd¡dd„ƒZdS)ÚTestPkgcCs$d|_d|_ttjƒ|_tƒ|_dSr)r ÚpkgnameÚlistÚsysrÚsyspathÚsetÚmodules_to_cleanup©ÚselfrrrÚsetUp0s z TestPkg.setUpcsnˆjtjdd…<ˆjD]}|tjvrtj|=qˆjr>tˆjƒˆjrj‡fdd„tjDƒ}|D] }tj|=q\dS)Ncs g|]}ˆj| d¡vr|‘qS)Ú.)rÚsplit)Ú.0rrrrÚ @sÿz$TestPkg.tearDown..)rrrrÚmodulesr r r)rZ modulenamer#rrrrÚtearDown6s    zTestPkg.tearDowncCstt |¡tƒd|iƒdS)Nr)ÚexecÚtextwrapÚdedentÚglobals)rÚcoderrrÚrun_codeEszTestPkg.run_codec Csät ¡}tj d|¡tj |¡s,t |¡|D]š\}}| ¡}|j   d  |¡¡|}|D]}tj  ||¡}qZ|dur‚t |¡q0t |dƒ.}|  |¡| d¡s¬|  d¡Wdƒq01sÀ0Yq0||_|dd|_dS)NrrÚwÚ )ÚtempfileÚmkdtemprrÚinsertrrÚmkdirr rÚaddrÚopenÚwriteÚendswithr r) rZdescrr rÚcontentsÚcompsrÚcÚfrrrÚmkhierHs$       *zTestPkg.mkhiercCsddg}| |¡ddl}dS)N)Út1N)zt1 __init__.pyÚr)r9r:)rÚhierr:rrrÚtest_1^s zTestPkg.test_1cCs"gd¢}| |¡ddl}ddl}| |jd¡| |jjd¡| |jjjd¡d}| |¡ddlm}ddlm}dd lm }| |jd¡| |jd¡| |jjd¡d D]}|  t ƒd d |¡q´ddl}ddl}| |jd¡| |jjd¡| |jjjd¡d }| |¡dS)N))Út2N)zt2 __init__.pyz 'doc for t2')zt2 subN)zt2 sub __init__.pyr;)z t2 sub subsubN)zt2 sub subsub __init__.pyúspam = 1rr>zt2.subz t2.sub.subsubz{ import t2 from t2 import * self.assertEqual(dir(), ['self', 'sub', 't2']) ©Úsub©Úsubsub©Úspam)rErArCr>rzFailed to import %sz_ from t2 import * self.assertEqual(dir(), ['self', 'sub']) ) r9Zt2.subZ t2.sub.subsubÚ assertEqualÚ__name__rArCr*r>rEZ assertTrueÚlocals)rr<r>ÚsrArCrErrrrÚtest_2cs0     zTestPkg.test_2cCsNgd¢}| |¡ddl}| |jd¡| |jjd¡| |jjjd¡dS)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<rKrrrÚtest_3’s  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<rIrrrÚtest_4¢s zTestPkg.test_4cCs€gd¢}| |¡ddl}d}| |¡ddl}| tt|ƒƒgd¢¡| tt|jƒƒgd¢¡| tt|jƒƒgd¢¡dS)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__ÚfooÚstringrP)rQrRrSrTrGrUrWrY)rQrRrSrTrGrUrWrE)r9rPr*rFrÚdirrXrY)rr<rPrIrrrÚtest_5·s  ÿÿÿzTestPkg.test_5cCsDgd¢}| |¡ddl}| tt|ƒƒgd¢¡d}| |¡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\rIrrrÚtest_6Ôs ÿ zTestPkg.test_6c Csúgd¢}| |¡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 subsubsubZhamrrrÚtest_7ïs4  ÿ  ÿ   ÿ       zTestPkg.test_7éz)Docstrings are omitted with -O2 and abovecCs:ddtjddfg}| |¡ddl}| |jd¡dS)N)Út8Nz t8 __init__Úpyz 'doc for t8'rz doc for t8)rÚextsepr9rcrFrR)rr<rcrrrÚtest_8s þ zTestPkg.test_8N)rGÚ __module__Ú __qualname__rr$r*r9r=rJrLrOr[r^raÚunittestZskipIfrÚflagsÚoptimizerfrrrrr.s/,ÿrÚ__main__) rrr-r&rir rZTestCaserrGÚmainrrrrÚs z