Commit f01a3379 authored by Senthil Kumaran's avatar Senthil Kumaran

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

Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
parent 035997f1
...@@ -279,6 +279,21 @@ class CmdLineTest(unittest.TestCase): ...@@ -279,6 +279,21 @@ class CmdLineTest(unittest.TestCase):
self._check_output(script_name, rc, out, self._check_output(script_name, rc, out,
script_name, script_name, '', '') script_name, script_name, '', '')
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:
with support.temp_cwd(path=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():
support.run_unittest(CmdLineTest) support.run_unittest(CmdLineTest)
support.reap_children() support.reap_children()
......
...@@ -10,6 +10,9 @@ What's New in Python 3.2.4 ...@@ -10,6 +10,9 @@ What's New in Python 3.2.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() or readall() methods - Issue #12268: File readline, readlines and read() or readall() methods
no longer lose data when an underlying read system call is interrupted. no longer lose data when an underlying read system call is interrupted.
IOError is no longer raised due to a read system call returning EINTR IOError is no longer raised due to a read system call returning EINTR
......
...@@ -673,7 +673,7 @@ Py_Main(int argc, wchar_t **argv) ...@@ -673,7 +673,7 @@ Py_Main(int argc, wchar_t **argv)
sts = run_command(command, &cf); sts = run_command(command, &cf);
free(command); free(command);
} else if (module) { } else if (module) {
sts = RunModule(module, 1); sts = (RunModule(module, 1) != 0);
} }
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