ó {G_Tc@sôddlZddlZddlZddlZddlmZmZmZm Z m Z m Z m Z m Z ejjZdddgZdZed„Zedd „Zd Zdd „Zd ejfd „ƒYZd„ZedkrðeƒndS(iÿÿÿÿN(t run_pythonttemp_dirt make_scripttcompile_scripttassert_python_failuretmake_pkgtmake_zip_scriptt make_zip_pkgttest1ttest2ttest3s# Script may be run with optimisation enabled, so don't rely on assert # statements being executed def assertEqual(lhs, rhs): if lhs != rhs: raise AssertionError('%r != %r' % (lhs, rhs)) def assertIdentical(lhs, rhs): if lhs is not rhs: raise AssertionError('%r is not %r' % (lhs, rhs)) # Check basic code execution result = ['Top level assignment'] def f(): result.append('Lower level reference') f() assertEqual(result, ['Top level assignment', 'Lower level reference']) # Check population of magic variables assertEqual(__name__, '__main__') print '__file__==%r' % __file__ print '__package__==%r' % __package__ # Check the sys module import sys assertIdentical(globals(), sys.modules[__name__].__dict__) print 'sys.argv[0]==%r' % sys.argv[0] cCst|||ƒS(N(R(t script_dirtscript_basenametsource((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt_make_test_script*sicCst||||||ƒS(N(R(tzip_dirt zip_basenametpkg_nameR R tdepth((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt_make_test_zip_pkg-ssPimport sys, os.path, runpy sys.path.insert(0, %s) runpy._run_module_as_main(%r) cCsA|dkrd}n t|ƒ}t||f}t|||ƒS(Nsos.path.dirname(__file__)(tNonetreprt launch_sourceR(R R t module_nametpathR ((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt_make_launch_script<s    t CmdLineTestcBsªeZd„Zd„Zd„Zd„Zd„Zd„Zd„Zd„Z d„Z d „Z d „Z d „Z d „Zd „Zd„Zd„Zd„Zd„ZRS(c Gsµ||f}t|Œ\}}tr6d|GH|GHn|j|dƒd|} d|} d|} trdGH| GH| GH| GHn|j| |ƒ|j| |ƒ|j| |ƒdS(NsOutput from test script %r:is __file__==%rssys.argv[0]==%rs__package__==%rsExpected output:(Rtverboset assertEqualtassertIn( tselft script_namet expected_filetexpected_argv0texpected_packagetcmd_line_switchestrun_argst exit_codetdatat printed_filet printed_argv0tprinted_package((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt _check_scriptEs"     cGsS||f}t|Œ\}}tr?d|GH|GHd|GHn|j||ƒdS(NsOutput from test script %r:sExpected output: %r(RRR(RRt expected_msgR#R$R%R&((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt_check_import_errorZs   c Cs;tƒ,}t|dƒ}|j|||dƒWdQXdS(Ntscript(RRR*R(RR R((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_basic_scriptds c CsTtƒE}t|dƒ}t|ƒ}tj|ƒ|j|||dƒWdQXdS(NR-(RRRtostremoveR*R(RR Rt compiled_name((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_script_compiledis    c Cs;tƒ,}t|dƒ}|j|||dƒWdQXdS(Nt__main__t(RRR*(RR R((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_directoryps c CsTtƒE}t|dƒ}t|ƒ}tj|ƒ|j|||dƒWdQXdS(NR3R4(RRRR/R0R*(RR RR1((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_directory_compiledus    cCs0tƒ!}d|}|j||ƒWdQXdS(Ns"can't find '__main__' module in %r(RR,(RR tmsg((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_directory_error|s  c CsStƒD}t|dƒ}t|d|ƒ\}}|j|||dƒWdQXdS(NR3ttest_zipR4(RRRR*(RR Rtzip_nametrun_name((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt test_zipfiles c Cs_tƒP}t|dƒ}t|ƒ}t|d|ƒ\}}|j|||dƒWdQXdS(NR3R9R4(RRRRR*(RR RR1R:R;((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_zipfile_compiled‡s   cCsWtƒH}t|dƒ}t|d|ƒ\}}d|}|j||ƒWdQXdS(Ntnot_mainR9s"can't find '__main__' module in %r(RRRR,(RR RR:R;R7((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_zipfile_errorŽs   c Csltƒ]}tjj|dƒ}t|ƒt|dƒ}t|ddƒ}|j|||dƒWdQXdS(Nttest_pkgR-tlaunchstest_pkg.script(RR/RtjoinRRRR*(RR tpkg_dirRt launch_name((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_module_in_package•s   c Cs\tƒM}t|dddƒ\}}t|dd|ƒ}|j|||dƒWdQXdS(NR9R@R-RAstest_pkg.script(RRRR*(RR R:R;RD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt!test_module_in_package_in_zipfiles c CsbtƒS}t|dddddƒ\}}t|dd|ƒ}|j|||dƒWdQXdS( NR9R@R-RiRAstest_pkg.test_pkg.scriptstest_pkg.test_pkg(RRRR*(RR R:R;RD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt$test_module_in_subpackage_in_zipfile£s !c Csltƒ]}tjj|dƒ}t|ƒt|dƒ}t|ddƒ}|j|||dƒWdQXdS(NR@R3RA(RR/RRBRRRR*(RR RCRRD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt test_package©s   c Cs…tƒv}tjj|dƒ}t|ƒt|dƒ}t|ƒ}tj|ƒt|ddƒ}|j |||dƒWdQXdS(NR@R3RA( RR/RRBRRRR0RR*(RR RCRR1RD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_package_compiled²s     cCs]tƒN}tjj|dƒ}t|ƒd}t|ddƒ}|j||ƒWdQXdS(NR@s7'test_pkg' is a package and cannot be directly executedRA(RR/RRBRRR,(RR RCR7RD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_package_error½s   cCs|tƒm}tjj|dƒ}t|ƒtjj|dƒ}t|ƒd}t|ddƒ}|j||ƒWdQXdS(NR@R3s^Cannot use package as __main__ module; 'test_pkg' is a package and cannot be directly executedRA(RR/RRBRRR,(RR RCtmain_dirR7RD((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_package_recursionÆs   cCs†tƒw}tjj|dƒ}t|ƒt|ddƒ}tddtŒ\}}}tdkrl|GHn|j |dƒWdQXdS(NR@tothers+if __name__ == '__main__': raise ValueErrors-mstest_pkg.otheri( RR/RRBRRRt example_argsRR(RR RCRtrctoutterr((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyttest_dash_m_error_code_is_oneÒs   (t__name__t __module__R*R,R.R2R5R6R8R<R=R?RERFRGRHRIRJRLRR(((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyRDs$             cCs!tjjtƒtjjƒdS(N(ttestt test_supportt run_unittestRt reap_children(((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyt test_mainàsR3(tunittestR/tos.pathttest.test_supportRUttest.script_helperRRRRRRRRRVRRNt test_sourceRRRRRtTestCaseRRYRS(((s5/usr/local/lib/python2.7/test/test_cmd_line_script.pyts    :    œ