Commit 3b30b19e authored by Senthil Kumaran's avatar Senthil Kumaran

Fix closes issue # 15033 - Return the proper exitcode for failure when modules...

Fix closes issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
parent d0f5f482
...@@ -6,11 +6,14 @@ import os.path ...@@ -6,11 +6,14 @@ import os.path
import test.test_support import test.test_support
from test.script_helper import (run_python, from test.script_helper import (run_python,
temp_dir, make_script, compile_script, temp_dir, make_script, compile_script,
make_pkg, make_zip_script, make_zip_pkg) assert_python_failure, make_pkg,
make_zip_script, make_zip_pkg)
verbose = test.test_support.verbose verbose = test.test_support.verbose
example_args = ['test1', 'test2', 'test3']
test_source = """\ test_source = """\
# Script may be run with optimisation enabled, so don't rely on assert # Script may be run with optimisation enabled, so don't rely on assert
# statements being executed # statements being executed
...@@ -204,6 +207,19 @@ class CmdLineTest(unittest.TestCase): ...@@ -204,6 +207,19 @@ class CmdLineTest(unittest.TestCase):
launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg') launch_name = _make_launch_script(script_dir, 'launch', 'test_pkg')
self._check_import_error(launch_name, msg) self._check_import_error(launch_name, msg)
def test_dash_m_error_code_is_one(self):
# If a module is invoked with the -m command line flag
# and results in an error that the return code to the
# shell is '1'
with temp_dir() as script_dir:
pkg_dir = os.path.join(script_dir, 'test_pkg')
make_pkg(pkg_dir)
script_name = _make_test_script(pkg_dir, 'other', "if __name__ == '__main__': raise ValueError")
rc, out, err = assert_python_failure('-m', 'test_pkg.other', *example_args)
if verbose > 1:
print(out)
self.assertEqual(rc, 1)
def test_main(): def test_main():
test.test_support.run_unittest(CmdLineTest) test.test_support.run_unittest(CmdLineTest)
......
...@@ -9,6 +9,9 @@ What's New in Python 2.7.4 ...@@ -9,6 +9,9 @@ What's New in Python 2.7.4
Core and Builtins Core and Builtins
----------------- -----------------
- Issue #15033: Fix the exit status bug when modules invoked using -m swith,
return the proper failure return value (1). Patch contributed by Jeff Knupp.
- Issue #12268: File readline, readlines and read() methods no longer lose - Issue #12268: File readline, readlines and read() methods no longer lose
data when an underlying read system call is interrupted. IOError is no data when an underlying read system call is interrupted. IOError is no
longer raised due to a read system call returning EINTR from within these longer raised due to a read system call returning EINTR from within these
......
...@@ -583,7 +583,7 @@ Py_Main(int argc, char **argv) ...@@ -583,7 +583,7 @@ Py_Main(int argc, char **argv)
sts = PyRun_SimpleStringFlags(command, &cf) != 0; sts = PyRun_SimpleStringFlags(command, &cf) != 0;
free(command); free(command);
} else if (module) { } else if (module) {
sts = RunModule(module, 1); sts = (RunModule(module, 1) != 0);
free(module); free(module);
} }
else { else {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment