From: Lucas De Marchi Date: Wed, 25 Jan 2012 01:35:18 +0000 (-0200) Subject: testsuite: fake kernel 4.0.20-kmod is out X-Git-Tag: v5~69 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ab25311072f4d40a2de705aa17edca401035da53;p=thirdparty%2Fkmod.git testsuite: fake kernel 4.0.20-kmod is out Go get it while it's fresh :-). Test fake results of "uname -r" by LD_PRELOAD'ing uname.so. --- diff --git a/Makefile.am b/Makefile.am index 42bf0b3d..47664240 100644 --- a/Makefile.am +++ b/Makefile.am @@ -145,11 +145,12 @@ testsuite_libtestsuite_la_SOURCES = testsuite/testsuite.c \ testsuite/testsuite.h testsuite_libtestsuite_la_DEPENDENCIES = testsuite/uname.so -TESTSUITE = testsuite/test-init +TESTSUITE = testsuite/test-init testsuite/test-testsuite check_PROGRAMS = $(TESTSUITE) TESTS = $(TESTSUITE) testsuite_test_init_LDADD = testsuite/libtestsuite.la libkmod/libkmod-private.la +testsuite_test_testsuite_LDADD = testsuite/libtestsuite.la DISTCHECK_CONFIGURE_FLAGS=--enable-gtk-doc diff --git a/testsuite/test-testsuite.c b/testsuite/test-testsuite.c new file mode 100644 index 00000000..edbfe45c --- /dev/null +++ b/testsuite/test-testsuite.c @@ -0,0 +1,72 @@ +#include +#include +#include +#include +#include +#include +#include +#include + +#include "testsuite.h" + + +#define TEST_UNAME "4.0.20-kmod" +static int testsuite_uname(const struct test *t) +{ + struct utsname u; + int err = uname(&u); + + if (err < 0) + exit(EXIT_FAILURE); + + if (strcmp(u.release, TEST_UNAME) != 0) { + char *ldpreload = getenv("LD_PRELOAD"); + ERR("u.release=%s should be %s\n", u.release, TEST_UNAME); + ERR("LD_PRELOAD=%s\n", ldpreload); + exit(EXIT_FAILURE); + } + + exit(EXIT_SUCCESS); +} +static const struct test stestsuite_uname = { + .name = "testsuite_uname", + .description = "test if trap to uname() works", + .func = testsuite_uname, + .config = { + [TC_UNAME_R] = TEST_UNAME, + }, + .need_spawn = true, +}; + +static const struct test *tests[] = { + &stestsuite_uname, + NULL, +}; + +int main(int argc, char *argv[]) +{ + const struct test *t; + int arg; + size_t i; + + arg = test_init(argc, argv, tests); + if (arg == 0) + return 0; + + if (arg < argc) { + t = test_find(tests, argv[arg]); + if (t == NULL) { + fprintf(stderr, "could not find test %s\n", argv[arg]); + exit(EXIT_FAILURE); + } + + return test_run(t); + } + + for (i = 0; tests[i] != NULL; i++) { + if (test_run(tests[i]) != 0) + exit(EXIT_FAILURE); + } + + exit(EXIT_SUCCESS); +}