From a6d43352175ac49ee180592055d56101fe20b83a Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Wed, 3 Feb 2016 23:07:55 -0700 Subject: [PATCH] fix running tests when linking with libc --- CMakeLists.txt | 2 ++ src/codegen.cpp | 5 ++++- std/test_runner.zig | 2 +- std/test_runner_libc.zig | 6 ++++++ std/test_runner_nolibc.zig | 5 +++++ 5 files changed, 18 insertions(+), 2 deletions(-) create mode 100644 std/test_runner_libc.zig create mode 100644 std/test_runner_nolibc.zig diff --git a/CMakeLists.txt b/CMakeLists.txt index 152a47edfb..bfa78ce278 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,6 +123,8 @@ set(ZIG_STD_SRC "${CMAKE_SOURCE_DIR}/std/bootstrap.zig" "${CMAKE_SOURCE_DIR}/std/builtin.zig" "${CMAKE_SOURCE_DIR}/std/test_runner.zig" + "${CMAKE_SOURCE_DIR}/std/test_runner_libc.zig" + "${CMAKE_SOURCE_DIR}/std/test_runner_nolibc.zig" "${CMAKE_SOURCE_DIR}/std/std.zig" "${CMAKE_SOURCE_DIR}/std/syscall.zig" "${CMAKE_SOURCE_DIR}/std/errno.zig" diff --git a/src/codegen.cpp b/src/codegen.cpp index cfae4da2a1..ba72aa69d8 100644 --- a/src/codegen.cpp +++ b/src/codegen.cpp @@ -3847,6 +3847,8 @@ static Buf *build_o(CodeGen *parent_gen, const char *oname) { Buf *std_dir_path = buf_create_from_str(ZIG_STD_DIR); CodeGen *child_gen = codegen_create(std_dir_path); + child_gen->link_libc = parent_gen->link_libc; + codegen_set_is_release(child_gen, parent_gen->is_release_build); codegen_set_strip(child_gen, parent_gen->strip_debug_symbols); @@ -3978,7 +3980,8 @@ void codegen_link(CodeGen *g, const char *out_file) { } if (g->is_test_build) { - Buf *test_runner_o_path = build_o(g, "test_runner"); + const char *test_runner_name = g->link_libc ? "test_runner_libc" : "test_runner_nolibc"; + Buf *test_runner_o_path = build_o(g, test_runner_name); args.append(buf_ptr(test_runner_o_path)); } diff --git a/std/test_runner.zig b/std/test_runner.zig index 3ad1a9c3b9..da407035fc 100644 --- a/std/test_runner.zig +++ b/std/test_runner.zig @@ -7,7 +7,7 @@ struct TestFn { extern var zig_test_fn_list: []TestFn; -pub fn main(args: [][]u8) -> %void { +pub fn run_tests() -> %void { for (test_fn, zig_test_fn_list, i) { %%stderr.print_str("Test "); %%stderr.print_i64(i + 1); diff --git a/std/test_runner_libc.zig b/std/test_runner_libc.zig new file mode 100644 index 0000000000..9f7c9e7faa --- /dev/null +++ b/std/test_runner_libc.zig @@ -0,0 +1,6 @@ +import "test_runner.zig"; + +export fn main(argc: c_int, argv: &&u8) -> c_int { + run_tests() %% return -1; + return 0; +} diff --git a/std/test_runner_nolibc.zig b/std/test_runner_nolibc.zig new file mode 100644 index 0000000000..4e27ca551b --- /dev/null +++ b/std/test_runner_nolibc.zig @@ -0,0 +1,5 @@ +import "test_runner.zig"; + +pub fn main(args: [][]u8) -> %void { + return run_tests(); +}