[PATCH weston] tests: make signal other than ABRT a hard failure
Kristian Høgsberg
hoegsberg at gmail.com
Thu Jan 24 13:24:14 PST 2013
On Tue, Dec 18, 2012 at 05:30:16PM +0200, Pekka Paalanen wrote:
> We handle FAIL_TEST tests by simply inverting the success flag. The
> problem with this is, that if a FAIL_TEST fails by a SIGSEGV, it will be
> interpreted as passed. However, no code should ever cause a SEGV, or any
> other signal than ABRT. And even ABRT only in the case of an assert()
> that is meant to fail. We would probably need more sophistication for the
> FAIL_TEST cases.
>
> For now, just interpret any other signal than ABRT as a hard failure,
> regardless whether it is a TEST or FAIL_TEST. At least segfaults do not
> cause false passes anymore.
I could imagine that we'd want to test for various expected failure
modes, but we'd probably want to do something more sophisticated for
that. Like FAIL_TEST(name, FAIL_TEST_SIGSEGV) or something like that.
For now, I've applied this one, thanks.
Kristian
> Signed-off-by: Pekka Paalanen <ppaalanen at gmail.com>
> ---
> tests/weston-test-runner.c | 6 +++++-
> 1 files changed, 5 insertions(+), 1 deletions(-)
>
> diff --git a/tests/weston-test-runner.c b/tests/weston-test-runner.c
> index e60d4d2..27ea9e4 100644
> --- a/tests/weston-test-runner.c
> +++ b/tests/weston-test-runner.c
> @@ -28,6 +28,7 @@
> #include <string.h>
> #include <assert.h>
> #include <errno.h>
> +#include <signal.h>
> #include "weston-test-runner.h"
>
> extern const struct weston_test __start_test_section, __stop_test_section;
> @@ -71,6 +72,7 @@ int main(int argc, char *argv[])
> pass = 0;
> for (t = &__start_test_section; t < &__stop_test_section; t++) {
> int success = 0;
> + int hardfail = 0;
>
> pid = fork();
> assert(pid >= 0);
> @@ -93,13 +95,15 @@ int main(int argc, char *argv[])
> case CLD_KILLED:
> case CLD_DUMPED:
> fprintf(stderr, "signal %d", info.si_status);
> + if (info.si_status != SIGABRT)
> + hardfail = 1;
> break;
> }
>
> if (t->must_fail)
> success = !success;
>
> - if (success) {
> + if (success && !hardfail) {
> pass++;
> fprintf(stderr, ", pass.\n");
> } else
> --
> 1.7.8.6
>
> _______________________________________________
> wayland-devel mailing list
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list