From d51a885431978810439306262d522935f4faa595 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Tue, 21 Jan 2020 01:16:47 -0500 Subject: [PATCH] Reintroduced the test type without uiInit() and added uiInit() to most normal tests. Now to start (slowly) reactivating tests. --- test/initmain.c | 2 +- test/test.h | 37 +++++++++++++++++++++++++++---------- test/testlist.py | 2 +- 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/test/initmain.c b/test/initmain.c index 15b8fcfb..0cde1a97 100644 --- a/test/initmain.c +++ b/test/initmain.c @@ -6,7 +6,7 @@ #define errInvalidOptions "options parameter to uiInit() must be NULL" #define errAlreadyInitialized "libui already initialized" -Test(Init) +TestNoInit(Init) { uiInitError err; diff --git a/test/test.h b/test/test.h index 99e92f0a..d44b0bc8 100644 --- a/test/test.h +++ b/test/test.h @@ -16,10 +16,7 @@ extern "C" { #endif #define testingprivImplName(basename) testingprivImpl ## basename - #define testingprivScaffoldName(basename) testingprivScaffold ## basename -#define testingprivMkScaffold(basename) \ - static int testingprivScaffoldName(basename)(void) { int ret = 0; testingprivImplName(basename)(&ret); return ret; } // references: // - https://gitlab.gnome.org/GNOME/glib/blob/master/glib/gconstructor.h @@ -43,14 +40,34 @@ extern "C" { #error unknown compiler for making constructors in C; cannot continue #endif -#define testingprivMk(basename) \ - void testingprivImplName(basename)(int *testingprivRet); \ - testingprivMkScaffold(basename) \ - testingprivMkCtor(basename) \ - void testingprivImplName(basename)(int *testingprivRet) - #define Test(Name) \ - testingprivMk(Test ## Name) + void testingprivImplName(Test ## Name)(int *testingprivRet); \ + static int testingprivScaffoldName(Test ## Name)(void) \ + { \ + int ret = 0; \ + uiInitError err; \ + memset(&err, 0, sizeof (uiInitError)); \ + err.Size = sizeof (uiInitError); \ + if (!uiInit(NULL, &err)) { \ + fprintf(stderr, "error initializing libui for Test" #Name ": %s\n", err.Message); \ + return 1; \ + } \ + testingprivImplName(Test ## Name)(&ret); \ + return ret; \ + } \ + testingprivMkCtor(Test ## Name) \ + void testingprivImplName(Test ## Name)(int *testingprivRet) + +#define TestNoInit(Name) \ + void testingprivImplName(Test ## Name)(int *testingprivRet); \ + static int testingprivScaffoldName(Test ## Name)(void) \ + { \ + int ret = 0; \ + testingprivImplName(Test ## Name)(&ret); \ + return ret; \ + } \ + testingprivMkCtor(Test ## Name) \ + void testingprivImplName(Test ## Name)(int *testingprivRet) // These can only be called directly from the Test functions. // TODO make it otherwise diff --git a/test/testlist.py b/test/testlist.py index cb41ed54..29b1fa0e 100644 --- a/test/testlist.py +++ b/test/testlist.py @@ -4,7 +4,7 @@ import fileinput import re -r = re.compile('^Test\(([A-Za-z0-9_]+)\)$') +r = re.compile('^(?:Test|TestNoInit)\(([A-Za-z0-9_]+)\)$') for line in fileinput.input(): match = r.match(line) if match is not None: