authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-07 10:14:16-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2016-05-07 10:14:16-07:00
log6f0f357ee43fc02ad2dc1eb44ab127c0d741282c
tree09ea3e8200ab19cd5441648372580b2b7501796f
parent8c79438f6b76f1ad4b4941cdb46ae1e7aa12ce14

self hosted tests test release mode too

closes #69

2 files changed, 26 insertions(+), 9 deletions(-)

src/codegen.cpp+1-1
......@@ -2609,7 +2609,7 @@ static LLVMValueRef gen_container_init_expr(CodeGen *g, AstNode *node) {
26092609 } else if (type_entry->id == TypeTableEntryIdUnreachable) {
26102610 assert(node->data.container_init_expr.entries.length == 0);
26112611 set_debug_source_node(g, node);
2612 if (want_debug_safety(g, node)) {
2612 if (want_debug_safety(g, node) || g->is_test_build) {
26132613 gen_debug_safety_crash(g);
26142614 } else {
26152615 LLVMBuildUnreachable(g->builder);
test/run_tests.cpp+25-8
......@@ -27,6 +27,7 @@ struct TestCase {
2727 ZigList<const char *> program_args;
2828 bool is_parseh;
2929 bool is_self_hosted;
30 bool is_release_mode;
3031 bool is_debug_safety;
3132};
3233
......@@ -1623,28 +1624,44 @@ struct type {
16231624})", R"(pub const @"type" = struct_type;)");
16241625}
16251626
1626static void run_self_hosted_test(void) {
1627static void run_self_hosted_test(bool is_release_mode) {
16271628 Buf zig_stderr = BUF_INIT;
16281629 Buf zig_stdout = BUF_INIT;
16291630 int return_code;
16301631 ZigList<const char *> args = {0};
16311632 args.append("test");
16321633 args.append("../test/self_hosted.zig");
1634 if (is_release_mode) {
1635 args.append("--release");
1636 }
16331637 os_exec_process(zig_exe, args, &return_code, &zig_stderr, &zig_stdout);
16341638
16351639 if (return_code) {
16361640 printf("\nSelf-hosted tests failed:\n");
1637 printf("./zig test ../test/self_hosted.zig\n");
1638 printf("%s\n", buf_ptr(&zig_stderr));
1641 printf("./zig");
1642 for (int i = 0; i < args.length; i += 1) {
1643 printf(" %s", args.at(i));
1644 }
1645 printf("\n%s\n", buf_ptr(&zig_stderr));
16391646 exit(1);
16401647 }
16411648}
16421649
16431650static void add_self_hosted_tests(void) {
1644 TestCase *test_case = allocate<TestCase>(1);
1645 test_case->case_name = "self hosted tests";
1646 test_case->is_self_hosted = true;
1647 test_cases.append(test_case);
1651 {
1652 TestCase *test_case = allocate<TestCase>(1);
1653 test_case->case_name = "self hosted tests (debug)";
1654 test_case->is_self_hosted = true;
1655 test_case->is_release_mode = false;
1656 test_cases.append(test_case);
1657 }
1658 {
1659 TestCase *test_case = allocate<TestCase>(1);
1660 test_case->case_name = "self hosted tests (release)";
1661 test_case->is_self_hosted = true;
1662 test_case->is_release_mode = true;
1663 test_cases.append(test_case);
1664 }
16481665}
16491666
16501667static void print_compiler_invocation(TestCase *test_case) {
......@@ -1665,7 +1682,7 @@ static void print_exe_invocation(TestCase *test_case) {
16651682
16661683static void run_test(TestCase *test_case) {
16671684 if (test_case->is_self_hosted) {
1668 return run_self_hosted_test();
1685 return run_self_hosted_test(test_case->is_release_mode);
16691686 }
16701687
16711688 for (int i = 0; i < test_case->source_files.length; i += 1) {