Piped the actual file/line through to testingRunWithTimeout().

This commit is contained in:
Pietro Gagliardi 2019-04-28 13:26:15 -04:00
parent 64478bd5b0
commit e03021a350
4 changed files with 16 additions and 14 deletions

View File

@ -1,18 +1,11 @@
// 10 april 2019 // 10 april 2019
#include "test.h" #include "test.h"
static void timeoutMain(testingT *t, void *data) void timeoutMain(testingT *t, void *data)
{ {
uiMain(); uiMain();
} }
void timeout_uiMain(testingT *t, int64_t timeout, int failNowOnError)
{
testingRunWithTimeout(t, timeout,
timeoutMain, NULL,
"uiMain()", failNowOnError);
}
int main(void) int main(void)
{ {
return testingMain(); return testingMain();

View File

@ -3,4 +3,8 @@
#include "testing.h" #include "testing.h"
// main.c // main.c
extern void timeout_uiMain(testingT *t, int64_t timeout, int failNowOnError); extern void timeoutMain(testingT *t, void *data);
#define timeout_uiMain(t, timeout, failNowOnError) \
testingRunWithTimeout(t, timeout, \
timeoutMain, NULL, \
"uiMain()", failNowOnError);

View File

@ -78,7 +78,8 @@ extern int64_t testingTimerNsec(testingTimer *t);
extern char *testingNsecString(int64_t nsec); extern char *testingNsecString(int64_t nsec);
extern void testingFreeNsecString(char *s); extern void testingFreeNsecString(char *s);
extern void testingRunWithTimeout(testingT *t, int64_t timeout, void (*f)(testingT *t, void *data), void *data, const char *comment, int failNowOnError); #define testingRunWithTimeout(t, timeout, f, data, comment, failNowOnError) \
testingprivRunWithTimeout(t, __FILE__, __LINE__, timeout, f, data, comment, failNowOnError)
extern void testingprivRegisterTest(const char *, void (*)(testingT *), const char *, long); extern void testingprivRegisterTest(const char *, void (*)(testingT *), const char *, long);
extern void testingprivRegisterTestBefore(const char *, void (*)(testingT *), const char *, long); extern void testingprivRegisterTestBefore(const char *, void (*)(testingT *), const char *, long);
@ -89,3 +90,4 @@ extern void testingprivRegisterTestAfter(const char *, void (*)(testingT *), con
#define testingprivTLogvfThen(then, t, format, ap) ((testingprivTLogvfFull(t, __FILE__, __LINE__, format, ap)), (then(t))) #define testingprivTLogvfThen(then, t, format, ap) ((testingprivTLogvfFull(t, __FILE__, __LINE__, format, ap)), (then(t)))
extern void testingprivTLogfFull(testingT *, const char *, long, const char *, ...); extern void testingprivTLogfFull(testingT *, const char *, long, const char *, ...);
extern void testingprivTLogvfFull(testingT *, const char *, long, const char *, va_list); extern void testingprivTLogvfFull(testingT *, const char *, long, const char *, va_list);
extern void testingprivRunWithTimeout(testingT *, const char *, long, int64_t, void (*)(testingT *, void *), void *, const char *, int);

View File

@ -14,7 +14,7 @@ static void onTimeout(int sig)
longjmp(timeout_ret, 1); longjmp(timeout_ret, 1);
} }
void testingRunWithTimeout(testingT *t, int64_t timeout, void (*f)(testingT *t, void *data), void *data, const char *comment, int failNowOnError) void testingprivRunWithTimeout(testingT *t, const char *file, long line, int64_t timeout, void (*f)(testingT *t, void *data), void *data, const char *comment, int failNowOnError)
{ {
char *timeoutstr; char *timeoutstr;
sig_t prevsig; sig_t prevsig;
@ -30,15 +30,18 @@ void testingRunWithTimeout(testingT *t, int64_t timeout, void (*f)(testingT *t,
timer.it_value.tv_usec = (timeout % testingNsecPerSec) / testingNsecPerUsec; timer.it_value.tv_usec = (timeout % testingNsecPerSec) / testingNsecPerUsec;
if (setitimer(ITIMER_REAL, &timer, &prevtimer) != 0) { if (setitimer(ITIMER_REAL, &timer, &prevtimer) != 0) {
setitimerError = errno; setitimerError = errno;
testingTErrorf(t, "error applying %s timeout: %s", comment, strerror(setitimerError)); testingprivTLogfFull(t, file, line, "error applying %s timeout: %s", comment, strerror(setitimerError));
testingTFail(t);
goto out; goto out;
} }
if (setjmp(timeout_ret) == 0) { if (setjmp(timeout_ret) == 0) {
(*f)(t, data); (*f)(t, data);
failNowOnError = 0; // we succeeded failNowOnError = 0; // we succeeded
} else } else {
testingTErrorf(t, "%s timeout passed (%s)", comment, timeoutstr); testingprivTLogfFull(t, file, line, "%s timeout passed (%s)", comment, timeoutstr);
testingTFail(t);
}
out: out:
if (setitimerError == 0) if (setitimerError == 0)