aboutsummaryrefslogtreecommitdiff
path: root/unittests
diff options
context:
space:
mode:
authorXavier Claessens <xavier.claessens@collabora.com>2023-01-25 11:00:43 -0500
committerXavier Claessens <xclaesse@gmail.com>2023-03-04 14:19:27 -0500
commit0f67913dee7d4173b1f7c5e95268d7bc4d4d858d (patch)
tree516cf931cba047f1f352b0b38ed8e0626b8a9fb8 /unittests
parent2d26c272c3225f99c945d2c510c61910c34a9377 (diff)
downloadmeson-0f67913dee7d4173b1f7c5e95268d7bc4d4d858d.zip
meson-0f67913dee7d4173b1f7c5e95268d7bc4d4d858d.tar.gz
meson-0f67913dee7d4173b1f7c5e95268d7bc4d4d858d.tar.bz2
typed_kwargs: Extend since_values and deprecated_values for types
Diffstat (limited to 'unittests')
-rw-r--r--unittests/internaltests.py42
1 files changed, 40 insertions, 2 deletions
diff --git a/unittests/internaltests.py b/unittests/internaltests.py
index 79a3217..b29df77 100644
--- a/unittests/internaltests.py
+++ b/unittests/internaltests.py
@@ -1415,6 +1415,11 @@ class InternalTests(unittest.TestCase):
since_values={list: '1.9'}),
KwargInfo('new_dict', (ContainerTypeInfo(list, str), ContainerTypeInfo(dict, str)), default={},
since_values={dict: '1.1'}),
+ KwargInfo('foo', (str, int, ContainerTypeInfo(list, str), ContainerTypeInfo(dict, str), ContainerTypeInfo(list, int)), default={},
+ since_values={str: '1.1', ContainerTypeInfo(list, str): '1.2', ContainerTypeInfo(dict, str): '1.3'},
+ deprecated_values={int: '0.8', ContainerTypeInfo(list, int): '0.9'}),
+ KwargInfo('tuple', (ContainerTypeInfo(list, (str, int))), default=[], listify=True,
+ since_values={ContainerTypeInfo(list, str): '1.1', ContainerTypeInfo(list, int): '1.2'}),
)
def _(obj, node, args: T.Tuple, kwargs: T.Dict[str, str]) -> None:
pass
@@ -1433,7 +1438,7 @@ class InternalTests(unittest.TestCase):
with self.subTest('deprecated dict string value with msg'), mock.patch('sys.stdout', io.StringIO()) as out:
_(None, mock.Mock(subproject=''), [], {'output': {'foo2': 'a'}})
- self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*deprecated since '0.9': "testfunc" keyword argument "output" value "foo2". dont use it.*""")
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*deprecated since '0.9': "testfunc" keyword argument "output" value "foo2" in dict keys. dont use it.*""")
with self.subTest('new dict string value'), mock.patch('sys.stdout', io.StringIO()) as out:
_(None, mock.Mock(subproject=''), [], {'output': {'bar': 'b'}})
@@ -1441,7 +1446,40 @@ class InternalTests(unittest.TestCase):
with self.subTest('new dict string value with msg'), mock.patch('sys.stdout', io.StringIO()) as out:
_(None, mock.Mock(subproject=''), [], {'output': {'bar2': 'a'}})
- self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*introduced in '1.1': "testfunc" keyword argument "output" value "bar2". use this.*""")
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*introduced in '1.1': "testfunc" keyword argument "output" value "bar2" in dict keys. use this.*""")
+
+ with self.subTest('new string type'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'foo': 'foo'})
+ self.assertRegex(out.getvalue(), r"""WARNING: Project targets '1.0'.*introduced in '1.1': "testfunc" keyword argument "foo" of type str.*""")
+
+ with self.subTest('new array of string type'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'foo': ['foo']})
+ self.assertRegex(out.getvalue(), r"""WARNING: Project targets '1.0'.*introduced in '1.2': "testfunc" keyword argument "foo" of type array\[str\].*""")
+
+ with self.subTest('new dict of string type'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'foo': {'plop': 'foo'}})
+ self.assertRegex(out.getvalue(), r"""WARNING: Project targets '1.0'.*introduced in '1.3': "testfunc" keyword argument "foo" of type dict\[str\].*""")
+
+ with self.subTest('deprecated int value'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'foo': 1})
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*deprecated since '0.8': "testfunc" keyword argument "foo" of type int.*""")
+
+ with self.subTest('deprecated array int value'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'foo': [1]})
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*deprecated since '0.9': "testfunc" keyword argument "foo" of type array\[int\].*""")
+
+ with self.subTest('new list[str] value'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'tuple': ['foo', 42]})
+ self.assertRegex(out.getvalue(), r"""WARNING: Project targets '1.0'.*introduced in '1.1': "testfunc" keyword argument "tuple" of type array\[str\].*""")
+ self.assertRegex(out.getvalue(), r"""WARNING: Project targets '1.0'.*introduced in '1.2': "testfunc" keyword argument "tuple" of type array\[int\].*""")
+
+ with self.subTest('deprecated array string value'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'input': 'foo'})
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*deprecated since '0.9': "testfunc" keyword argument "input" value "foo".*""")
+
+ with self.subTest('new array string value'), mock.patch('sys.stdout', io.StringIO()) as out:
+ _(None, mock.Mock(subproject=''), [], {'input': 'bar'})
+ self.assertRegex(out.getvalue(), r"""WARNING:.Project targets '1.0'.*introduced in '1.1': "testfunc" keyword argument "input" value "bar".*""")
with self.subTest('non string union'), mock.patch('sys.stdout', io.StringIO()) as out:
_(None, mock.Mock(subproject=''), [], {'install_dir': False})