89 lines
1.7 KiB
Plaintext
89 lines
1.7 KiB
Plaintext
@pragma entry main
|
|
@pragma implicit off
|
|
|
|
@include "tap.inc";
|
|
|
|
@global g_seen, g_count;
|
|
|
|
function on_sig (sig)
|
|
{
|
|
g_seen = sig;
|
|
g_count++;
|
|
}
|
|
|
|
function main ()
|
|
{
|
|
@local r;
|
|
@local badpid;
|
|
|
|
g_seen = 0;
|
|
g_count = 0;
|
|
|
|
r = sys::signal(sys::SIGINT, on_sig);
|
|
tap_ensure (r, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
r = sys::raise(sys::SIGINT);
|
|
tap_ensure (r, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure (g_count, 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure (g_seen, sys::SIGINT, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
r = sys::raise(sys::SIGINT);
|
|
tap_ensure (r, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure (g_count, 2, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
g_count = 0;
|
|
g_seen = 0;
|
|
r = sys::kill(sys::getpid(), sys::SIGINT);
|
|
if (r < 0)
|
|
{
|
|
tap_skip ("sys::kill not supported");
|
|
}
|
|
else
|
|
{
|
|
@local i;
|
|
i = 0;
|
|
while (g_count < 1 && i < 50)
|
|
{
|
|
sys::sleep(0.01);
|
|
i = i + 1;
|
|
}
|
|
tap_ensure (g_count, 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure (g_seen, sys::SIGINT, @SCRIPTNAME, @SCRIPTLINE);
|
|
}
|
|
|
|
r = sys::signal(sys::SIGTERM, on_sig);
|
|
tap_ensure (r, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
g_count = 0;
|
|
g_seen = 0;
|
|
r = sys::kill(sys::getpid(), sys::SIGTERM);
|
|
if (r < 0)
|
|
{
|
|
tap_skip ("sys::kill not supported");
|
|
}
|
|
else
|
|
{
|
|
@local j;
|
|
j = 0;
|
|
while (g_count < 1 && j < 50)
|
|
{
|
|
sys::sleep(0.01);
|
|
j = j + 1;
|
|
}
|
|
tap_ensure (g_count, 1, @SCRIPTNAME, @SCRIPTLINE);
|
|
tap_ensure (g_seen, sys::SIGTERM, @SCRIPTNAME, @SCRIPTLINE);
|
|
}
|
|
|
|
r = sys::signal(sys::SIGINT, @nil);
|
|
tap_ensure (r, 0, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
r = sys::raise(sys::SIGINT);
|
|
tap_ensure (r, sys::RC_EINVAL, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
badpid = sys::getpid() + 999990; ## hopefully, this doesn't exist during the test run
|
|
r = sys::kill(badpid, sys::SIGINT);
|
|
tap_ensure (r, sys::RC_ESYSERR, @SCRIPTNAME, @SCRIPTLINE);
|
|
|
|
tap_end ();
|
|
}
|