[libcxx-commits] [pstl] r356921 - [pstl] Make sure unit tests exit with a non-zero error code when they fail

Louis Dionne via libcxx-commits libcxx-commits at lists.llvm.org
Mon Mar 25 09:44:08 PDT 2019


Author: ldionne
Date: Mon Mar 25 09:44:08 2019
New Revision: 356921

URL: http://llvm.org/viewvc/llvm-project?rev=356921&view=rev
Log:
[pstl] Make sure unit tests exit with a non-zero error code when they fail

The previous test system would only print errors to stderr, however CMake
(and lit) detect failure via the program returning a non-zero error code.
So all the tests would always pretend they passed.

Modified:
    pstl/trunk/test/utils.h

Modified: pstl/trunk/test/utils.h
URL: http://llvm.org/viewvc/llvm-project/pstl/trunk/test/utils.h?rev=356921&r1=356920&r2=356921&view=diff
==============================================================================
--- pstl/trunk/test/utils.h (original)
+++ pstl/trunk/test/utils.h Mon Mar 25 09:44:08 2019
@@ -10,14 +10,15 @@
 // File contains common utilities that tests rely on
 
 // Do not #include <algorithm>, because if we do we will not detect accidental dependencies.
-#include <sstream>
-#include <iostream>
+#include <atomic>
+#include <cstdint>
+#include <cstdlib>
 #include <cstring>
+#include <iostream>
 #include <iterator>
-#include <vector>
-#include <atomic>
 #include <memory>
-#include <cstdint>
+#include <sstream>
+#include <vector>
 
 #include "pstl_test_config.h"
 
@@ -38,32 +39,30 @@ template <typename T>
 class Sequence;
 
 // Handy macros for error reporting
-#define EXPECT_TRUE(condition, message) TestUtils::expect<true>(condition, __FILE__, __LINE__, message)
-#define EXPECT_FALSE(condition, message) TestUtils::expect<false>(condition, __FILE__, __LINE__, message)
+#define EXPECT_TRUE(condition, message) ::TestUtils::expect(true, condition, __FILE__, __LINE__, message)
+#define EXPECT_FALSE(condition, message) ::TestUtils::expect(false, condition, __FILE__, __LINE__, message)
 
 // Check that expected and actual are equal and have the same type.
-#define EXPECT_EQ(expected, actual, message) TestUtils::expect_equal(expected, actual, __FILE__, __LINE__, message)
+#define EXPECT_EQ(expected, actual, message) ::TestUtils::expect_equal(expected, actual, __FILE__, __LINE__, message)
 
 // Check that sequences started with expected and actual and have had size n are equal and have the same type.
 #define EXPECT_EQ_N(expected, actual, n, message)                                                                      \
-    TestUtils::expect_equal(expected, actual, n, __FILE__, __LINE__, message)
+    ::TestUtils::expect_equal(expected, actual, n, __FILE__, __LINE__, message)
 
 // Issue error message from outstr, adding a newline.
 // Real purpose of this routine is to have a place to hang a breakpoint.
-static void
+inline void
 issue_error_message(std::stringstream& outstr)
 {
     outstr << std::endl;
     std::cerr << outstr.str();
+    std::exit(EXIT_FAILURE);
 }
 
-template <bool B>
-void
-expect(bool condition, const char* file, int32_t line, const char* message)
+inline void
+expect(bool expected, bool condition, const char* file, int32_t line, const char* message)
 {
-    // Templating this function is somewhat silly, but avoids the need to declare it static
-    // or have a separate translation unit.
-    if (condition != B)
+    if (condition != expected)
     {
         std::stringstream outstr;
         outstr << "error at " << file << ":" << line << " - " << message;




More information about the libcxx-commits mailing list