diff options
author | Mike Blumenkrantz <zmike@samsung.com> | 2018-07-25 10:56:23 -0500 |
---|---|---|
committer | Derek Foreman <derek.foreman.samsung@gmail.com> | 2018-07-25 10:56:23 -0500 |
commit | 6fbcff15db98d18e9c867c36d1cb1770cba4299d (patch) | |
tree | b5e8e6321db8fc9b2060a8c8333323a3e5e76b1b /src | |
parent | 4bdac206d27fc973c836730562ed07bb9f259bad (diff) | |
download | efl-6fbcff15db98d18e9c867c36d1cb1770cba4299d.tar.gz |
tests: check WIFEXITED to determine if test exited before using exit status
Summary:
the exit status value is not valid unless the process has terminated normally
by calling exit() or _exit(), so only use the status if this is true. otherwise
mark the process as a failed test
Depends on D6597
Reviewers: ManMower
Reviewed By: ManMower
Subscribers: cedric, #committers
Tags: #efl_tests
Differential Revision: https://phab.enlightenment.org/D6600
Diffstat (limited to 'src')
-rw-r--r-- | src/tests/efl_check.h | 31 |
1 files changed, 18 insertions, 13 deletions
diff --git a/src/tests/efl_check.h b/src/tests/efl_check.h index 1d9942feb3..e3218ccc29 100644 --- a/src/tests/efl_check.h +++ b/src/tests/efl_check.h @@ -245,6 +245,21 @@ _efl_suite_run_end(SRunner *sr, const char *name) return failed_count; } +#ifdef HAVE_FORK +EINA_UNUSED static int +_efl_suite_wait_on_fork(int *num_forks) +{ + int status = 0, ret; + waitpid(0, &status, 0); + if (WIFEXITED(status)) + ret = WEXITSTATUS(status); + else + ret = 1; + (*num_forks)--; + return ret; +} +#endif + EINA_UNUSED static int _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, const Efl_Test_Case *etc, SFun init, SFun shutdown) { @@ -279,15 +294,7 @@ _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, co if (do_fork && can_fork) { if (num_forks == eina_cpu_count()) - { - do - { - int status = 0; - waitpid(0, &status, 0); - failed_count += WEXITSTATUS(status); - num_forks--; - } while (0); - } + failed_count += _efl_suite_wait_on_fork(&num_forks); pid = fork(); if (pid > 0) { @@ -330,10 +337,8 @@ _efl_suite_build_and_run(int argc, const char **argv, const char *suite_name, co { do { - int status = 0; - waitpid(0, &status, 0); - failed_count += WEXITSTATUS(status); - } while (--num_forks); + failed_count += _efl_suite_wait_on_fork(&num_forks); + } while (num_forks); } else #endif |