| #!/usr/bin/env python3 | |
| from gitutils import PeekableIterator, patterns_to_regex | |
| from unittest import TestCase, main | |
| class TestPeekableIterator(TestCase): | |
| def test_iterator(self, input_: str = "abcdef") -> None: | |
| iter_ = PeekableIterator(input_) | |
| for idx, c in enumerate(iter_): | |
| self.assertEqual(c, input_[idx]) | |
| def test_is_iterable(self) -> None: | |
| from collections.abc import Iterator | |
| iter_ = PeekableIterator("") | |
| self.assertTrue(isinstance(iter_, Iterator)) | |
| def test_peek(self, input_: str = "abcdef") -> None: | |
| iter_ = PeekableIterator(input_) | |
| for idx, c in enumerate(iter_): | |
| if idx + 1 < len(input_): | |
| self.assertEqual(iter_.peek(), input_[idx + 1]) | |
| else: | |
| self.assertTrue(iter_.peek() is None) | |
| class TestPattern(TestCase): | |
| def test_double_asterisks(self) -> None: | |
| allowed_patterns = [ | |
| "aten/src/ATen/native/**LinearAlgebra*", | |
| ] | |
| patterns_re = patterns_to_regex(allowed_patterns) | |
| fnames = [ | |
| "aten/src/ATen/native/LinearAlgebra.cpp", | |
| "aten/src/ATen/native/cpu/LinearAlgebraKernel.cpp"] | |
| for filename in fnames: | |
| self.assertTrue(patterns_re.match(filename)) | |
| if __name__ == '__main__': | |
| main() |