diff options
| author | Mosder <git@mosder.eu> | 2026-10-13 17:44:16 +0200 |
|---|---|---|
| committer | Mosder <git@mosder.eu> | 2026-10-13 17:44:16 +0200 |
| commit | 7698b0c7774f89b8329e898b534329f7a945cbd0 (patch) | |
| tree | 56d378f868118909eeba19ab118fdf3553f54ba6 /src/tester.c | |
| parent | 2b01cab2df7273dad7f95c4349929a28331338c2 (diff) | |
refactor: changed API in tester, so the output related functions use FILE * streams insted of file descriptors
Diffstat (limited to 'src/tester.c')
| -rw-r--r-- | src/tester.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/tester.c b/src/tester.c index b6f6fa8..c027811 100644 --- a/src/tester.c +++ b/src/tester.c @@ -5,7 +5,6 @@ #include <stddef.h> #include <stdint.h> -#include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/wait.h> @@ -149,19 +148,24 @@ void mos_test_assert_exit_fn(MosTestFn function, int code, const char *name) { } void mos_test_assert_out_fn( - MosTestFn function, int fd, const char *output, const char *fn_name, const char *fd_name + MosTestFn function, + FILE *stream, + const char *output, + const char *fn_name, + const char *stream_name ) { size_t n = strlen(output); char *out = mos_safe_calloc(n + 2, 1); FILE *tmp = mos_safe_tmpfile(); + int fd = fileno(stream); int og = mos_safe_dup(fd); - fflush(NULL); + fflush(stream); mos_safe_dup2(fileno(tmp), fd); function(); - fflush(NULL); + fflush(stream); lseek(fd, 0, SEEK_SET); read(fd, out, n + 1); fclose(tmp); @@ -172,26 +176,26 @@ void mos_test_assert_out_fn( if (strcmp(out, output)) { failed = 1; print_color(RED, "ASSERT FAILED: "); - printf("function %s outputed to %s:\n", fn_name, fd_name); + printf("function %s outputed to %s:\n", fn_name, stream_name); printf(" %s (capped at %zu chars)\n", out, n + 1); printf(" expected: %s\n", output); } free(out); } -void mos_suppress_output_fn(int fd) { +void mos_suppress_output_fn(FILE *stream) { if (!suppressed.outs || suppressed.n_outs >= suppressed.out_cap) { while (suppressed.n_outs >= suppressed.out_cap) suppressed.out_cap *= 2; suppressed.outs = mos_safe_realloc(suppressed.outs, suppressed.out_cap * sizeof(int)); suppressed.ogs = mos_safe_realloc(suppressed.ogs, suppressed.out_cap * sizeof(int)); } + int fd = fileno(stream); suppressed.outs[suppressed.n_outs] = fd; suppressed.ogs[suppressed.n_outs++] = mos_safe_dup(fd); - if (dev_null == NULL) { + if (dev_null == NULL) dev_null = mos_safe_tmpfile(); - } fflush(NULL); mos_safe_dup2(fileno(dev_null), fd); |
