From: Michael Tremer Date: Wed, 13 Jan 2021 12:38:06 +0000 (+0000) Subject: tests: Allocate testsuite statically X-Git-Tag: 0.9.28~1285^2~879 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1413be07a360e3a9db023299549118bc248a5ef1;p=pakfire.git tests: Allocate testsuite statically This allows us to have shorter function calls when setting up a test Signed-off-by: Michael Tremer --- diff --git a/tests/libpakfire/arch.c b/tests/libpakfire/arch.c index 9e0697dd0..635ebb1e6 100644 --- a/tests/libpakfire/arch.c +++ b/tests/libpakfire/arch.c @@ -95,12 +95,10 @@ int test_machine(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(4); + testsuite_add_test(test_native); + testsuite_add_test(test_supported); + testsuite_add_test(test_compatible); + testsuite_add_test(test_machine); - testsuite_add_test(ts, test_native); - testsuite_add_test(ts, test_supported); - testsuite_add_test(ts, test_compatible); - testsuite_add_test(ts, test_machine); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/archive.c b/tests/libpakfire/archive.c index 781c4c8c4..4175104d0 100644 --- a/tests/libpakfire/archive.c +++ b/tests/libpakfire/archive.c @@ -87,11 +87,9 @@ int test_import(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(3); + testsuite_add_test(test_open); + testsuite_add_test(test_extract); + testsuite_add_test(test_import); - testsuite_add_test(ts, test_open); - testsuite_add_test(ts, test_extract); - testsuite_add_test(ts, test_import); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/execute.c b/tests/libpakfire/execute.c index 2e14852f1..333e0e4f8 100644 --- a/tests/libpakfire/execute.c +++ b/tests/libpakfire/execute.c @@ -35,9 +35,7 @@ int test_does_not_exist(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(1); + testsuite_add_test(test_does_not_exist); - testsuite_add_test(ts, test_does_not_exist); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/key.c b/tests/libpakfire/key.c index 0c95f9f51..f69d10dad 100644 --- a/tests/libpakfire/key.c +++ b/tests/libpakfire/key.c @@ -96,11 +96,9 @@ int test_export(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(3); + testsuite_add_test(test_init); + testsuite_add_test(test_import); + testsuite_add_test(test_export); - testsuite_add_test(ts, test_init); - testsuite_add_test(ts, test_import); - testsuite_add_test(ts, test_export); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/main.c b/tests/libpakfire/main.c index 4eac50753..35d506a69 100644 --- a/tests/libpakfire/main.c +++ b/tests/libpakfire/main.c @@ -38,10 +38,8 @@ static int test_path(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(2); + testsuite_add_test(test_init); + testsuite_add_test(test_path); - testsuite_add_test(ts, test_init); - testsuite_add_test(ts, test_path); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/makefile.c b/tests/libpakfire/makefile.c index 290a18c0c..f7896c2f6 100644 --- a/tests/libpakfire/makefile.c +++ b/tests/libpakfire/makefile.c @@ -53,9 +53,7 @@ int test_parse(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(1); + testsuite_add_test(test_parse); - testsuite_add_test(ts, test_parse); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/parser.c b/tests/libpakfire/parser.c index f40fe9cc5..2e4994e7e 100644 --- a/tests/libpakfire/parser.c +++ b/tests/libpakfire/parser.c @@ -103,9 +103,7 @@ int test_parser(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(1); + testsuite_add_test(test_parser); - testsuite_add_test(ts, test_parser); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/libpakfire/util.c b/tests/libpakfire/util.c index 22e488828..1a32f3cc3 100644 --- a/tests/libpakfire/util.c +++ b/tests/libpakfire/util.c @@ -58,11 +58,9 @@ static int test_string_startswith(const test_t* t) { } int main(int argc, char** argv) { - testsuite_t* ts = testsuite_create(3); + testsuite_add_test(test_basename); + testsuite_add_test(test_dirname); + testsuite_add_test(test_string_startswith); - testsuite_add_test(ts, test_basename); - testsuite_add_test(ts, test_dirname); - testsuite_add_test(ts, test_string_startswith); - - return testsuite_run(ts); + return testsuite_run(); } diff --git a/tests/testsuite.c b/tests/testsuite.c index 1f309faa5..19056c10c 100644 --- a/tests/testsuite.c +++ b/tests/testsuite.c @@ -25,6 +25,8 @@ const char* TEST_SRC_PATH = ABS_TOP_SRCDIR "/tests"; +testsuite_t ts; + static int test_run(test_t* t) { LOG("running %s\n", t->name); @@ -53,40 +55,25 @@ static int test_run(test_t* t) { return r; } -testsuite_t* testsuite_create(size_t n) { - testsuite_t* ts = calloc(1, sizeof(*ts)); - if (!ts) - exit(EXIT_FAILURE); - - // Make space for n tests - ts->tests = calloc(n + 1, sizeof(*ts->tests)); - ts->left = n; - - return ts; -}; - -int __testsuite_add_test(testsuite_t* ts, const char* name, test_function_t func) { - if (ts->left == 0) +int __testsuite_add_test(const char* name, test_function_t func) { + // Check if any space is left + if (ts.num >= MAX_TESTS) { + LOG("ERROR: We are out of space for tests\n"); exit(EXIT_FAILURE); - - test_t** last = ts->tests; - while (*last) - last++; - - test_t* test = *last = calloc(1, sizeof(**last)); - if (test) { - test->name = name; - test->func = func; } - ts->left--; + struct test* test = &ts.tests[ts.num++]; + + // Set parameters + test->name = name; + test->func = func; return 0; } -int testsuite_run(testsuite_t* ts) { - for (test_t** t = ts->tests; *t; t++) { - int r = test_run(*t); +int testsuite_run() { + for (unsigned int i = 0; i < ts.num; i++) { + int r = test_run(&ts.tests[i]); if (r) exit(r); } diff --git a/tests/testsuite.h b/tests/testsuite.h index d42474b76..320176552 100644 --- a/tests/testsuite.h +++ b/tests/testsuite.h @@ -27,6 +27,8 @@ #include +#define MAX_TESTS 128 + extern const char* TEST_SRC_PATH; // Forward declaration @@ -41,20 +43,21 @@ typedef struct test { } test_t; typedef struct testsuite { - test_t** tests; - size_t left; + test_t tests[MAX_TESTS]; + size_t num; } testsuite_t; -testsuite_t* testsuite_create(size_t n); -int __testsuite_add_test(testsuite_t* ts, const char* name, test_function_t func); -int testsuite_run(testsuite_t* ts); +extern testsuite_t ts; + +int __testsuite_add_test(const char* name, test_function_t func); +int testsuite_run(); #define _LOG(prefix, fmt, ...) fprintf(stderr, "TESTS: " prefix fmt, ## __VA_ARGS__); #define LOG(fmt, ...) _LOG("", fmt, ## __VA_ARGS__); #define LOG_WARN(fmt, ...) _LOG("WARN: ", fmt, ## __VA_ARGS__); #define LOG_ERROR(fmt, ...) _LOG("ERROR: ", fmt, ## __VA_ARGS__); -#define testsuite_add_test(ts, func) __testsuite_add_test(ts, #func, func) +#define testsuite_add_test(func) __testsuite_add_test(#func, func) #define assert_return(expr, r) \ do { \