diff --git a/test/test-runner-win32.c b/test/test-runner-win32.c index 8236bff11..ed562b223 100644 --- a/test/test-runner-win32.c +++ b/test/test-runner-win32.c @@ -55,7 +55,7 @@ int process_start(char *name, process_info_t *p) { if (_snwprintf_s((wchar_t*)&args, sizeof(args) / sizeof(wchar_t), _TRUNCATE, - L"\"%s\" %S meh", + L"\"%s\" %S", image, name) < 0) goto error; @@ -95,7 +95,7 @@ error: /* Timeout is is msecs. Set timeout < 0 to never time out. */ -/* Returns 0 when all processes are terminated, -1 on timeout. */ +/* Returns 0 when all processes are terminated, -2 on timeout. */ int process_wait(process_info_t *vec, int n, int timeout) { int i; HANDLE handles[MAXIMUM_WAIT_OBJECTS]; @@ -138,7 +138,6 @@ long int process_output_size(process_info_t *p) { int process_copy_output(process_info_t *p, int fd) { - /* Any errors in this function are ignored */ DWORD read; char buf[1024]; @@ -162,7 +161,6 @@ char* process_get_name(process_info_t *p) { int process_terminate(process_info_t *p) { - /* If it fails the process is probably already closed. */ if (!TerminateProcess(p->process, 1)) return -1; return 0; diff --git a/test/test-runner-win32.h b/test/test-runner-win32.h index 620468ca4..11f199d61 100644 --- a/test/test-runner-win32.h +++ b/test/test-runner-win32.h @@ -1,5 +1,17 @@ +/* Don't complain about _snprintf being unsecure. */ +#define _CRT_SECURE_NO_WARNINGS + +/* Dont complain about write(), fileno() etc. being deprecated. */ +#pragma warning(disable : 4996) + + #include +#include + + +/* Windows has no snprintf, only _snprintf. */ +#define snprintf _snprintf typedef struct { @@ -7,4 +19,4 @@ typedef struct { HANDLE stdio_in; HANDLE stdio_out; char *name; -} process_info_t; +} process_info_t; \ No newline at end of file diff --git a/test/test-runner.c b/test/test-runner.c index 6d73a4b84..cfe69240a 100644 --- a/test/test-runner.c +++ b/test/test-runner.c @@ -39,12 +39,12 @@ int run_test(test_entry_t *test) { process_count = 0; - /* Start all helpers for this test first */ + /* Start all helpers for this test first. */ for (helper = (test_entry_t*)&TESTS; helper->main; helper++) { if (helper->is_helper && strcmp(test->test_name, helper->test_name) == 0) { if (process_start(helper->process_name, &processes[process_count]) == -1) { - sprintf_s((char*)&errmsg, sizeof(errmsg), "process `%s` failed to start.", helper->process_name); + snprintf((char*)&errmsg, sizeof(errmsg), "process `%s` failed to start.", helper->process_name); goto finalize; } process_count++; @@ -53,7 +53,7 @@ int run_test(test_entry_t *test) { /* Start the main test process. */ if (process_start(test->process_name, &processes[process_count]) == -1) { - sprintf_s((char*)&errmsg, sizeof(errmsg), "process `%s` failed to start.", test->process_name); + snprintf((char*)&errmsg, sizeof(errmsg), "process `%s` failed to start.", test->process_name); goto finalize; } main_process = &processes[process_count]; @@ -64,14 +64,14 @@ int run_test(test_entry_t *test) { if (result == -1) { FATAL("process_wait failed\n"); } else if (result == -2) { - sprintf_s((char*)&errmsg, sizeof(errmsg), "timeout."); + snprintf((char*)&errmsg, sizeof(errmsg), "timeout."); goto finalize; } - /* Reap main process */ + /* Reap the main process. */ result = process_reap(main_process); if (result != 0) { - sprintf_s((char*)&errmsg, sizeof(errmsg), "exit code %d.", result); + snprintf((char*)&errmsg, sizeof(errmsg), "exit code %d.", result); goto finalize; } @@ -81,6 +81,7 @@ int run_test(test_entry_t *test) { finalize: /* Kill all (helper) processes that are still running. */ for (i = 0; i < process_count; i++) + /* If terminate fails the process is probably already closed. */ process_terminate(&processes[i]); /* Wait until all processes have really terminated. */ @@ -128,11 +129,11 @@ int main(int argc, char **argv) { test_entry_t *test; #ifdef _WIN32 - /* On windows disable the "application crashed" popup */ + /* On windows disable the "application crashed" popup. */ SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOGPFAULTERRORBOX | SEM_NOOPENFILEERRORBOX); #endif - /* Disable output buffering */ + /* Disable stdio output buffering. */ setvbuf(stdout, NULL, _IONBF, 0); setvbuf(stderr, NULL, _IONBF, 0); @@ -146,7 +147,7 @@ int main(int argc, char **argv) { return 255; } else { - /* Count the number of tests */ + /* Count the number of tests. */ total = 0; test = (test_entry_t*)&TESTS; for (test = (test_entry_t*)&TESTS; test->main; test++) { @@ -154,7 +155,7 @@ int main(int argc, char **argv) { total++; } - /* Run all tests */ + /* Run all tests. */ passed = 0; failed = 0; test = (test_entry_t*)&TESTS; diff --git a/test/test-runner.h b/test/test-runner.h index be76b7ba0..c16599412 100644 --- a/test/test-runner.h +++ b/test/test-runner.h @@ -70,11 +70,11 @@ char* process_get_name(process_info_t *p); /* Terminate process `p`. */ int process_terminate(process_info_t *p); -/* Return the return value of process p. */ +/* Return the exit code of process p. */ /* On error, return -1. */ int process_reap(process_info_t *p); -/* Clean up after terminating process `p` (e.g. free the output buffer etc.) */ +/* Clean up after terminating process `p` (e.g. free the output buffer etc.). */ void process_cleanup(process_info_t *p); /* Move the console cursor one line up and back to the first column. */