aboutsummaryrefslogtreecommitdiffstats
path: root/tests/signal_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/signal_test.cpp')
-rw-r--r--tests/signal_test.cpp22
1 files changed, 13 insertions, 9 deletions
diff --git a/tests/signal_test.cpp b/tests/signal_test.cpp
index 3070747c1..7705e2c49 100644
--- a/tests/signal_test.cpp
+++ b/tests/signal_test.cpp
@@ -170,8 +170,6 @@ static void SigSuspendTestHelper(int) {
}
TEST(signal, sigsuspend_sigpending) {
- ScopedSignalHandler ssh(SIGALRM, SigSuspendTestHelper);
-
// Block SIGALRM.
sigset_t just_SIGALRM;
sigemptyset(&just_SIGALRM);
@@ -179,6 +177,8 @@ TEST(signal, sigsuspend_sigpending) {
sigset_t original_set;
ASSERT_EQ(0, sigprocmask(SIG_BLOCK, &just_SIGALRM, &original_set));
+ ScopedSignalHandler ssh(SIGALRM, SigSuspendTestHelper);
+
// There should be no pending signals.
sigset_t pending;
sigemptyset(&pending);
@@ -208,7 +208,7 @@ TEST(signal, sigsuspend_sigpending) {
ASSERT_EQ(1, gSigSuspendTestHelperCallCount);
// Restore the original set.
- assert(0 == sigprocmask(SIG_SETMASK, &original_set, NULL));
+ ASSERT_EQ(0, sigprocmask(SIG_SETMASK, &original_set, NULL));
}
static void EmptySignalHandler(int) {}
@@ -216,14 +216,15 @@ static void EmptySignalAction(int, siginfo_t*, void*) {}
TEST(signal, sigaction) {
// See what's currently set for SIGALRM.
- struct sigaction sa;
- memset(&sa, 0, sizeof(sa));
- ASSERT_EQ(0, sigaction(SIGALRM, NULL, &sa));
- ASSERT_TRUE(sa.sa_handler == NULL);
- ASSERT_TRUE(sa.sa_sigaction == NULL);
- ASSERT_TRUE(sa.sa_flags == 0);
+ struct sigaction original_sa;
+ memset(&original_sa, 0, sizeof(original_sa));
+ ASSERT_EQ(0, sigaction(SIGALRM, NULL, &original_sa));
+ ASSERT_TRUE(original_sa.sa_handler == NULL);
+ ASSERT_TRUE(original_sa.sa_sigaction == NULL);
+ ASSERT_TRUE(original_sa.sa_flags == 0);
// Set a traditional sa_handler signal handler.
+ struct sigaction sa;
memset(&sa, 0, sizeof(sa));
sigaddset(&sa.sa_mask, SIGALRM);
sa.sa_flags = SA_ONSTACK;
@@ -250,4 +251,7 @@ TEST(signal, sigaction) {
ASSERT_TRUE(sa.sa_sigaction == EmptySignalAction);
ASSERT_TRUE((void*) sa.sa_sigaction == (void*) sa.sa_handler);
ASSERT_TRUE(sa.sa_flags == (SA_ONSTACK | SA_SIGINFO));
+
+ // Put everything back how it was.
+ ASSERT_EQ(0, sigaction(SIGALRM, &original_sa, NULL));
}