Files
hawk/t/h-010.hawk
hyung-hwan 5ec23566db
All checks were successful
continuous-integration/drone/push Build is passing
implemented the sigset handler in go files
2026-01-12 22:08:59 +09:00

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 ();
}