[lit] Fail testing if a googletest executable crashes during test discovery
authorGreg Parker <gparker@apple.com>
Fri, 2 Sep 2016 02:44:07 +0000 (02:44 +0000)
committerGreg Parker <gparker@apple.com>
Fri, 2 Sep 2016 02:44:07 +0000 (02:44 +0000)
googletest formatted tests are discovered by running the test executable.
Previously testing would silently succeed if the test executable crashed
during the discovery process. Now testing fails with "error: unable to
discover google-tests ..." if the test executable exits with a non-zero status.

llvm-svn: 280455

llvm/utils/lit/lit/formats/googletest.py
llvm/utils/lit/lit/util.py

index f0250a3..8796eb5 100644 (file)
@@ -35,7 +35,8 @@ class GoogleTest(TestFormat):
               lines = lines.replace('\r', '')
             lines = lines.split('\n')
         except:
-            litConfig.error("unable to discover google-tests in %r" % path)
+            litConfig.error("unable to discover google-tests in %r: %s"
+                            % (path, sys.exc_info()[1]))
             raise StopIteration
 
         nested_tests = []
index 40a5771..288931a 100644 (file)
@@ -65,10 +65,13 @@ def mkdir_p(path):
 
 def capture(args, env=None):
     """capture(command) - Run the given command (or argv list) in a shell and
-    return the standard output."""
+    return the standard output. Raises a CalledProcessError if the command
+    exits with a non-zero status."""
     p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE,
                          env=env)
     out,_ = p.communicate()
+    if p.returncode != 0:
+        raise subprocess.CalledProcessError(cmd=args, returncode=p.returncode)
     return convert_string(out)
 
 def which(command, paths = None):