GlobList: added a clear test for pattern priority

Summary:
The last glob that matches the string decides whether that string is
included or excluded.

Subscribers: cfe-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D66787

git-svn-id: https://llvm.org/svn/llvm-project/clang-tools-extra/trunk@370028 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/unittests/clang-tidy/GlobListTest.cpp b/unittests/clang-tidy/GlobListTest.cpp
index 2f5c4b5..f0c3a70 100644
--- a/unittests/clang-tidy/GlobListTest.cpp
+++ b/unittests/clang-tidy/GlobListTest.cpp
@@ -31,7 +31,7 @@
   EXPECT_TRUE(Filter.contains("*"));
 }
 
-TEST(GlobList, Simple) {
+TEST(GlobList, OneSimplePattern) {
   GlobList Filter("aaa");
 
   EXPECT_TRUE(Filter.contains("aaa"));
@@ -41,6 +41,40 @@
   EXPECT_FALSE(Filter.contains("bbb"));
 }
 
+TEST(GlobList, TwoSimplePatterns) {
+  GlobList Filter("aaa,bbb");
+
+  EXPECT_TRUE(Filter.contains("aaa"));
+  EXPECT_TRUE(Filter.contains("bbb"));
+  EXPECT_FALSE(Filter.contains(""));
+  EXPECT_FALSE(Filter.contains("aa"));
+  EXPECT_FALSE(Filter.contains("aaaa"));
+  EXPECT_FALSE(Filter.contains("bbbb"));
+}
+
+TEST(GlobList, PatternPriority) {
+  // The last glob that matches the string decides whether that string is
+  // included or excluded.
+  {
+    GlobList Filter("a*,-aaa");
+
+    EXPECT_FALSE(Filter.contains(""));
+    EXPECT_TRUE(Filter.contains("a"));
+    EXPECT_TRUE(Filter.contains("aa"));
+    EXPECT_FALSE(Filter.contains("aaa"));
+    EXPECT_TRUE(Filter.contains("aaaa"));
+  }
+  {
+    GlobList Filter("-aaa,a*");
+
+    EXPECT_FALSE(Filter.contains(""));
+    EXPECT_TRUE(Filter.contains("a"));
+    EXPECT_TRUE(Filter.contains("aa"));
+    EXPECT_TRUE(Filter.contains("aaa"));
+    EXPECT_TRUE(Filter.contains("aaaa"));
+  }
+}
+
 TEST(GlobList, WhitespacesAtBegin) {
   GlobList Filter("-*,   a.b.*");