aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/bot/test_constants.py17
1 files changed, 12 insertions, 5 deletions
diff --git a/tests/bot/test_constants.py b/tests/bot/test_constants.py
index dae7c066c..db9a9bcb0 100644
--- a/tests/bot/test_constants.py
+++ b/tests/bot/test_constants.py
@@ -1,4 +1,5 @@
import inspect
+import typing
import unittest
from bot import constants
@@ -8,7 +9,7 @@ class ConstantsTests(unittest.TestCase):
"""Tests for our constants."""
def test_section_configuration_matches_type_specification(self):
- """The section annotations should match the actual types of the sections."""
+ """"The section annotations should match the actual types of the sections."""
sections = (
cls
@@ -19,8 +20,14 @@ class ConstantsTests(unittest.TestCase):
for name, annotation in section.__annotations__.items():
with self.subTest(section=section, name=name, annotation=annotation):
value = getattr(section, name)
+ annotation_args = typing.get_args(annotation)
- if getattr(annotation, '_name', None) in ('Dict', 'List'):
- self.skipTest("Cannot validate containers yet.")
-
- self.assertIsInstance(value, annotation)
+ if not annotation_args:
+ self.assertIsInstance(value, annotation)
+ else:
+ origin = typing.get_origin(annotation)
+ if origin is typing.Union:
+ is_instance = any(isinstance(value, arg) for arg in annotation_args)
+ self.assertTrue(is_instance)
+ else:
+ self.skipTest(f"Validating type {annotation} is unsupported.")