Commit a6d4335217

Andrew Kelley <superjoe30@gmail.com>
2016-02-04 07:07:55
fix running tests when linking with libc
1 parent 2521afe
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));
     }
 
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);
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;
+}
std/test_runner_nolibc.zig
@@ -0,0 +1,5 @@
+import "test_runner.zig";
+
+pub fn main(args: [][]u8) -> %void {
+    return run_tests();
+}
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"