blob: 4259b21be21e9545ca76796181f87e271ba344cc [file] [log] [blame]
#ifndef _LIBKMOD_TESTSUITE_
#define _LIBKMOD_TESTSUITE_
#include <stdbool.h>
#include <stdarg.h>
struct test;
typedef int (*testfunc)(const struct test *t);
enum test_config {
TC_ROOTFS = 0,
TC_UNAME_R,
_TC_LAST,
};
#define S_TC_ROOTFS "TESTSUITE_ROOTFS"
#define S_TC_UNAME_R "TESTSUITE_UNAME_R"
struct test {
const char *name;
const char *description;
struct {
const char *stdout;
const char *stderr;
} output;
testfunc func;
const char *config[_TC_LAST];
bool need_spawn;
};
const struct test *test_find(const struct test *tests[], const char *name);
int test_init(int argc, char *const argv[], const struct test *tests[]);
int test_spawn_prog(const char *prog, const char *const args[]);
int test_run(const struct test *t);
#define TS_EXPORT __attribute__ ((visibility("default")))
#define _LOG(prefix, fmt, ...) printf("TESTSUITE: " prefix fmt, ## __VA_ARGS__)
#define LOG(fmt, ...) _LOG("", fmt, ## __VA_ARGS__)
#define WARN(fmt, ...) _LOG("WARN: ", fmt, ## __VA_ARGS__)
#define ERR(fmt, ...) _LOG("ERR: ", fmt, ## __VA_ARGS__)
/* Test definitions */
#define DEFINE_TEST(_name) \
struct test s_name = { \
.name = #_name, \
.func = _name, \
}
#endif