tests: modify sigbus-test to use 'check' framework

This commit is contained in:
Deng Zhengrong 2012-07-29 06:26:06 +08:00 committed by Arun Raghavan
parent 034807d6d3
commit f4dd422c75
2 changed files with 30 additions and 10 deletions

View file

@ -506,8 +506,8 @@ lock_autospawn_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS)
sigbus_test_SOURCES = tests/sigbus-test.c sigbus_test_SOURCES = tests/sigbus-test.c
sigbus_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINOR@.la libpulse.la libpulsecommon-@PA_MAJORMINOR@.la sigbus_test_LDADD = $(AM_LDADD) libpulsecore-@PA_MAJORMINOR@.la libpulse.la libpulsecommon-@PA_MAJORMINOR@.la
sigbus_test_CFLAGS = $(AM_CFLAGS) sigbus_test_CFLAGS = $(AM_CFLAGS) $(LIBCHECK_CFLAGS)
sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) sigbus_test_LDFLAGS = $(AM_LDFLAGS) $(BINLDFLAGS) $(LIBCHECK_LIBS)
gtk_test_SOURCES = tests/gtk-test.c gtk_test_SOURCES = tests/gtk-test.c
gtk_test_LDADD = $(AM_LDADD) $(GTK20_LIBS) libpulse-mainloop-glib.la libpulse.la gtk_test_LDADD = $(AM_LDADD) $(GTK20_LIBS) libpulse-mainloop-glib.la libpulse.la

View file

@ -26,10 +26,12 @@
#include <fcntl.h> #include <fcntl.h>
#include <sys/mman.h> #include <sys/mman.h>
#include <check.h>
#include <pulsecore/memtrap.h> #include <pulsecore/memtrap.h>
#include <pulsecore/core-util.h> #include <pulsecore/core-util.h>
int main(int argc, char *argv[]) { START_TEST (sigbus_test) {
void *p; void *p;
int fd; int fd;
pa_memtrap *m; pa_memtrap *m;
@ -38,10 +40,10 @@ int main(int argc, char *argv[]) {
pa_memtrap_install(); pa_memtrap_install();
/* Create the memory map */ /* Create the memory map */
pa_assert_se((fd = open("sigbus-test-map", O_RDWR|O_TRUNC|O_CREAT, 0660)) >= 0); fail_unless((fd = open("sigbus-test-map", O_RDWR|O_TRUNC|O_CREAT, 0660)) >= 0);
pa_assert_se(unlink("sigbus-test-map") == 0); fail_unless(unlink("sigbus-test-map") == 0);
pa_assert_se(ftruncate(fd, PA_PAGE_SIZE) >= 0); fail_unless(ftruncate(fd, PA_PAGE_SIZE) >= 0);
pa_assert_se((p = mmap(NULL, PA_PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) != MAP_FAILED); fail_unless((p = mmap(NULL, PA_PAGE_SIZE, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) != MAP_FAILED);
/* Register memory map */ /* Register memory map */
m = pa_memtrap_add(p, PA_PAGE_SIZE); m = pa_memtrap_add(p, PA_PAGE_SIZE);
@ -54,7 +56,7 @@ int main(int argc, char *argv[]) {
pa_log("And memtrap says it is good: %s", pa_yes_no(pa_memtrap_is_good(m))); pa_log("And memtrap says it is good: %s", pa_yes_no(pa_memtrap_is_good(m)));
/* Invalidate mapping */ /* Invalidate mapping */
pa_assert_se(ftruncate(fd, 0) >= 0); fail_unless(ftruncate(fd, 0) >= 0);
/* Use memory map */ /* Use memory map */
pa_snprintf(p, PA_PAGE_SIZE, "This is a test that should fail but get caught."); pa_snprintf(p, PA_PAGE_SIZE, "This is a test that should fail but get caught.");
@ -65,6 +67,24 @@ int main(int argc, char *argv[]) {
pa_memtrap_remove(m); pa_memtrap_remove(m);
munmap(p, PA_PAGE_SIZE); munmap(p, PA_PAGE_SIZE);
}
return 0; END_TEST
int main(int argc, char *argv[]) {
int failed = 0;
Suite *s;
TCase *tc;
SRunner *sr;
s = suite_create("Sig Bus");
tc = tcase_create("sigbus");
tcase_add_test(tc, sigbus_test);
suite_add_tcase(s, tc);
sr = srunner_create(s);
srunner_run_all(sr, CK_NORMAL);
failed = srunner_ntests_failed(sr);
srunner_free(sr);
return (failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
} }