]> git.ipfire.org Git - pakfire.git/commitdiff
tests: Allocate testsuite statically
authorMichael Tremer <michael.tremer@ipfire.org>
Wed, 13 Jan 2021 12:38:06 +0000 (12:38 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 13 Jan 2021 12:38:06 +0000 (12:38 +0000)
This allows us to have shorter function calls when setting up a test

Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
tests/libpakfire/arch.c
tests/libpakfire/archive.c
tests/libpakfire/execute.c
tests/libpakfire/key.c
tests/libpakfire/main.c
tests/libpakfire/makefile.c
tests/libpakfire/parser.c
tests/libpakfire/util.c
tests/testsuite.c
tests/testsuite.h

index 9e0697dd04aba248a270fa9c4177dc3e81b8fde7..635ebb1e64f9fcb0a98a3be978d66e1e80bd2499 100644 (file)
@@ -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();
 }
index 781c4c8c494fb5ee0b3169bb4418897c06977832..4175104d03546a079f6de731f280a919c138be3c 100644 (file)
@@ -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();
 }
index 2e14852f167923203d1acf9a709d9456edfdb8ae..333e0e4f8149e923a9da7e675a5906aa7dc41f17 100644 (file)
@@ -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();
 }
index 0c95f9f5103aa3f9e42eafa26910d3e7a323756d..f69d10dad08a74bbdfa0e6f4f84015aba4af8dd2 100644 (file)
@@ -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();
 }
index 4eac5075397a96ce9ad1de1796303bb32b37c7e6..35d506a6921882346e308ae42e1bf04268add77e 100644 (file)
@@ -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();
 }
index 290a18c0cb0262a557ac90603f8c4baebf9d439b..f7896c2f662a4e486d72d7a11b72b06fd5586a51 100644 (file)
@@ -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();
 }
index f40fe9cc5b36350f5c585373bd6da95bb63f039f..2e4994e7ec1b32d2526f7fc6f9c059778ebde215 100644 (file)
@@ -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();
 }
index 22e488828c1e3a4ea7cb71516f14b910a8a4c1c2..1a32f3cc30c90123227e27150a31ac9c08172d2d 100644 (file)
@@ -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();
 }
index 1f309faa51dca475faecdbfb9c5eca60ad6820dc..19056c10c19f62b93a64fa473199979545bcd5b5 100644 (file)
@@ -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);
        }
index d42474b7625a34463a5656d236008c3d72191d27..32017655200f0b99f4b917d4b7666c6bf51cdca5 100644 (file)
@@ -27,6 +27,8 @@
 
 #include <pakfire/pakfire.h>
 
+#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 { \