Files
hawk/t/h-010.hawk
hyung-hwan 6e05998bc9
continuous-integration/drone/push Build is passing
added sys::uname()
2026-05-24 14:57:16 +09:00

102 lines
2.5 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, u;
@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);
u = sys::uname();
tap_ensure (hawk::type(u), hawk::VAL_MAP, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (hawk::typename(u.sysname), "str", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (hawk::typename(u.nodename), "str", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (hawk::typename(u.release), "str", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (hawk::typename(u.version), "str", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (hawk::typename(u.machine), "str", @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (length(u.sysname) > 0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (length(u.nodename) > 0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (length(u.release) > 0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (length(u.version) > 0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_ensure (length(u.machine) > 0, 1, @SCRIPTNAME, @SCRIPTLINE);
tap_end ();
}