From 401eed8153d909eda4146b5a1815dee7130cf1c3 Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Mon, 17 Apr 2017 06:58:36 -0400 Subject: [PATCH] build examples in ./run_tests closes #325 --- test/run_tests.cpp | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/test/run_tests.cpp b/test/run_tests.cpp index e6d14cf974..1a5b309a15 100644 --- a/test/run_tests.cpp +++ b/test/run_tests.cpp @@ -211,6 +211,28 @@ static TestCase *add_parseh_case(const char *case_name, AllowWarnings allow_warn return test_case; } +static TestCase *add_example_compile_extra(const char *root_source_file, bool libc) { + TestCase *test_case = allocate(1); + test_case->case_name = buf_ptr(buf_sprintf("build example %s", root_source_file)); + test_case->output = nullptr; + test_case->special = TestSpecialNone; + + test_case->compiler_args.append("build_exe"); + test_case->compiler_args.append(buf_ptr(buf_sprintf("../%s", root_source_file))); + + test_cases.append(test_case); + + return test_case; +} + +static TestCase *add_example_compile(const char *root_source_file) { + return add_example_compile_extra(root_source_file, false); +} + +static TestCase *add_example_compile_libc(const char *root_source_file) { + return add_example_compile_extra(root_source_file, true); +} + static void add_compiling_test_cases(void) { add_simple_case_libc("hello world with libc", R"SOURCE( const c = @cImport(@cInclude("stdio.h")); @@ -617,6 +639,15 @@ pub fn main() -> %void { } } +//////////////////////////////////////////////////////////////////////////////////// + +static void add_build_examples(void) { + add_example_compile("example/hello_world/hello.zig"); + add_example_compile_libc("example/hello_world/hello_libc.zig"); + add_example_compile("example/cat/main.zig"); + add_example_compile("example/guess_number/main.zig"); +} + //////////////////////////////////////////////////////////////////////////////////// @@ -2825,7 +2856,7 @@ static void run_test(TestCase *test_case) { exit(1); } - if (!buf_eql_str(&program_stdout, test_case->output)) { + if (test_case->output != nullptr && !buf_eql_str(&program_stdout, test_case->output)) { printf("\n"); print_compiler_invocation(test_case); print_exe_invocation(test_case); @@ -2887,6 +2918,7 @@ int main(int argc, char **argv) { } } add_compiling_test_cases(); + add_build_examples(); add_debug_safety_test_cases(); add_compile_failure_test_cases(); add_parse_error_tests();