tests/test-match.py
changeset 50695 1c31b343e514
parent 48875 6000f5b25c9b
child 51569 b32c3146ec34
--- a/tests/test-match.py	Sun Jun 18 00:09:39 2023 +0200
+++ b/tests/test-match.py	Mon Jun 12 16:51:08 2023 +0200
@@ -140,6 +140,28 @@
         self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
         self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
 
+    def testVisitdirFilepath(self):
+        m = matchmod.match(
+            util.localpath(b'/repo'), b'', patterns=[b'filepath:dir/z']
+        )
+        assert isinstance(m, matchmod.patternmatcher)
+        self.assertTrue(m.visitdir(b''))
+        self.assertTrue(m.visitdir(b'dir'))
+        self.assertFalse(m.visitdir(b'folder'))
+        self.assertFalse(m.visitdir(b'dir/subdir'))
+        self.assertFalse(m.visitdir(b'dir/subdir/x'))
+
+    def testVisitchildrensetFilepath(self):
+        m = matchmod.match(
+            util.localpath(b'/repo'), b'', patterns=[b'filepath:dir/z']
+        )
+        assert isinstance(m, matchmod.patternmatcher)
+        self.assertEqual(m.visitchildrenset(b''), b'this')
+        self.assertEqual(m.visitchildrenset(b'folder'), set())
+        self.assertEqual(m.visitchildrenset(b'dir'), b'this')
+        self.assertEqual(m.visitchildrenset(b'dir/subdir'), set())
+        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
+
 
 class IncludeMatcherTests(unittest.TestCase):
     def testVisitdirPrefix(self):
@@ -212,6 +234,28 @@
         self.assertEqual(m.visitchildrenset(b'dir/subdir'), b'this')
         self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), b'this')
 
+    def testVisitdirFilepath(self):
+        m = matchmod.match(
+            util.localpath(b'/repo'), b'', include=[b'filepath:dir/z']
+        )
+        assert isinstance(m, matchmod.includematcher)
+        self.assertTrue(m.visitdir(b''))
+        self.assertTrue(m.visitdir(b'dir'))
+        self.assertFalse(m.visitdir(b'folder'))
+        self.assertFalse(m.visitdir(b'dir/subdir'))
+        self.assertFalse(m.visitdir(b'dir/subdir/x'))
+
+    def testVisitchildrensetFilepath(self):
+        m = matchmod.match(
+            util.localpath(b'/repo'), b'', include=[b'filepath:dir/z']
+        )
+        assert isinstance(m, matchmod.includematcher)
+        self.assertEqual(m.visitchildrenset(b''), {b'dir'})
+        self.assertEqual(m.visitchildrenset(b'folder'), set())
+        self.assertEqual(m.visitchildrenset(b'dir'), {b'z'})
+        self.assertEqual(m.visitchildrenset(b'dir/subdir'), set())
+        self.assertEqual(m.visitchildrenset(b'dir/subdir/x'), set())
+
 
 class ExactMatcherTests(unittest.TestCase):
     def testVisitdir(self):