From 29ebd4a5ff5c0a0eefe802a4bcaa8ef32cc5795a Mon Sep 17 00:00:00 2001 From: Fabian Homborg 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