Files
kpmatch/test/public_api.py
Louis DEVIE 4d115e3de4
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2s
new API
2026-04-13 23:03:11 +02:00

49 lines
1.8 KiB
Python

import fnmatch
from configparser import ParsingError
from typing import Callable, Any
from unittest import TestCase
import kpmatch
from kpmatch import PatternParsingError
class ParseTests(TestCase):
def test_compile(self):
(pattern,) = kpmatch.compile("*.txt")
self.assertIsInstance(pattern, kpmatch.Pattern)
self.assertTrue(pattern.match("file.txt"))
patterns = kpmatch.compile("*.{png,jpg,jpeg,webp}")
self.assertEqual(4, len(patterns))
self.assertTrue(any([pattern.match("file.jpeg") for pattern in patterns]))
self.assertTrue(any([pattern.match("file.png") for pattern in patterns]))
self.assertFalse(any([pattern.match("file.txt") for pattern in patterns]))
def test_kpmatch(self):
self.assertTrue(kpmatch.kpmatch("file.txt", "*.txt"))
self.assertFalse(kpmatch.kpmatch("file.jpg", "*.txt"))
def assertRaisesPPE(self, error_message: str, position: int, pattern: str):
with self.assertRaises(PatternParsingError) as cm:
kpmatch.compile(pattern)
self.assertEqual(
str(PatternParsingError(error_message, pattern, position)),
str(cm.exception),
)
def test_error_messages(self):
self.assertRaisesPPE("Empty path segment", 4, "abc//def")
self.assertRaisesPPE('Missing closing bracket "]" to match "["', 3, "abc[def")
self.assertRaisesPPE(
'Character "!" is not allowed inside a character set', 6, "abc[de!f]"
)
self.assertRaisesPPE(
'Character "[" is not allowed inside a character set', 6, "abc[de[f]"
)
self.assertRaisesPPE('Missing closing bracket "}" to match "{"', 3, "abc{def")
self.assertRaisesPPE(
'Character "{" is not allowed inside a braced section', 6, "abc{de{f}"
)