]> granicus.if.org Git - php/commitdiff
Make diff section contents red(-)/green(+) in run-tests.php
authorTyson Andre <tysonandre775@hotmail.com>
Sun, 9 Aug 2020 15:58:08 +0000 (11:58 -0400)
committerTyson Andre <tysonandre775@hotmail.com>
Mon, 10 Aug 2020 00:59:43 +0000 (20:59 -0400)
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

index 7d71b81610c2125609b451cd2e483646ec52512e..1498e3728104ddbcd130550256c4d2b3d003552c 100755 (executable)
@@ -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;