[PATCH v2] tests: fix bad-buffer-test
Kristian Høgsberg
hoegsberg at gmail.com
Wed Apr 16 22:32:13 PDT 2014
On Sat, Apr 12, 2014 at 12:19:28PM +0300, Pekka Paalanen wrote:
> On Fri, 11 Apr 2014 11:48:55 +0200
> Marek Chalupa <mchqwerty at gmail.com> 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
> wayland-devel at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/wayland-devel
More information about the wayland-devel
mailing list