[libc][NFC] Add a death test API adaptation macro
authorMichael Jones <michaelrj@google.com>
Fri, 29 Jan 2021 00:11:35 +0000 (00:11 +0000)
committerMichael Jones <michaelrj@google.com>
Mon, 1 Feb 2021 19:19:04 +0000 (19:19 +0000)
Fuchsia's zxtest has a slightly different death test definition, and
this macro makes our death test API work on Fuchsia.

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D95648

libc/test/src/assert/assert_test.cpp
libc/test/src/fenv/enabled_exceptions_test.cpp
libc/test/src/signal/raise_test.cpp
libc/test/src/signal/sigaction_test.cpp
libc/test/src/signal/sigdelset_test.cpp
libc/test/src/signal/sigprocmask_test.cpp
libc/test/src/stdlib/abort_test.cpp
libc/utils/UnitTest/FuchsiaTest.h
libc/utils/UnitTest/LibcTest.h

index b22f498..7760476 100644 (file)
@@ -21,7 +21,7 @@ TEST(LlvmLibcAssert, Enabled) {
         close(2);
         assert(0);
       },
-      -1);
+      WITH_SIGNAL(-1));
 }
 
 #define NDEBUG
index e9c2ae8..8b8649d 100644 (file)
@@ -51,6 +51,6 @@ TEST(LlvmLibcExceptionStatusTest, RaiseAndCrash) {
           // exception.
           __llvm_libc::feraiseexcept(e);
         },
-        SIGFPE);
+        WITH_SIGNAL(SIGFPE));
   }
 }
index 4ec1ee2..282cedc 100644 (file)
@@ -18,5 +18,5 @@ TEST(LlvmLibcSignalTest, Raise) {
 
   // SIGKILL is chosen because other fatal signals could be caught by sanitizers
   // for example and incorrectly report test failure.
-  EXPECT_DEATH([] { __llvm_libc::raise(SIGKILL); }, SIGKILL);
+  EXPECT_DEATH([] { __llvm_libc::raise(SIGKILL); }, WITH_SIGNAL(SIGKILL));
 }
index dab2295..4baf093 100644 (file)
@@ -53,7 +53,7 @@ TEST(LlvmLibcSigaction, CustomAction) {
   action.sa_handler = SIG_DFL;
   EXPECT_THAT(__llvm_libc::sigaction(SIGUSR1, &action, nullptr), Succeeds());
 
-  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, SIGUSR1);
+  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, WITH_SIGNAL(SIGUSR1));
 }
 
 TEST(LlvmLibcSigaction, Ignore) {
index b490a08..c4947a3 100644 (file)
@@ -32,5 +32,5 @@ TEST(LlvmLibcSigdelset, UnblockOne) {
   EXPECT_THAT(__llvm_libc::sigfillset(&set), Succeeds());
   EXPECT_THAT(__llvm_libc::sigdelset(&set, SIGUSR1), Succeeds());
   EXPECT_THAT(__llvm_libc::sigprocmask(SIG_SETMASK, &set, nullptr), Succeeds());
-  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, SIGUSR1);
+  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, WITH_SIGNAL(SIGUSR1));
 }
index 2b3a8f7..e646362 100644 (file)
@@ -53,7 +53,7 @@ TEST_F(LlvmLibcSignalTest, BlockUnblock) {
   sigset_t sigset;
   EXPECT_EQ(__llvm_libc::sigemptyset(&sigset), 0);
   EXPECT_EQ(__llvm_libc::sigprocmask(SIG_SETMASK, &sigset, nullptr), 0);
-  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, SIGUSR1);
+  EXPECT_DEATH([] { __llvm_libc::raise(SIGUSR1); }, WITH_SIGNAL(SIGUSR1));
   EXPECT_EQ(__llvm_libc::sigaddset(&sigset, SIGUSR1), 0);
   EXPECT_EQ(__llvm_libc::sigprocmask(SIG_SETMASK, &sigset, nullptr), 0);
   EXPECT_EXITS([] { __llvm_libc::raise(SIGUSR1); }, 0);
index 8762f2f..759fb02 100644 (file)
@@ -14,5 +14,5 @@
 TEST(LlvmLibcStdlib, abort) {
   // -1 matches against any signal, which is necessary for now until
   // __llvm_libc::abort() unblocks SIGABRT.
-  EXPECT_DEATH([] { __llvm_libc::abort(); }, -1);
+  EXPECT_DEATH([] { __llvm_libc::abort(); }, WITH_SIGNAL(-1));
 }
index b7b5b48..4b3d535 100644 (file)
@@ -11,4 +11,6 @@
 
 #include <zxtest/zxtest.h>
 
+#define WITH_SIGNAL(X) #X
+
 #endif // LLVM_LIBC_UTILS_UNITTEST_FUCHSIATEST_H
index adf86da..a0ecf5a 100644 (file)
@@ -273,4 +273,6 @@ constexpr bool same_prefix(char const *lhs, char const *rhs, int const len) {
       return;                                                                  \
   } while (0)
 
+#define WITH_SIGNAL(X) X
+
 #endif // LLVM_LIBC_UTILS_UNITTEST_LIBCTEST_H