From a0fd823328b4d10d3718526259b2cf9adc22a07e Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sun, 9 Jun 2019 18:08:50 -0400 Subject: [PATCH] Just restored TestEventErrors as is for now. There's definitely room for cleanup here. --- test/events.c | 6 ++---- test/main.c | 20 +++++++------------- test/noinitwrongthread.c | 2 +- test/test.h | 8 ++++---- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/test/events.c b/test/events.c index b9c2f532..1ec2ce3e 100644 --- a/test/events.c +++ b/test/events.c @@ -916,8 +916,8 @@ testingTest(EventInvalidateSender) runArgsSubtests(t, &p); } -#if 0 -TODOTODO +// TODO table-ize these +// TODO deduplicate this from the one in noinitwrongthread.c? static void testWhileFiring(void *sender, void *args, void *data) { @@ -1054,5 +1054,3 @@ testingTest(EventErrors) "attempt to free a uiEvent that still has handlers registered"); uiEventFire(firingEvent, NULL, firingEvent); } - -#endif diff --git a/test/main.c b/test/main.c index fea908d9..cbbea083 100644 --- a/test/main.c +++ b/test/main.c @@ -6,20 +6,14 @@ void timeoutMain(void *data) uiMain(); } -struct errorParams errorParams; - -void catchProgrammerError(const char *prefix, const char *msg, const char *suffix, bool internal) +void catchProgrammerError(const char *msg, void *data) { - errorParams.caught = true; - if (strcmp(prefix, "libui programmer error") != 0) - // TODO use diff - testingTErrorfFull(errorParams.t, errorParams.file, errorParams.line, "%s prefix string doesn't contain \"programmer error\": %s", errorParams.exprstr, prefix); - if (internal) - testingTErrorfFull(errorParams.t, errorParams.file, errorParams.line, "%s error is marked internal; should not have been", errorParams.exprstr); - if (strcmp(msg, errorParams.msgWant) != 0) - // TODO use diff - testingTErrorfFull(errorParams.t, errorParams.file, errorParams.line, "%s: message doesn't contain expected substring:" diff("%s"), - errorParams.exprstr, msg, errorParams.msgWant); + struct errorParams *errorParams = (struct errorParams *) data; + + errorParams->caught = true; + if (strcmp(msg, errorParams->msgWant) != 0) + testingTErrorfFull(errorParams->t, errorParams->file, errorParams->line, "%s: message doesn't match expected string:" diff("%s"), + errorParams->exprstr, msg, errorParams->msgWant); } static void runSetORingResults(testingSet *set, const struct testingOptions *options, bool *anyRun, bool *anyFailed) diff --git a/test/noinitwrongthread.c b/test/noinitwrongthread.c index 4a2dd8a8..e848de14 100644 --- a/test/noinitwrongthread.c +++ b/test/noinitwrongthread.c @@ -36,7 +36,7 @@ static void deferResetProgrammerError(testingT *t, void *data) if (!c->caught) \ testingTErrorf(t, "did not throw a programmer error; should have"); \ if (c->msgGot != NULL) { \ - testingTErrorf(t, "message doesn't contain expected string:" diff("%s"), \ + testingTErrorf(t, "message doesn't match expected string:" diff("%s"), \ c->msgGot, c->msgWant); \ testingUtilFreeStrdup(c->msgGot); \ } \ diff --git a/test/test.h b/test/test.h index 99be337a..8e613405 100644 --- a/test/test.h +++ b/test/test.h @@ -34,11 +34,11 @@ struct errorParams { const char *msgWant; bool caught; }; -extern struct errorParams errorParams; -extern void catchProgrammerError(const char *prefix, const char *msg, const char *suffix, bool internal); +extern void catchProgrammerError(const char *msg, void *data); #define testProgrammerError(tt, expr, mw) { \ + struct errorParams errorParams; \ testingTLogf(t, "*** %s", #expr); \ - uiprivTestHookReportProgrammerError(catchProgrammerError); \ + uiprivTestHookReportProgrammerError(catchProgrammerError, &errorParams); \ errorParams.t = tt; \ errorParams.file = __FILE__; \ errorParams.line = __LINE__; \ @@ -48,7 +48,7 @@ extern void catchProgrammerError(const char *prefix, const char *msg, const char expr; \ if (!errorParams.caught) \ testingTErrorfFull(t, errorParams.file, errorParams.line, "%s did not throw a programmer error; should have", #expr); \ - uiprivTestHookReportProgrammerError(NULL); \ + uiprivTestHookReportProgrammerError(NULL, NULL); \ } // init.c