#!/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()