From 58489bd3b93e10c150933eefac05297b48213eb3 Mon Sep 17 00:00:00 2001 From: Tyson Andre Date: Sun, 9 Aug 2020 11:58:08 -0400 Subject: Make diff section contents red(-)/green(+) in run-tests.php This uses green for lines with `+` and red for lines with `-`. Colors(Red and Green) would make the failure causes stand out visually when scrolling through errors. Closes GH-5965 --- run-tests.php | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/run-tests.php b/run-tests.php index 7d71b81610..1498e37281 100755 --- a/run-tests.php +++ b/run-tests.php @@ -2877,6 +2877,7 @@ function count_array_diff( function generate_array_diff(array $ar1, array $ar2, bool $is_reg, array $w): array { + global $colorize; $idx1 = 0; $cnt1 = @count($ar1); $idx2 = 0; @@ -2885,6 +2886,25 @@ function generate_array_diff(array $ar1, array $ar2, bool $is_reg, array $w): ar $old1 = []; $old2 = []; + $format_expected_line = function (int $line_number, string $contents) use ($colorize): string { + $output = sprintf("%03d- ", $line_number) . $contents; + if ($colorize) { + // Reuse the colors used for `-` in other diff tools. + // Here, red should be interpreted as "removed", and not "bad". + return "\e[1;31m{$output}\e[0m"; + } + return $output; + }; + $format_actual_line = function (int $line_number, string $contents) use ($colorize): string { + $output = sprintf("%03d+ ", $line_number) . $contents; + if ($colorize) { + // Reuse the colors used for `+` in other diff tools. + // Here, green should be interpreted as "added", and not "good". + return "\e[1;32m{$output}\e[0m"; + } + return $output; + }; + while ($idx1 < $cnt1 && $idx2 < $cnt2) { if (comp_line($ar1[$idx1], $ar2[$idx2], $is_reg)) { $idx1++; @@ -2895,12 +2915,12 @@ function generate_array_diff(array $ar1, array $ar2, bool $is_reg, array $w): ar $c2 = @count_array_diff($ar1, $ar2, $is_reg, $w, $idx1, $idx2 + 1, $cnt1, $cnt2, 10); if ($c1 > $c2) { - $old1[$idx1] = sprintf("%03d- ", $idx1 + 1) . $w[$idx1++]; + $old1[$idx1] = $format_expected_line($idx1 + 1, $w[$idx1++]); } elseif ($c2 > 0) { - $old2[$idx2] = sprintf("%03d+ ", $idx2 + 1) . $ar2[$idx2++]; + $old2[$idx2] = $format_actual_line($idx2 + 1, $ar2[$idx2++]); } else { - $old1[$idx1] = sprintf("%03d- ", $idx1 + 1) . $w[$idx1++]; - $old2[$idx2] = sprintf("%03d+ ", $idx2 + 1) . $ar2[$idx2++]; + $old1[$idx1] = $format_expected_line($idx1 + 1, $w[$idx1++]); + $old2[$idx2] = $format_actual_line($idx2 + 1, $ar2[$idx2++]); } } } @@ -2933,11 +2953,11 @@ function generate_array_diff(array $ar1, array $ar2, bool $is_reg, array $w): ar } while ($idx1 < $cnt1) { - $diff[] = sprintf("%03d- ", $idx1 + 1) . $w[$idx1++]; + $diff[] = $format_expected_line($idx1 + 1, $w[$idx1++]); } while ($idx2 < $cnt2) { - $diff[] = sprintf("%03d+ ", $idx2 + 1) . $ar2[$idx2++]; + $diff[] = $format_actual_line($idx2 + 1, $ar2[$idx2++]); } return $diff; -- cgit v1.2.1