#include #include "csuite.h" #include "ctest.h" #include "../daemond.h" void test_cmd(Test *pt) { int ret; pid_t pid; char *const ppargv[] = {"./spawn.test.1.sh", NULL }; /* Execute an existing command */ assert(system("test -x spawn.test.1.sh") == 0); assert(system("test -e spawn.test.1.out") != 0); ct_test(pt, (ret = spawn_daemon("./spawn.test.1.sh", ppargv, &pid)) == 0); ct_test(pt, system("[ \"`cat spawn.test.1.out`\" = \"spawn.test.1.hello\" ]") == 0); assert(system("rm spawn.test.1.out") == 0); } void test_script(Test *pt) { int ret; pid_t pid; char *const ppargv[] = {"./spawn.test.2.sh", NULL }; char *const ppargv2[] = {"./spawn.test.2.sh", "exit", NULL }; char *const ppargv3[] = {"./spawn.test.2.sh", "negpid", NULL }; char *const ppargv4[] = {"./spawn.test.2.sh", "charpid", NULL }; char *const ppargv5[] = {"./spawn.test.2.sh", "endln", NULL }; /* Everything's OK */ assert(system("test -x spawn.test.2.sh") == 0); ct_test(pt, (ret = spawn_script("./spawn.test.2.sh", ppargv, &pid)) == 0); ct_test(pt, pid == 10000); /* The script exits without returning anything */ ct_test(pt, (ret = spawn_script("./spawn.test.2.sh", ppargv2, &pid)) == -1); /* Return an invalid pid */ ct_test(pt, (ret = spawn_script("./spawn.test.2.sh", ppargv3, &pid)) == -1); /* Return an invalid pid (contains alphabets) */ ct_test(pt, (ret = spawn_script("./spawn.test.2.sh", ppargv4, &pid)) == -1); /* echo/echo -n */ ct_test(pt, (ret = spawn_script("./spawn.test.2.sh", ppargv5, &pid)) == 0); } void spawn_addTests(Suite *ps) { Test *pt; bool rc; pt = ct_create("Daemon Spawning", NULL); rc = ct_addTestFun(pt, test_cmd); rc = ct_addTestFun(pt, test_script); rc =cs_addTest(ps, pt); assert(rc); }