add tests to makefile and run_tests
This commit is contained in:
@@ -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 \
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#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;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
#include <signal.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#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;
|
||||
}
|
||||
@@ -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<N_SIGNALS; i++){
|
||||
if (i == SIGKILL || i == SIGSTOP){
|
||||
for (unsigned int i = 0; i < sizeof(signals_list)/sizeof(signals_list[0]); i++){
|
||||
int sig = signals_list[i].signal;
|
||||
if (sig == SIGKILL || sig == SIGSTOP){
|
||||
continue;
|
||||
}
|
||||
signal_test3(i);
|
||||
signal_test3(sig);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -14,34 +14,32 @@ void sig_handler(int signo)
|
||||
|
||||
int signal_test2(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);
|
||||
|
||||
status = signal(signum, SIG_IGN);
|
||||
ERROR_IF(signal, status, != sig_handler);
|
||||
|
||||
if (signal(signum,SIG_IGN) != sig_handler) {
|
||||
perror("Unexpected error while using signal()");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
// same issue as handle_return
|
||||
|
||||
raise(signum);
|
||||
|
||||
if (handler_called == 1) {
|
||||
printf("Test FAILED: handler was called even though ingore was expected\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
printf("test %d passed\n", signum);
|
||||
|
||||
ERROR_IF(raise, handler_called, == 1);
|
||||
handler_called = 0;
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
int main(){
|
||||
for (int i=1; i<N_SIGNALS; i++){
|
||||
if (i == SIGKILL || i == SIGSTOP){
|
||||
for (unsigned int i = 0; i < sizeof(signals_list)/sizeof(signals_list[0]); i++){
|
||||
int sig = signals_list[i].signal;
|
||||
if (sig == SIGKILL || sig == SIGSTOP){
|
||||
continue;
|
||||
}
|
||||
signal_test2(i);
|
||||
signal_test2(sig);
|
||||
}
|
||||
return EXIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#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;
|
||||
}
|
||||
@@ -2,6 +2,9 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
#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;
|
||||
}
|
||||
Reference in New Issue
Block a user