summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSenthil Kumaran <senthil@uthcode.com>2012-07-05 02:33:45 (GMT)
committerSenthil Kumaran <senthil@uthcode.com>2012-07-05 02:33:45 (GMT)
commitf28fbabc7fa7cf1c4880ce39b507f600def35439 (patch)
tree80fb013697540a163409e6c972f35a38d309aaa4
parent53089c6e91f6152bc43776587e82a0bbeb574fe0 (diff)
parentf01a337950bdcd6905d12b2335ba4d8773f6b8e5 (diff)
downloadcpython-f28fbabc7fa7cf1c4880ce39b507f600def35439.zip
cpython-f28fbabc7fa7cf1c4880ce39b507f600def35439.tar.gz
cpython-f28fbabc7fa7cf1c4880ce39b507f600def35439.tar.bz2
Fix issue # 15033 - Return the proper exitcode for failure when modules are invoked using -m switch. Patch contributed by Jeff Knupp
-rw-r--r--Lib/test/test_cmd_line_script.py15
-rw-r--r--Misc/NEWS3
-rw-r--r--Modules/main.c2
3 files changed, 19 insertions, 1 deletions
diff --git a/Lib/test/test_cmd_line_script.py b/Lib/test/test_cmd_line_script.py
index 83aa163..d8bc263 100644
--- a/Lib/test/test_cmd_line_script.py
+++ b/Lib/test/test_cmd_line_script.py
@@ -287,6 +287,21 @@ class CmdLineTest(unittest.TestCase):
self._check_output(script_name, rc, out,
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_pep_409_verbiage(self):
# Make sure PEP 409 syntax properly suppresses
# the context of an exception
diff --git a/Misc/NEWS b/Misc/NEWS
index cba8c41..ab02a97 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@ What's New in Python 3.3.0 Beta 2?
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 #15229: An OSError subclass whose __init__ doesn't call back
OSError.__init__ could produce incomplete instances, leading to crashes
when calling str() on them.
diff --git a/Modules/main.c b/Modules/main.c
index e262552..64bac6e 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -660,7 +660,7 @@ Py_Main(int argc, wchar_t **argv)
sts = run_command(command, &cf);
free(command);
} else if (module) {
- sts = RunModule(module, 1);
+ sts = (RunModule(module, 1) != 0);
}
else {