diff options
author | William Deegan <bill@baddogconsulting.com> | 2019-06-15 21:43:56 (GMT) |
---|---|---|
committer | William Deegan <bill@baddogconsulting.com> | 2019-06-15 21:43:56 (GMT) |
commit | 52d388e565873e1f532f9c36617f97aa58d78622 (patch) | |
tree | fa7e863fca8d273366ec1ba0cfbd64fbca763797 /src | |
parent | 961181aecd44bee3fb3e092e5dacaecb73bddffc (diff) | |
parent | 9f7705302f9cedb2afb4f071c8f84db59ebfea25 (diff) | |
download | SCons-52d388e565873e1f532f9c36617f97aa58d78622.zip SCons-52d388e565873e1f532f9c36617f97aa58d78622.tar.gz SCons-52d388e565873e1f532f9c36617f97aa58d78622.tar.bz2 |
Merge branch 'master' of github.com:SCons/scons
Diffstat (limited to 'src')
-rwxr-xr-x | src/CHANGES.txt | 1 | ||||
-rw-r--r-- | src/engine/SCons/Action.py | 7 | ||||
-rw-r--r-- | src/engine/SCons/ActionTests.py | 17 |
3 files changed, 22 insertions, 3 deletions
diff --git a/src/CHANGES.txt b/src/CHANGES.txt index d09f01d..846d860 100755 --- a/src/CHANGES.txt +++ b/src/CHANGES.txt @@ -69,6 +69,7 @@ RELEASE VERSION/DATE TO BE FILLED IN LATER From Mathew Robinson: - Update cache debug output to include cache hit rate. + - No longer unintentionally hide exceptions in Action.py RELEASE 3.0.5 - Mon, 26 Mar 2019 15:04:42 -0700 diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py index d1ab362..3ec8a4c 100644 --- a/src/engine/SCons/Action.py +++ b/src/engine/SCons/Action.py @@ -808,7 +808,7 @@ def _subproc(scons_env, cmd, error = 'ignore', **kw): kw['env'] = new_env try: - pobj = subprocess.Popen(cmd, **kw) + pobj = subprocess.Popen(cmd, **kw) except EnvironmentError as e: if error == 'raise': raise # return a dummy Popen instance that only returns error @@ -826,9 +826,10 @@ def _subproc(scons_env, cmd, error = 'ignore', **kw): finally: # clean up open file handles stored in parent's kw for k, v in kw.items(): - if hasattr(v, 'close'): + if inspect.ismethod(getattr(v, 'close', None)): v.close() - return pobj + + return pobj class CommandAction(_ActionAction): diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py index 34fea45..3054368 100644 --- a/src/engine/SCons/ActionTests.py +++ b/src/engine/SCons/ActionTests.py @@ -44,6 +44,7 @@ import re import sys import types import unittest +import subprocess import SCons.Action import SCons.Environment @@ -2273,6 +2274,22 @@ class ObjectContentsTestCase(unittest.TestCase): assert c == expected[sys.version_info[:2]], "Got\n" + repr(c) + "\nExpected \n" + "\n" + repr(expected[ sys.version_info[:2]]) + def test_uncaught_exception_bubbles(self): + """Test that _subproc bubbles uncaught exceptions""" + try: + pobj = SCons.Action._subproc(Environment(), + None, + stdin='devnull', + stderr='devnull', + stdout=subprocess.PIPE) + pobj.wait() + except EnvironmentError: + pass + except Exception: + # pass the test + return + + raise Exception("expected a non-EnvironmentError exception") if __name__ == "__main__": unittest.main() |