authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-01 15:34:17-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2019-05-01 15:34:36-04:00
log6e4f69a54a976efd2d5203a848deeffcd7891f62
treea51f8f79cc4a7fccae751d83a73d3e3abeffa761
parent54a93e53935d7c7a7702849d66182fa6e9670b6e
signaturelock-open Commit is signed but in an unrecognized format.

docgen: add exe_build_err tag


1 files changed, 38 insertions(+), 0 deletions(-)

doc/docgen.zig+38
...@@ -265,6 +265,7 @@ const SeeAlsoItem = struct {...@@ -265,6 +265,7 @@ const SeeAlsoItem = struct {
265const ExpectedOutcome = enum {265const ExpectedOutcome = enum {
266 Succeed,266 Succeed,
267 Fail,267 Fail,
268 BuildFail,
268};269};
269270
270const Code = struct {271const Code = struct {
...@@ -468,6 +469,8 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {...@@ -468,6 +469,8 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc {
468 code_kind_id = Code.Id{ .Exe = ExpectedOutcome.Succeed };469 code_kind_id = Code.Id{ .Exe = ExpectedOutcome.Succeed };
469 } else if (mem.eql(u8, code_kind_str, "exe_err")) {470 } else if (mem.eql(u8, code_kind_str, "exe_err")) {
470 code_kind_id = Code.Id{ .Exe = ExpectedOutcome.Fail };471 code_kind_id = Code.Id{ .Exe = ExpectedOutcome.Fail };
472 } else if (mem.eql(u8, code_kind_str, "exe_build_err")) {
473 code_kind_id = Code.Id{ .Exe = ExpectedOutcome.BuildFail };
471 } else if (mem.eql(u8, code_kind_str, "test")) {474 } else if (mem.eql(u8, code_kind_str, "test")) {
472 code_kind_id = Code.Id.Test;475 code_kind_id = Code.Id.Test;
473 } else if (mem.eql(u8, code_kind_str, "test_err")) {476 } else if (mem.eql(u8, code_kind_str, "test_err")) {
...@@ -1025,6 +1028,8 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var...@@ -1025,6 +1028,8 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
1025 tmp_dir_name,1028 tmp_dir_name,
1026 "--name",1029 "--name",
1027 code.name,1030 code.name,
1031 "--color",
1032 "on",
1028 });1033 });
1029 try out.print("<pre><code class=\"shell\">$ zig build-exe {}.zig", code.name);1034 try out.print("<pre><code class=\"shell\">$ zig build-exe {}.zig", code.name);
1030 switch (code.mode) {1035 switch (code.mode) {
...@@ -1060,6 +1065,39 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var...@@ -1060,6 +1065,39 @@ fn genHtml(allocator: *mem.Allocator, tokenizer: *Tokenizer, toc: *Toc, out: var
1060 if (code.target_str) |triple| {1065 if (code.target_str) |triple| {
1061 try build_args.appendSlice([][]const u8{ "-target", triple });1066 try build_args.appendSlice([][]const u8{ "-target", triple });
1062 }1067 }
1068 if (expected_outcome == .BuildFail) {
1069 const result = try os.ChildProcess.exec(
1070 allocator,
1071 build_args.toSliceConst(),
1072 null,
1073 &env_map,
1074 max_doc_file_size,
1075 );
1076 switch (result.term) {
1077 os.ChildProcess.Term.Exited => |exit_code| {
1078 if (exit_code == 0) {
1079 warn("{}\nThe following command incorrectly succeeded:\n", result.stderr);
1080 for (build_args.toSliceConst()) |arg|
1081 warn("{} ", arg)
1082 else
1083 warn("\n");
1084 return parseError(tokenizer, code.source_token, "example incorrectly compiled");
1085 }
1086 },
1087 else => {
1088 warn("{}\nThe following command crashed:\n", result.stderr);
1089 for (build_args.toSliceConst()) |arg|
1090 warn("{} ", arg)
1091 else
1092 warn("\n");
1093 return parseError(tokenizer, code.source_token, "example compile crashed");
1094 },
1095 }
1096 const escaped_stderr = try escapeHtml(allocator, result.stderr);
1097 const colored_stderr = try termColor(allocator, escaped_stderr);
1098 try out.print("\n{}</code></pre>\n", colored_stderr);
1099 break :code_block;
1100 }
1063 _ = exec(allocator, &env_map, build_args.toSliceConst()) catch return parseError(tokenizer, code.source_token, "example failed to compile");1101 _ = exec(allocator, &env_map, build_args.toSliceConst()) catch return parseError(tokenizer, code.source_token, "example failed to compile");
10641102
1065 if (code.target_str) |triple| {1103 if (code.target_str) |triple| {