71 lines
1.7 KiB
C
71 lines
1.7 KiB
C
// 10 april 2019
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include "test.h"
|
|
|
|
void timeoutMain(void *data)
|
|
{
|
|
uiMain();
|
|
}
|
|
|
|
struct errorParams errorParams;
|
|
|
|
void catchProgrammerError(const char *prefix, const char *msg, const char *suffix, bool internal)
|
|
{
|
|
errorParams.caught = true;
|
|
if (strstr(prefix, "programmer error") == NULL)
|
|
testingTErrorf(errorParams.t, "%s prefix string doesn't contain \"programmer error\": %s", errorParams.exprstr, prefix);
|
|
if (internal)
|
|
testingTErrorf(errorParams.t, "%s error is marked internal; should not have been", errorParams.exprstr);
|
|
if (strstr(msg, errorParams.msgWant) == NULL)
|
|
diff_2str(errorParams.t, errorParams.exprstr, "message doesn't contain expected substring",
|
|
"%s", msg, errorParams.msgWant);
|
|
}
|
|
|
|
static void runSetORingResults(testingSet *set, const struct testingOptions *options, int *anyRun, int *anyFailed)
|
|
{
|
|
int ar, af;
|
|
|
|
testingSetRun(set, options, &ar, &af);
|
|
if (ar)
|
|
*anyRun = 1;
|
|
if (af)
|
|
*anyFailed = 1;
|
|
}
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
testingOptions opts;
|
|
int anyRun = 0, anyFailed = 0;
|
|
uiInitError err;
|
|
int ret;
|
|
|
|
memset(&opts, 0, sizeof (testingOptions));
|
|
if (argc == 2 && strcmp(argv[1], "-v") == 0)
|
|
opts.Verbose = 1;
|
|
else if (argc != 1) {
|
|
fprintf(stderr, "usage: %s [-v]\n", argv[0]);
|
|
return 1;
|
|
}
|
|
|
|
runSetORingResults(beforeTests, &opts, &anyRun, &anyFailed);
|
|
memset(&err, 0, sizeof (uiInitError));
|
|
err.Size = sizeof (uiInitError);
|
|
ret = uiInit(NULL, &err);
|
|
if (ret == 0) {
|
|
fprintf(stderr, "uiInit() failed: %s; can't continue\n", err.Message);
|
|
printf("FAIL\n");
|
|
return 1;
|
|
}
|
|
runSetORingResults(NULL, &opts, &anyRun, &anyFailed);
|
|
|
|
if (!anyRun)
|
|
fprintf(stderr, "warning: no tests to run\n");
|
|
if (anyFailed) {
|
|
printf("FAIL\n");
|
|
return 1;
|
|
}
|
|
printf("PASS\n");
|
|
return 0;
|
|
}
|