diff options
author | Nat Goodspeed <nat@lindenlab.com> | 2014-12-17 11:10:33 -0500 |
---|---|---|
committer | Nat Goodspeed <nat@lindenlab.com> | 2014-12-17 11:10:33 -0500 |
commit | 0d71baba74e2009e88471e2c44e78863b34a5817 (patch) | |
tree | dd955a3d68261c2611b0a17c1b377873bd36ef9e | |
parent | 3b7d3cb1ea8c6f5f51d727732bbff8a6d89f3d33 (diff) |
Produce error message, not traceback, when test program doesn't build.
A traceback from a Python script always makes people think there's a bug in
your script. Even when a test program fails to build, CMake often (always?)
tries to run it anyway, via our run_build_test.py script. For that case,
produce a straightforward error message -- rather than an OSError traceback
that doesn't even mention the program name!
-rwxr-xr-x | indra/cmake/run_build_test.py | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/indra/cmake/run_build_test.py b/indra/cmake/run_build_test.py index a2ef61c8fd..582185e5ab 100755 --- a/indra/cmake/run_build_test.py +++ b/indra/cmake/run_build_test.py @@ -46,6 +46,7 @@ $/LicenseInfo$ import os import sys +import errno import signal import subprocess @@ -112,7 +113,23 @@ def main(command, libpath=[], vars={}): print "Running: %s" % " ".join(command) # Make sure we see all relevant output *before* child-process output. sys.stdout.flush() - return subprocess.call(command) + try: + return subprocess.call(command) + except OSError as err: + # If the caller is trying to execute a test program that doesn't + # exist, we want to produce a reasonable error message rather than a + # traceback. This happens when the build is halted by errors, but + # CMake tries to proceed with testing anyway <eyeroll/>. However, do + # NOT attempt to handle any error but "doesn't exist." + if err.errno != errno.ENOENT: + raise + # In practice, the pathnames into CMake's build tree are so long as to + # obscure the name of the test program. Just print its basename. + print "No such program %s; check for preceding build errors" % \ + os.path.basename(command[0]) + # What rc should we simulate for missing executable? Windows produces + # 9009. + return 9009 # swiped from vita, sigh, seems like a Bad Idea to introduce dependency def translate_rc(rc): |