During test, log to in-memory log
This commit is contained in:
@@ -2,9 +2,11 @@
|
|||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
static jmp_buf s_testJmp;
|
static jmp_buf s_testJmp;
|
||||||
static const char* s_failMsg;
|
static const char* s_failMsg;
|
||||||
|
static char* s_logOutput = NULL;
|
||||||
|
|
||||||
void fail(const char* msg) {
|
void fail(const char* msg) {
|
||||||
s_failMsg = msg;
|
s_failMsg = msg;
|
||||||
@@ -23,6 +25,27 @@ void assert_str(const char* expected, const char* actual, const char* msg) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void log_append(const char* msg) {
|
||||||
|
size_t oldLen = s_logOutput ? strlen(s_logOutput) : 0;
|
||||||
|
size_t newLen = oldLen + strlen(msg) + 1;
|
||||||
|
char* newOutput = malloc(newLen);
|
||||||
|
if (newOutput) {
|
||||||
|
if (s_logOutput) {
|
||||||
|
strcpy(newOutput, s_logOutput);
|
||||||
|
free(s_logOutput);
|
||||||
|
} else {
|
||||||
|
newOutput[0] = '\0';
|
||||||
|
}
|
||||||
|
strcat(newOutput, msg);
|
||||||
|
s_logOutput = newOutput;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void log_clear() {
|
||||||
|
free(s_logOutput);
|
||||||
|
s_logOutput = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
const char* name;
|
const char* name;
|
||||||
Test func;
|
Test func;
|
||||||
@@ -59,11 +82,14 @@ int main(int argc, char** argv) {
|
|||||||
const char* failedTests[s_totalTests + 1];
|
const char* failedTests[s_totalTests + 1];
|
||||||
int failedCount = 0;
|
int failedCount = 0;
|
||||||
|
|
||||||
|
log_set_output(log_append);
|
||||||
|
|
||||||
for (int i = 0; i < s_totalTests; i++) {
|
for (int i = 0; i < s_totalTests; i++) {
|
||||||
printf("%s...", s_tests[i].name);
|
printf("%s...", s_tests[i].name);
|
||||||
s_failMsg = NULL;
|
s_failMsg = NULL;
|
||||||
|
|
||||||
if (setjmp(s_testJmp) == 0) {
|
if (setjmp(s_testJmp) == 0) {
|
||||||
|
log_clear();
|
||||||
s_tests[i].func();
|
s_tests[i].func();
|
||||||
printf(" [OK]\n");
|
printf(" [OK]\n");
|
||||||
s_greenTests++;
|
s_greenTests++;
|
||||||
|
|||||||
Reference in New Issue
Block a user