diff options
| author | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-12-03 20:50:11 +0100 | 
|---|---|---|
| committer | Jörg Frings-Fürst <debian@jff-webhosting.net> | 2017-12-03 20:50:11 +0100 | 
| commit | 4cf52fc0bc3b80c0ef6c58c5db4413ebdafe661c (patch) | |
| tree | 676b26b024117cf656080a011e3d17b8fb6889af /tests/test-raise.c | |
| parent | 1ecbfbb92248e67b564f5b144c4671ccaa86ee2f (diff) | |
| parent | 44ff3127b1e57b703c2a73a24f7ab38e4aad8ae4 (diff) | |
Merge branch 'release/0.9.8-1'0.9.8-1
Diffstat (limited to 'tests/test-raise.c')
| -rw-r--r-- | tests/test-raise.c | 50 | 
1 files changed, 50 insertions, 0 deletions
| diff --git a/tests/test-raise.c b/tests/test-raise.c new file mode 100644 index 00000000..45d05b9e --- /dev/null +++ b/tests/test-raise.c @@ -0,0 +1,50 @@ +/* Test raising a signal. +   Copyright (C) 2011-2017 Free Software Foundation, Inc. + +   This program is free software: you can redistribute it and/or modify +   it under the terms of the GNU General Public License as published by +   the Free Software Foundation; either version 3 of the License, or +   (at your option) any later version. + +   This program is distributed in the hope that it will be useful, +   but WITHOUT ANY WARRANTY; without even the implied warranty of +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the +   GNU General Public License for more details. + +   You should have received a copy of the GNU General Public License +   along with this program.  If not, see <https://www.gnu.org/licenses/>.  */ + +#include <config.h> + +#include <signal.h> + +#include "signature.h" +SIGNATURE_CHECK (raise, int, (int)); + +#include <stdlib.h> + +#include "macros.h" + +/* It is safe to use _Noreturn here: exit() never returns, and GCC knows that +   exit() is a non-returning function, even on platforms where its declaration +   in <stdlib.h> does not have the 'noreturn' attribute.  */ +static _Noreturn void +handler (int sig) +{ +  exit (0); +} + +int +main (void) +{ +  /* Test behaviour for invalid argument.  */ +  ASSERT (raise (-1) != 0); + +  /* Test behaviour for SIGINT.  */ +  ASSERT (signal (SIGINT, handler) != SIG_ERR); + +  raise (SIGINT); + +  /* We should not get here, because the handler takes away the control.  */ +  exit (1); +} | 
