diff --git a/CMakeLists.txt b/CMakeLists.txt index 30ab6795f..35a5abb41 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -57,6 +57,7 @@ set(TEST_SOURCES "${CMAKE_SOURCE_DIR}/src/buffer.cpp" "${CMAKE_SOURCE_DIR}/src/util.cpp" "${CMAKE_SOURCE_DIR}/src/os.cpp" + "${CMAKE_SOURCE_DIR}/src/error.cpp" "${CMAKE_SOURCE_DIR}/test/run_tests.cpp" ) diff --git a/test/run_tests.cpp b/test/run_tests.cpp index 2d78cd9a7..3a8a2ef62 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -8,6 +8,7 @@ #include "list.hpp" #include "buffer.hpp" #include "os.hpp" +#include "error.hpp" #include #include @@ -31,8 +32,16 @@ struct TestCase { static ZigList test_cases = {0}; static const char *tmp_source_path = ".tmp_source.zig"; static const char *tmp_h_path = ".tmp_header.h"; + +#if defined(_WIN32) +static const char *tmp_exe_path = "./.tmp_exe.exe"; +static const char *zig_exe = "./zig.exe"; +#define NL "\r\n" +#else static const char *tmp_exe_path = "./.tmp_exe"; static const char *zig_exe = "./zig"; +#define NL "\n" +#endif static void add_source_file(TestCase *test_case, const char *path, const char *source) { test_case->source_files.add_one(); @@ -137,7 +146,7 @@ export fn main(argc: c_int, argv: &&u8) -> c_int { puts(c"Hello, world!"); return 0; } - )SOURCE", "Hello, world!\n"); + )SOURCE", "Hello, world!" NL); add_simple_case("function call", R"SOURCE( import "std.zig"; @@ -1981,7 +1990,10 @@ static void run_test(TestCase *test_case) { Buf zig_stderr = BUF_INIT; Buf zig_stdout = BUF_INIT; int return_code; - os_exec_process(zig_exe, test_case->compiler_args, &return_code, &zig_stderr, &zig_stdout); + int err; + if ((err = os_exec_process(zig_exe, test_case->compiler_args, &return_code, &zig_stderr, &zig_stdout))) { + fprintf(stderr, "Unable to exec %s: %s\n", zig_exe, err_str(err)); + } if (!test_case->is_parseh && test_case->compile_errors.length) { if (return_code) {