summaryrefslogtreecommitdiff
path: root/lib/tests/igt_no_exit.c
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2019-02-19 08:57:15 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2019-02-20 13:58:04 +0100
commit84096969b59b3230a4f890109eb3c6406a37255b (patch)
treeab8ac42752aa2d80982137074166c81641daace8 /lib/tests/igt_no_exit.c
parentfd8f161877ee496676fd7dd3109823a02a74283f (diff)
lib/tests: Convert no_exit tests into positive tests
This way we can make sure they die with an assert, which is what we want. Reviewed-by: Arkadiusz Hiler <arkadiusz.hiler@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
Diffstat (limited to 'lib/tests/igt_no_exit.c')
-rw-r--r--lib/tests/igt_no_exit.c50
1 files changed, 49 insertions, 1 deletions
diff --git a/lib/tests/igt_no_exit.c b/lib/tests/igt_no_exit.c
index dc89b830..4a777412 100644
--- a/lib/tests/igt_no_exit.c
+++ b/lib/tests/igt_no_exit.c
@@ -25,9 +25,26 @@
*
*/
+#include <sys/wait.h>
+
#include "drmtest.h"
-int main(int argc, char **argv)
+#include "igt_tests_common.h"
+
+static void no_exit_list_only(void)
+{
+ char prog[] = "igt_list_only";
+ char arg[] = "--list-subtests";
+ char *fake_argv[] = {prog, arg};
+ int fake_argc = 2;
+
+ igt_subtest_init(fake_argc, fake_argv);
+
+ igt_subtest("A")
+ ;
+}
+
+static void no_exit(void)
{
char prog[] = "igt_no_exit";
char *fake_argv[] = {prog};
@@ -38,3 +55,34 @@ int main(int argc, char **argv)
igt_subtest("A")
;
}
+
+static int do_fork(void (*test_to_run)(void))
+{
+ int pid, status;
+
+ switch (pid = fork()) {
+ case -1:
+ internal_assert(0);
+ case 0:
+ test_to_run();
+ default:
+ while (waitpid(pid, &status, 0) == -1 &&
+ errno == EINTR)
+ ;
+
+ return status;
+ }
+}
+
+int main(int argc, char **argv)
+{
+ int ret;
+
+ ret = do_fork(no_exit);
+ internal_assert_wsignaled(ret, SIGABRT);
+
+ ret = do_fork(no_exit_list_only);
+ internal_assert_wsignaled(ret, SIGABRT);
+
+ return 0;
+}