[llvm] r234242 - [lit] Fix running gtest type-parameterized tests on Windows

Reid Kleckner reid at kleckner.net
Mon Apr 6 14:49:55 PDT 2015


Author: rnk
Date: Mon Apr  6 16:49:55 2015
New Revision: 234242

URL: http://llvm.org/viewvc/llvm-project?rev=234242&view=rev
Log:
[lit] Fix running gtest type-parameterized tests on Windows

The '/' character in the test name of a type-parameterized test is not a
path separator, and should not be '\' on Windows. We were passing a test
name to --gtest_filter which found no tests, so the exit code was zero,
indicating a passed test.

This bug has been here since r84387 in 2009, when Jeff Yasskin added the
original lit support for type-paratermized tests. Somewhere along the
line some of the ValueMapTests started failing, but we can fix those
separately.

Modified:
    llvm/trunk/unittests/IR/ValueMapTest.cpp
    llvm/trunk/utils/lit/lit/formats/googletest.py

Modified: llvm/trunk/unittests/IR/ValueMapTest.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/IR/ValueMapTest.cpp?rev=234242&r1=234241&r2=234242&view=diff
==============================================================================
--- llvm/trunk/unittests/IR/ValueMapTest.cpp (original)
+++ llvm/trunk/unittests/IR/ValueMapTest.cpp Mon Apr  6 16:49:55 2015
@@ -194,7 +194,8 @@ struct LockMutex : ValueMapConfig<KeyT,
   }
   static MutexT *getMutex(const ExtraData &Data) { return Data.M; }
 };
-#if LLVM_ENABLE_THREADS
+// FIXME: These tests started failing on Windows.
+#if LLVM_ENABLE_THREADS && !defined(LLVM_ON_WIN32)
 TYPED_TEST(ValueMapTest, LocksMutex) {
   sys::Mutex M(false);  // Not recursive.
   bool CalledRAUW = false, CalledDeleted = false;

Modified: llvm/trunk/utils/lit/lit/formats/googletest.py
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/lit/lit/formats/googletest.py?rev=234242&r1=234241&r2=234242&view=diff
==============================================================================
--- llvm/trunk/utils/lit/lit/formats/googletest.py (original)
+++ llvm/trunk/utils/lit/lit/formats/googletest.py Mon Apr  6 16:49:55 2015
@@ -95,7 +95,7 @@ class GoogleTest(TestFormat):
             # Handle GTest parametrized and typed tests, whose name includes
             # some '/'s.
             testPath, namePrefix = os.path.split(testPath)
-            testName = os.path.join(namePrefix, testName)
+            testName = namePrefix + '/' + testName
 
         cmd = [testPath, '--gtest_filter=' + testName]
         if litConfig.useValgrind:
@@ -107,7 +107,14 @@ class GoogleTest(TestFormat):
         out, err, exitCode = lit.util.executeCommand(
             cmd, env=test.config.environment)
 
-        if not exitCode:
-            return lit.Test.PASS,''
+        if exitCode:
+            return lit.Test.FAIL, out + err
+
+        passing_test_line = '[  PASSED  ] 1 test.'
+        if passing_test_line not in out:
+            msg = ('Unable to find %r in gtest output:\n\n%s%s' %
+                   (passing_test_line, out, err))
+            return lit.Test.UNRESOLVED, msg
+
+        return lit.Test.PASS,''
 
-        return lit.Test.FAIL, out + err





More information about the llvm-commits mailing list