authorgravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-08-26 23:18:47+01:00
committergravatar for mlugg@mlugg.co.ukMatthew Lugg <mlugg@mlugg.co.uk> 2025-10-18 09:28:42+01:00
log263e7fe87ade0f57f8d7a9eba82734ec99630696
tree8f723c18af497953d2b6a61bf44ff706e7fd5ae8
parent75adbf40ca1bd607b11f73513667e81d2b341690
signaturelock-open Commit is signed but in an unrecognized format.

build runner: final tweaks to output


1 files changed, 65 insertions(+), 28 deletions(-)

lib/compiler/build_runner.zig+65-28
......@@ -862,18 +862,47 @@ fn runStepNames(
862862
863863 const total_count = success_count + failure_count + pending_count + skipped_count;
864864 ttyconf.setColor(w, .cyan) catch {};
865 w.writeAll("Build Summary:") catch {};
865 ttyconf.setColor(w, .bold) catch {};
866 w.writeAll("Build Summary: ") catch {};
866867 ttyconf.setColor(w, .reset) catch {};
867 w.print(" {d}/{d} steps succeeded", .{ success_count, total_count }) catch {};
868 if (skipped_count > 0) w.print(", {d} skipped", .{skipped_count}) catch {};
869 if (failure_count > 0) w.print(", {d} failed", .{failure_count}) catch {};
868 w.print("{d}/{d} steps succeeded", .{ success_count, total_count }) catch {};
869 {
870 ttyconf.setColor(w, .dim) catch {};
871 var first = true;
872 if (skipped_count > 0) {
873 w.print("{s}{d} skipped", .{ if (first) " (" else ", ", skipped_count }) catch {};
874 first = false;
875 }
876 if (failure_count > 0) {
877 w.print("{s}{d} failed", .{ if (first) " (" else ", ", failure_count }) catch {};
878 first = false;
879 }
880 if (!first) w.writeByte(')') catch {};
881 ttyconf.setColor(w, .reset) catch {};
882 }
870883
871884 if (test_count > 0) {
872885 w.print("; {d}/{d} tests passed", .{ test_pass_count, test_count }) catch {};
873 if (test_skip_count > 0) w.print(", {d} skipped", .{test_skip_count}) catch {};
874 if (test_fail_count > 0) w.print(", {d} failed", .{test_fail_count}) catch {};
875 if (test_crash_count > 0) w.print(", {d} crashed", .{test_crash_count}) catch {};
876 if (test_timeout_count > 0) w.print(", {d} timed out", .{test_timeout_count}) catch {};
886 ttyconf.setColor(w, .dim) catch {};
887 var first = true;
888 if (test_skip_count > 0) {
889 w.print("{s}{d} skipped", .{ if (first) " (" else ", ", test_skip_count }) catch {};
890 first = false;
891 }
892 if (test_fail_count > 0) {
893 w.print("{s}{d} failed", .{ if (first) " (" else ", ", test_fail_count }) catch {};
894 first = false;
895 }
896 if (test_crash_count > 0) {
897 w.print("{s}{d} crashed", .{ if (first) " (" else ", ", test_crash_count }) catch {};
898 first = false;
899 }
900 if (test_timeout_count > 0) {
901 w.print("{s}{d} timed out", .{ if (first) " (" else ", ", test_timeout_count }) catch {};
902 first = false;
903 }
904 if (!first) w.writeByte(')') catch {};
905 ttyconf.setColor(w, .reset) catch {};
877906 }
878907
879908 w.writeAll("\n") catch {};
......@@ -978,14 +1007,14 @@ fn printStepStatus(
9781007 } else if (s.test_results.test_count > 0) {
9791008 const pass_count = s.test_results.passCount();
9801009 assert(s.test_results.test_count == pass_count + s.test_results.skip_count);
981 try stderr.print(" {d} passed", .{pass_count});
1010 try stderr.print(" {d} pass", .{pass_count});
9821011 if (s.test_results.skip_count > 0) {
983 try ttyconf.setColor(stderr, .white);
1012 try ttyconf.setColor(stderr, .reset);
9841013 try stderr.writeAll(", ");
9851014 try ttyconf.setColor(stderr, .yellow);
986 try stderr.print("{d} skipped", .{s.test_results.skip_count});
1015 try stderr.print("{d} skip", .{s.test_results.skip_count});
9871016 }
988 try ttyconf.setColor(stderr, .white);
1017 try ttyconf.setColor(stderr, .reset);
9891018 try stderr.print(" ({d} total)", .{s.test_results.test_count});
9901019 } else {
9911020 try stderr.writeAll(" success");
......@@ -1035,7 +1064,7 @@ fn printStepStatus(
10351064 try ttyconf.setColor(stderr, .reset);
10361065 },
10371066 .failure => {
1038 try printStepFailure(s, stderr, ttyconf);
1067 try printStepFailure(s, stderr, ttyconf, false);
10391068 try ttyconf.setColor(stderr, .reset);
10401069 },
10411070 }
......@@ -1045,6 +1074,7 @@ fn printStepFailure(
10451074 s: *Step,
10461075 stderr: *Writer,
10471076 ttyconf: tty.Config,
1077 dim: bool,
10481078) !void {
10491079 if (s.result_error_bundle.errorMessageCount() > 0) {
10501080 try ttyconf.setColor(stderr, .red);
......@@ -1055,43 +1085,49 @@ fn printStepFailure(
10551085 // These first values include all of the test "statuses". Every test is either passsed,
10561086 // skipped, failed, crashed, or timed out.
10571087 try ttyconf.setColor(stderr, .green);
1058 try stderr.print(" {d} passed", .{s.test_results.passCount()});
1059 try ttyconf.setColor(stderr, .white);
1088 try stderr.print(" {d} pass", .{s.test_results.passCount()});
1089 try ttyconf.setColor(stderr, .reset);
1090 if (dim) try ttyconf.setColor(stderr, .dim);
10601091 if (s.test_results.skip_count > 0) {
10611092 try stderr.writeAll(", ");
10621093 try ttyconf.setColor(stderr, .yellow);
1063 try stderr.print("{d} skipped", .{s.test_results.skip_count});
1064 try ttyconf.setColor(stderr, .white);
1094 try stderr.print("{d} skip", .{s.test_results.skip_count});
1095 try ttyconf.setColor(stderr, .reset);
1096 if (dim) try ttyconf.setColor(stderr, .dim);
10651097 }
10661098 if (s.test_results.fail_count > 0) {
10671099 try stderr.writeAll(", ");
10681100 try ttyconf.setColor(stderr, .red);
1069 try stderr.print("{d} failed", .{s.test_results.fail_count});
1070 try ttyconf.setColor(stderr, .white);
1101 try stderr.print("{d} fail", .{s.test_results.fail_count});
1102 try ttyconf.setColor(stderr, .reset);
1103 if (dim) try ttyconf.setColor(stderr, .dim);
10711104 }
10721105 if (s.test_results.crash_count > 0) {
10731106 try stderr.writeAll(", ");
10741107 try ttyconf.setColor(stderr, .red);
1075 try stderr.print("{d} crashed", .{s.test_results.crash_count});
1076 try ttyconf.setColor(stderr, .white);
1108 try stderr.print("{d} crash", .{s.test_results.crash_count});
1109 try ttyconf.setColor(stderr, .reset);
1110 if (dim) try ttyconf.setColor(stderr, .dim);
10771111 }
10781112 if (s.test_results.timeout_count > 0) {
10791113 try stderr.writeAll(", ");
10801114 try ttyconf.setColor(stderr, .red);
1081 try stderr.print("{d} timed out", .{s.test_results.timeout_count});
1082 try ttyconf.setColor(stderr, .white);
1115 try stderr.print("{d} timeout", .{s.test_results.timeout_count});
1116 try ttyconf.setColor(stderr, .reset);
1117 if (dim) try ttyconf.setColor(stderr, .dim);
10831118 }
10841119 try stderr.print(" ({d} total)", .{s.test_results.test_count});
10851120
10861121 // Memory leaks are intentionally written after the total, because is isn't a test *status*,
10871122 // but just a flag that any tests -- even passed ones -- can have. We also use a different
10881123 // separator, so it looks like:
1089 // 2 passed, 1 skipped, 2 failed (5 total); 2 leaks
1124 // 2 pass, 1 skip, 2 fail (5 total); 2 leaks
10901125 if (s.test_results.leak_count > 0) {
10911126 try stderr.writeAll("; ");
10921127 try ttyconf.setColor(stderr, .red);
10931128 try stderr.print("{d} leaks", .{s.test_results.leak_count});
1094 try ttyconf.setColor(stderr, .white);
1129 try ttyconf.setColor(stderr, .reset);
1130 if (dim) try ttyconf.setColor(stderr, .dim);
10951131 }
10961132
10971133 // It's usually not helpful to know how many error logs there were because they tend to
......@@ -1107,7 +1143,8 @@ fn printStepFailure(
11071143 try stderr.writeAll("; ");
11081144 try ttyconf.setColor(stderr, .red);
11091145 try stderr.print("{d} error logs", .{s.test_results.log_err_count});
1110 try ttyconf.setColor(stderr, .white);
1146 try ttyconf.setColor(stderr, .reset);
1147 if (dim) try ttyconf.setColor(stderr, .dim);
11111148 }
11121149
11131150 try stderr.writeAll("\n");
......@@ -1422,7 +1459,7 @@ pub fn printErrorMessages(
14221459 try stderr.writeAll(s.name);
14231460
14241461 if (s == failing_step) {
1425 try printStepFailure(s, stderr, ttyconf);
1462 try printStepFailure(s, stderr, ttyconf, true);
14261463 } else {
14271464 try stderr.writeAll("\n");
14281465 }
......@@ -1432,7 +1469,7 @@ pub fn printErrorMessages(
14321469 // Just print the failing step itself.
14331470 try ttyconf.setColor(stderr, .dim);
14341471 try stderr.writeAll(failing_step.name);
1435 try printStepFailure(failing_step, stderr, ttyconf);
1472 try printStepFailure(failing_step, stderr, ttyconf, true);
14361473 try ttyconf.setColor(stderr, .reset);
14371474 }
14381475