From d56af2787efd05e6f8fe06cc8ad9bad433097213 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kristian=20H=C3=B8gsberg?= Date: Tue, 8 May 2012 09:37:34 -0400 Subject: [PATCH] tests: Add signal test case Doesn't necessarily catch the signalfd bug just fixed, since that only triggers when an uninitialized int is negative. --- tests/event-loop-test.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/tests/event-loop-test.c b/tests/event-loop-test.c index 70818b2a..6923721c 100644 --- a/tests/event-loop-test.c +++ b/tests/event-loop-test.c @@ -23,6 +23,7 @@ #include #include #include +#include #include "../src/wayland-server.h" #include "test-runner.h" @@ -126,3 +127,30 @@ TEST(free_source_with_data) assert(close(context.p2[0]) == 0); assert(close(context.p2[1]) == 0); } + +static int +signal_callback(int signal_number, void *data) +{ + int *got_it = data; + + assert(signal_number == SIGUSR1); + *got_it = 1; + + return 1; +} + +TEST(signal_test) +{ + struct wl_event_loop *loop = wl_event_loop_create(); + struct wl_event_source *source; + int got_it = 0; + + source = wl_event_loop_add_signal(loop, SIGUSR1, + signal_callback, &got_it); + kill(getpid(), SIGUSR1); + wl_event_loop_dispatch(loop, 0); + assert(got_it); + + wl_event_source_remove(source); + wl_event_loop_destroy(loop); +}