Blob Blame History Raw
From 29ebd4a5ff5c0a0eefe802a4bcaa8ef32cc5795a Mon Sep 17 00:00:00 2001
From: Fabian Homborg <FHomborg@gmail.com>
Date: Sat, 13 Mar 2021 17:22:35 +0100
Subject: [PATCH] tests: Don't break when a file unexpectedly exists

Creating a file called "xfoo" could break the highlight tests because
we'd suddenly get a color with valid_path set to true.

So what we do is simply compare foreground/background and forced
underline, but only check for path validity if we're expecting a valid
path.

If we're not expecting a valid path, we don't fail whether it is there
or not.

This means that we can't check for a non-valid path, but we don't
currently do that anyway and we can just burn that bridge when we get
to it.

cc @siteshwar @krobelus, who both came across this
---
 src/fish_tests.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/fish_tests.cpp b/src/fish_tests.cpp
index 5f57f9e64..3f7777138 100644
--- a/src/fish_tests.cpp
+++ b/src/fish_tests.cpp
@@ -5386,7 +5386,16 @@ static void test_highlighting() {
             // Hackish space handling. We don't care about the colors in spaces.
             if (text.at(i) == L' ') continue;
 
-            if (expected_colors.at(i) != colors.at(i)) {
+            auto e = expected_colors.at(i);
+            auto c = colors.at(i);
+            // Compare the colors, but don't care about pathness
+            // unless we're asking for a valid path.
+            //
+            // That way stray files in the build directory don't break the test.
+            if (e.foreground != c.foreground
+                || e.background != c.background
+                || e.force_underline != c.force_underline
+                || (e.valid_path && !c.valid_path)) {
                 const wcstring spaces(i, L' ');
                 err(L"Wrong color in test at index %lu in text (expected %#x, actual "
                     L"%#x):\n%ls\n%ls^",
-- 
2.29.2