On Sat, Apr 12, 2014 at 12:19:28PM +0300, Pekka Paalanen wrote: > On Fri, 11 Apr 2014 11:48:55 +0200 > Marek Chalupa <[email protected]> wrote: > > > bad-buffer-test is FAIL_TEST and every assert() (or even SIGSEGV signal) > > make it pass. It shouldn't be so for example when assert() is invoked > > when a client couldn't connect to display. > > > > Make sure that only relevant asserts make the test pass > > and the other make it fail (by returning 0) > > --- > > tests/bad-buffer-test.c | 30 ++++++++++++++++++++++++++++++ > > 1 file changed, 30 insertions(+) > > > > diff --git a/tests/bad-buffer-test.c b/tests/bad-buffer-test.c > > index 6eae313..86e0299 100644 > > --- a/tests/bad-buffer-test.c > > +++ b/tests/bad-buffer-test.c > > @@ -25,6 +25,8 @@ > > > > #include <unistd.h> > > #include <sys/types.h> > > +#include <stdio.h> > > +#include <signal.h> > > > > #include "../shared/os-compatibility.h" > > #include "weston-test-client-helper.h" > > @@ -58,12 +60,34 @@ create_bad_shm_buffer(struct client *client, int width, > > int height) > > return buffer; > > } > > > > +static void sighandler(int signum) > > +{ > > + /* this means failure */ > > + exit(0); > > +} > > + > > FAIL_TEST(test_truncated_shm_file) > > { > > struct client *client; > > struct wl_buffer *bad_buffer; > > struct wl_surface *surface; > > int frame; > > + struct sigaction new_action, old_action; > > + > > + /* until the bad buffer creation, the SIGABRT or SIGSEGV signals > > + * should fail the test. That means returning 0 */ > > + new_action.sa_handler = sighandler; > > + sigemptyset(&new_action.sa_mask); > > + new_action.sa_flags = 0; > > + > > + if (sigaction(SIGSEGV, &new_action, NULL) != 0) { > > + fprintf(stderr, "Failed setting new sigaction for SIGSEGV"); > > + exit(0); > > + } > > + if (sigaction(SIGABRT, &new_action, &old_action) != 0) { > > + fprintf(stderr, "Failed setting new sigaction for SIGABRT"); > > + exit(0); > > + } > > > > client = client_create(46, 76, 111, 134); > > assert(client); > > @@ -71,6 +95,12 @@ FAIL_TEST(test_truncated_shm_file) > > > > bad_buffer = create_bad_shm_buffer(client, 200, 200); > > > > + /* from this point we expect the signal */ > > + if (sigaction(SIGABRT, &old_action, NULL) != 0) { > > + fprintf(stderr, "Failed setting old sigaction for SIGABRT"); > > + exit(0); > > + } > > + > > wl_surface_attach(surface, bad_buffer, 0, 0); > > wl_surface_damage(surface, 0, 0, 200, 200); > > frame_callback_set(surface, &frame); > > -- > > 1.8.4.2 > > Looks fine to me. Let's get this in and fix the test suite properly > later.
Thanks for reviewing Pekka, patch applied. Kristian > > > Thanks, > pq > _______________________________________________ > wayland-devel mailing list > [email protected] > http://lists.freedesktop.org/mailman/listinfo/wayland-devel _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
