blob: df7b0ab9e27d9385dc0b2a3eb1c782033ee6644b [file] [log] [blame]
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()