From 8878f90323f7229b391f18e467113cb654fbdc06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Ho=C5=99e=C5=88ovsk=C3=BD?= Date: Thu, 22 Oct 2020 16:17:34 +0200 Subject: [PATCH] Fix matching of non-lowercase filename tags The bug was caused by forgetting to lower-case the filename tag for matching against test spec. Fixes #2064 --- src/catch2/catch_test_case_info.cpp | 3 +++ tests/CMakeLists.txt | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/catch2/catch_test_case_info.cpp b/src/catch2/catch_test_case_info.cpp index a20bc791..e8029e9c 100644 --- a/src/catch2/catch_test_case_info.cpp +++ b/src/catch2/catch_test_case_info.cpp @@ -190,6 +190,9 @@ namespace Catch { std::string combined("#"); combined += extractFilenamePart(lineInfo.file); internalAppendTag(combined); + // TBD: Running this over all tags again is inefficient, but + // simple enough. In practice, the overhead is small enough. + toLowerInPlace(backingLCaseTags); } std::string TestCaseInfo::tagsAsString() const { diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 13608bd7..c213dc67 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -181,6 +181,10 @@ set_tests_properties(LibIdentityTest PROPERTIES PASS_REGULAR_EXPRESSION "descrip add_test(NAME FilenameAsTagsTest COMMAND $ -\# --list-tags) set_tests_properties(FilenameAsTagsTest PROPERTIES PASS_REGULAR_EXPRESSION "\\[#Approx.tests\\]") +# Check that the filename tags can also be matched against (#2064) +add_test(NAME FilenameAsTagsMatching COMMAND $ -\# --list-tags [\#Approx.tests]) +set_tests_properties(FilenameAsTagsMatching PROPERTIES PASS_REGULAR_EXPRESSION "\\[#Approx.tests\\]") + add_test(NAME EscapeSpecialCharactersInTestNames COMMAND $ "Test with special\\, characters \"in name") set_tests_properties(EscapeSpecialCharactersInTestNames PROPERTIES PASS_REGULAR_EXPRESSION "1 assertion in 1 test case")