diff --git a/tests/Makefile b/tests/Makefile index 0ec8b764e9..3c5beb00ce 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -195,6 +195,12 @@ NAMES=\ signals/raise-compliance \ signals/sigismember-invalid \ signals/sigismember-valid \ + signals/signal-handle_return \ + signals/signal-handler \ + signals/signal-handler2 \ + signals/signal-ignore \ + signals/signal-invalid \ + signals/signal-uncatchable \ signals/sigprocmask-6 \ signals/sigprocmask-7 \ signals/sigprocmask-8 \ diff --git a/tests/run_tests.sh b/tests/run_tests.sh index 8df7b62e81..1af7468a9c 100755 --- a/tests/run_tests.sh +++ b/tests/run_tests.sh @@ -180,6 +180,12 @@ STATUS_NAMES=(\ signals/raise-compliance \ signals/sigismember-invalid \ signals/sigismember-valid \ + signals/signal-handle_return \ + signals/signal-handler \ + signals/signal-handler2 \ + signals/signal-ignore \ + signals/signal-invalid \ + signals/signal-uncatchable \ signals/sigprocmask-6 \ signals/sigprocmask-7 \ signals/sigprocmask-8 \ diff --git a/tests/signals/signal-handle_return.c b/tests/signals/signal-handle_return.c index d52ac6c750..933f992078 100644 --- a/tests/signals/signal-handle_return.c +++ b/tests/signals/signal-handle_return.c @@ -1,6 +1,7 @@ #include #include #include +#include "../test_helpers.h" void SIGUSR1_handler(int signo) { @@ -16,20 +17,19 @@ void SIGUSR2_handler(int signo) int main() { - if (signal(SIGUSR1, SIGUSR1_handler) == SIG_ERR) { - perror("Unexpected error while using signal()"); - exit(EXIT_FAILURE); - } + void (*status) (int); + status = signal(SIGUSR1, SIGUSR1_handler); + ERROR_IF(signal, status, == SIG_ERR); - if (signal(SIGUSR2, SIGUSR2_handler) == SIG_ERR) { - perror("Unexpected error while using signal()"); - exit(EXIT_FAILURE); - } + status = signal(SIGUSR2, SIGUSR2_handler); + ERROR_IF(signal, status, == SIG_ERR); + + status = signal(SIGUSR1,SIG_IGN); + // printf("status is %d\n", status); + // printf("SIGUSR1_handler is %d\n", SIGUSR1_handler); + ERROR_IF(signal, status, != SIGUSR1_handler); + + //this seems to be a weird comparison error - if (signal(SIGUSR1,SIG_IGN) != SIGUSR1_handler) { - printf("signal did not return the last handler that was associated with SIGUSR1\n"); - exit(EXIT_FAILURE); - } - printf("test passed\n"); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/tests/signals/signal-handler.c b/tests/signals/signal-handler.c index 0cd2b78145..f6eba8e168 100644 --- a/tests/signals/signal-handler.c +++ b/tests/signals/signal-handler.c @@ -1,6 +1,7 @@ #include #include #include +#include "../test_helpers.h" int handler_called = 0; @@ -13,23 +14,20 @@ void sig_handler(int signo) int main() { - if (signal(SIGCHLD, sig_handler) == SIG_ERR) { - perror("Unexpected error while using signal()"); - exit(1); - } + void (*status) (int); + status = signal(SIGCHLD, sig_handler); + ERROR_IF(signal, status, == SIG_ERR); - if (signal(SIGCHLD,SIG_DFL) != sig_handler) { - perror("Unexpected error while using signal()"); - exit(1); - } + status = signal(SIGCHLD,SIG_DFL); + ERROR_IF(signal, status, != sig_handler); + //same comparison error from handle_return + raise(SIGCHLD); if (handler_called == 1) { - printf("Test FAILED: handler was called even though default was expected\n"); - exit(1); - } - printf("test passed \n"); + return EXIT_FAILURE; + } handler_called = 0; - return 0; + return EXIT_SUCCESS; } \ No newline at end of file diff --git a/tests/signals/signal-handler2.c b/tests/signals/signal-handler2.c index 29b856c952..7cc8394bdd 100644 --- a/tests/signals/signal-handler2.c +++ b/tests/signals/signal-handler2.c @@ -8,35 +8,30 @@ int handler_called = 0; void sig_handler(int signo) { - printf("%d called. Inside handler\n", signo); + (void) signo; + // printf("%d called. Inside handler\n", signo); handler_called = 1; } int signal_test3(int signum) { - if (signal(signum, sig_handler) == SIG_ERR) { - perror("Unexpected error while using signal()"); - exit(EXIT_FAILURE); - } - + void (*status) (int); + status = signal(signum, sig_handler); + ERROR_IF(signal, status, == SIG_ERR); + raise(signum); - if (handler_called != 1) { - printf("Test FAILED: handler wasn't called even though it should have been\n"); - exit(1); - } - printf("test %d passed\n", signum); + ERROR_IF(raise, handler_called, != 1); return EXIT_SUCCESS; } int main(){ - for (int i=1; i #include #include +#include "../test_helpers.h" + +// test to make sure sending an invalid signal sets errno void sig_handler(int signo) { @@ -13,15 +16,10 @@ int main() { errno = -1; - if (signal(-1, sig_handler) != SIG_ERR) { - printf("Test FAILED: signal() didn't return SIG_ERR even though invalid signal number was passed to it\n"); - exit(EXIT_FAILURE); - } + void (*status) (int); + status = signal(-1, sig_handler); + ERROR_IF(signal, status, != SIG_ERR); + ERROR_IF(signal, errno, <= 0); - if (errno <= 0) { - printf("Test FAILED: errno wasn't set to a positive number even though invalid signal number was passed to the signal() function\n"); - exit(EXIT_FAILURE); - } - printf("test passed\n"); return EXIT_SUCCESS; } \ No newline at end of file diff --git a/tests/signals/signal-uncatchable.c b/tests/signals/signal-uncatchable.c index 5ef87c381e..1bf85db82c 100644 --- a/tests/signals/signal-uncatchable.c +++ b/tests/signals/signal-uncatchable.c @@ -2,6 +2,9 @@ #include #include #include +#include "../test_helpers.h" + +//make sure you can't catch uncatchable signals void sig_handler(int signo) { @@ -12,16 +15,11 @@ void sig_handler(int signo) int main() { errno = -1; + void (*status) (int); + status = signal(SIGKILL, sig_handler); + ERROR_IF(signal, status, != SIG_ERR); - if (signal(SIGKILL, sig_handler) != SIG_ERR) { - printf("Test FAILED: signal() didn't return SIG_ERR even though a non-catchable signal was passed to it\n"); - exit(EXIT_FAILURE); - } + ERROR_IF(signal, errno, <= 0); - if (errno <= 0) { - printf("Test FAILED: errno wasn't set to a positive number even though a non-catchable signal was passed to the signal() function\n"); - exit(EXIT_FAILURE); - } - printf("test passed\n"); return EXIT_SUCCESS; } \ No newline at end of file