| import unittest |
| |
| from tools.linter import mypy_wrapper |
| |
| |
| class TestMypyWrapper(unittest.TestCase): |
| configs = { |
| 'foo.ini': { |
| 'file1.abc', |
| 'dir2', |
| 'dir3/file4.xyz', |
| }, |
| 'bar/baz.ini': { |
| 'file1.abc', |
| 'dir2/dir5/file6.def', |
| 'dir3/file7.abc', |
| }, |
| } |
| |
| trie: mypy_wrapper.Trie = { |
| 'file1.abc': {None: {'foo.ini', 'bar/baz.ini'}}, |
| 'dir2': { |
| None: {'foo.ini'}, |
| 'dir5': {'file6.def': {None: {'bar/baz.ini'}}}, |
| }, |
| 'dir3': { |
| 'file4.xyz': {None: {'foo.ini'}}, |
| 'file7.abc': {None: {'bar/baz.ini'}}, |
| }, |
| } |
| |
| def test_config_files(self) -> None: |
| self.assertEqual(mypy_wrapper.config_files().keys(), { |
| 'mypy.ini', |
| 'mypy-strict.ini', |
| }) |
| |
| def test_split_path(self) -> None: |
| self.assertEqual(mypy_wrapper.split_path('file1.abc'), ['file1.abc']) |
| self.assertEqual( |
| mypy_wrapper.split_path('dir3/file4.xyz'), |
| ['dir3', 'file4.xyz'], |
| ) |
| self.assertEqual( |
| mypy_wrapper.split_path('dir2/dir5/file6.def'), |
| ['dir2', 'dir5', 'file6.def'], |
| ) |
| |
| def test_make_trie(self) -> None: |
| self.assertEqual(mypy_wrapper.make_trie(self.configs), self.trie) |
| |
| def test_lookup(self) -> None: |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'file1.abc'), |
| {'foo.ini', 'bar/baz.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir2/dir5/file6.def'), |
| {'foo.ini', 'bar/baz.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir3/file4.xyz'), |
| {'foo.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir3/file7.abc'), |
| {'bar/baz.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'file8.xyz'), |
| set(), |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir2/dir9/file10.abc'), |
| {'foo.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir3/file11.abc'), |
| set(), |
| ) |
| |
| # non-leaves shouldn't ever be passed to lookup in practice, but |
| # still, good to consider/test these cases |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir2'), |
| {'foo.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir2/dir5'), |
| {'foo.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir3'), |
| set(), |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir2/dir9'), |
| {'foo.ini'}, |
| ) |
| self.assertEqual( |
| mypy_wrapper.lookup(self.trie, 'dir4'), |
| set(), |
| ) |
| |
| def test_make_plan(self) -> None: |
| self.assertEqual( |
| mypy_wrapper.make_plan(configs=self.configs, files=[ |
| 'file8.xyz', |
| 'dir3/file11.abc', |
| ]), |
| {} |
| ) |
| self.assertEqual( |
| mypy_wrapper.make_plan(configs=self.configs, files=[ |
| 'file8.xyz', |
| 'dir2/dir9/file10.abc', |
| 'dir3/file4.xyz', |
| 'dir3/file11.abc', |
| ]), |
| { |
| 'foo.ini': ['dir2/dir9/file10.abc', 'dir3/file4.xyz'], |
| } |
| ) |
| self.assertEqual( |
| mypy_wrapper.make_plan(configs=self.configs, files=[ |
| 'file8.xyz', |
| 'dir3/file11.abc', |
| 'dir3/file7.abc', |
| ]), |
| { |
| 'bar/baz.ini': ['dir3/file7.abc'], |
| } |
| ) |
| self.assertEqual( |
| mypy_wrapper.make_plan(configs=self.configs, files=[ |
| 'dir2/dir9/file10.abc', |
| 'dir2/dir5/file6.def', |
| 'dir3/file7.abc', |
| 'file1.abc', |
| 'dir3/file11.abc', |
| ]), |
| { |
| 'foo.ini': [ |
| 'dir2/dir9/file10.abc', |
| 'dir2/dir5/file6.def', |
| 'file1.abc', |
| ], |
| 'bar/baz.ini': [ |
| 'dir2/dir5/file6.def', |
| 'dir3/file7.abc', |
| 'file1.abc', |
| ], |
| } |
| ) |
| |
| |
| if __name__ == '__main__': |
| unittest.main() |