[clang] b09dea1 - [NFC][Diagnostic] Try all permutations in longest match test (#163277)

via cfe-commits cfe-commits at lists.llvm.org
Mon Oct 13 20:45:45 PDT 2025


Author: Vitaly Buka
Date: 2025-10-13T20:45:40-07:00
New Revision: b09dea1ee81d37dbac65e973179f071e5b3dcc78

URL: https://github.com/llvm/llvm-project/commit/b09dea1ee81d37dbac65e973179f071e5b3dcc78
DIFF: https://github.com/llvm/llvm-project/commit/b09dea1ee81d37dbac65e973179f071e5b3dcc78.diff

LOG: [NFC][Diagnostic] Try all permutations in longest match test (#163277)

* Test reordering of rules.
* Test same length rules for emit and suppress.

Follow up to #162409, to confirm it does not affect this behavior.

Added: 
    

Modified: 
    clang/unittests/Basic/DiagnosticTest.cpp

Removed: 
    


################################################################################
diff  --git a/clang/unittests/Basic/DiagnosticTest.cpp b/clang/unittests/Basic/DiagnosticTest.cpp
index de090864e5095..0f1b1d8865af7 100644
--- a/clang/unittests/Basic/DiagnosticTest.cpp
+++ b/clang/unittests/Basic/DiagnosticTest.cpp
@@ -21,6 +21,7 @@
 #include "llvm/Support/VirtualFileSystem.h"
 #include "gmock/gmock.h"
 #include "gtest/gtest.h"
+#include <algorithm>
 #include <memory>
 #include <optional>
 #include <vector>
@@ -295,23 +296,35 @@ TEST_F(SuppressionMappingTest, EmitCategoryIsExcluded) {
 }
 
 TEST_F(SuppressionMappingTest, LongestMatchWins) {
-  llvm::StringLiteral SuppressionMappingFile = R"(
-  [unused]
-  src:*clang/*
-  src:*clang/lib/Sema/*=emit
-  src:*clang/lib/Sema/foo*)";
-  Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt";
-  FS->addFile("foo.txt", /*ModificationTime=*/{},
-              llvm::MemoryBuffer::getMemBuffer(SuppressionMappingFile));
-  clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS);
-  EXPECT_THAT(diags(), IsEmpty());
-
-  EXPECT_TRUE(Diags.isSuppressedViaMapping(
-      diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h")));
-  EXPECT_FALSE(Diags.isSuppressedViaMapping(
-      diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h")));
-  EXPECT_TRUE(Diags.isSuppressedViaMapping(diag::warn_unused_function,
-                                           locForFile("clang/lib/Sema/foo.h")));
+  StringRef Lines[] = {
+      "[unused]",
+      "src:*clang/*",
+      "src:*clang/lib/Sema/*",
+      "src:*clang/lib/Sema/*=emit",
+      "src:*clang/lib/Sema/foo*",
+  };
+  llvm::MutableArrayRef<StringRef> Rules = Lines;
+  Rules = Rules.drop_front();
+  llvm::sort(Rules);
+
+  do {
+    Diags.getDiagnosticOptions().DiagnosticSuppressionMappingsFile = "foo.txt";
+    std::string Contents = join(std::begin(Lines), std::end(Lines), "\n");
+    FS->addFile("foo.txt", /*ModificationTime=*/{},
+                llvm::MemoryBuffer::getMemBuffer(Contents));
+    clang::ProcessWarningOptions(Diags, Diags.getDiagnosticOptions(), *FS);
+    EXPECT_THAT(diags(), IsEmpty());
+
+    EXPECT_TRUE(Diags.isSuppressedViaMapping(
+        diag::warn_unused_function, locForFile("clang/lib/Basic/foo.h")))
+        << Contents;
+    EXPECT_FALSE(Diags.isSuppressedViaMapping(
+        diag::warn_unused_function, locForFile("clang/lib/Sema/bar.h")))
+        << Contents;
+    EXPECT_TRUE(Diags.isSuppressedViaMapping(
+        diag::warn_unused_function, locForFile("clang/lib/Sema/foo.h")))
+        << Contents;
+  } while (std::next_permutation(Rules.begin(), Rules.end()));
 }
 
 TEST_F(SuppressionMappingTest, LongShortMatch) {


        


More information about the cfe-commits mailing list