summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Berman <Julian@GrayVines.com>2018-08-19 22:17:53 +0200
committerJulian Berman <Julian@GrayVines.com>2018-08-19 22:17:53 +0200
commitb3a6edd07d9d8aae9a4aa028864a71426d788734 (patch)
tree67b1b4cf24c7609ef1286810ed50b1996491bcfc
parent03db31efcf231e4a3541cadb4dec93ebf4266186 (diff)
downloadjsonschema-b3a6edd07d9d8aae9a4aa028864a71426d788734.tar.gz
OK, now getting a bit less ugly.
-rw-r--r--jsonschema/tests/test_jsonschema_test_suite.py75
1 files changed, 37 insertions, 38 deletions
diff --git a/jsonschema/tests/test_jsonschema_test_suite.py b/jsonschema/tests/test_jsonschema_test_suite.py
index 33714ed..7ee8e2d 100644
--- a/jsonschema/tests/test_jsonschema_test_suite.py
+++ b/jsonschema/tests/test_jsonschema_test_suite.py
@@ -30,28 +30,23 @@ DRAFT4 = SUITE.collection(name="draft4")
DRAFT6 = SUITE.collection(name="draft6")
-def maybe_skip(test_fn, test, skip=lambda test: None):
+def maybe_skip(test_fn, test, skip):
reason = skip(test)
return unittest.skipIf(reason is not None, reason)(test_fn)
-def load_json_cases(*suites, **kwargs):
- def add_test_methods(test_class):
- validator_kwargs = kwargs.pop("validator_kwargs", {})
- for suite in suites:
- for test in suite:
- method = test.to_unittest_method(
- Validator=test_class.Validator, **validator_kwargs
- )
- assert not hasattr(test_class, method.__name__), test
- setattr(
- test_class,
- method.__name__,
- maybe_skip(test_fn=method, test=test, **kwargs),
- )
-
- return test_class
- return add_test_methods
+def load_json_cases(name, *suites, **kwargs):
+ skip = kwargs.pop("skip", lambda test: None)
+ methods = {
+ test.method_name: maybe_skip(
+ test_fn=test.to_unittest_method(**kwargs),
+ test=test,
+ skip=skip,
+ )
+ for suite in suites
+ for test in suite
+ }
+ return type(name, (unittest.TestCase,), methods)
def skip_tests_containing_descriptions(**kwargs):
@@ -96,12 +91,14 @@ else:
return
-@load_json_cases(
+TestDraft3 = load_json_cases(
+ "TestDraft3",
DRAFT3.tests(),
DRAFT3.optional_tests_of(name="format"),
DRAFT3.optional_tests_of(name="bignum"),
DRAFT3.optional_tests_of(name="zeroTerminatedFloats"),
- validator_kwargs={"format_checker": draft3_format_checker},
+ Validator=Draft3Validator,
+ format_checker=draft3_format_checker,
skip=lambda test: (
narrow_unicode_build(test) or
missing_format(draft3_format_checker)(test) or
@@ -112,16 +109,16 @@ else:
)(test)
),
)
-class TestDraft3(unittest.TestCase):
- Validator = Draft3Validator
-@load_json_cases(
+TestDraft4 = load_json_cases(
+ "TestDraft4",
DRAFT4.tests(),
DRAFT4.optional_tests_of(name="format"),
DRAFT4.optional_tests_of(name="bignum"),
DRAFT4.optional_tests_of(name="zeroTerminatedFloats"),
- validator_kwargs={"format_checker": draft4_format_checker},
+ Validator=Draft4Validator,
+ format_checker=draft4_format_checker,
skip=lambda test: (
narrow_unicode_build(test) or
missing_format(draft4_format_checker)(test) or
@@ -139,16 +136,16 @@ class TestDraft3(unittest.TestCase):
)(test)
),
)
-class TestDraft4(unittest.TestCase):
- Validator = Draft4Validator
-@load_json_cases(
+TestDraft6 = load_json_cases(
+ "TestDraft6",
DRAFT6.tests(),
DRAFT6.optional_tests_of(name="format"),
DRAFT6.optional_tests_of(name="bignum"),
DRAFT6.optional_tests_of(name="zeroTerminatedFloats"),
- validator_kwargs={"format_checker": draft6_format_checker},
+ Validator=Draft6Validator,
+ format_checker=draft6_format_checker,
skip=lambda test: (
narrow_unicode_build(test) or
missing_format(draft6_format_checker)(test) or
@@ -166,23 +163,25 @@ class TestDraft4(unittest.TestCase):
)(test)
),
)
-class TestDraft6(unittest.TestCase):
- Validator = Draft6Validator
-@load_json_cases(DRAFT3.tests_of(name="type"))
-class TestDraft3LegacyTypeCheck(unittest.TestCase):
- Validator = create(
+TestDraft3LegacyTypeCheck = load_json_cases(
+ "TestDraft3LegacyTypeCheck",
+ DRAFT3.tests_of(name="type"),
+ Validator=create(
meta_schema=Draft3Validator.META_SCHEMA,
validators=Draft3Validator.VALIDATORS,
default_types=_DEPRECATED_DEFAULT_TYPES,
- )
+ ),
+)
-@load_json_cases(DRAFT4.tests_of(name="type"))
-class TestDraft4LegacyTypeCheck(unittest.TestCase):
- Validator = create(
+TestDraft4LegacyTypeCheck = load_json_cases(
+ "TestDraft4LegacyTypeCheck",
+ DRAFT4.tests_of(name="type"),
+ Validator=create(
meta_schema=Draft4Validator.META_SCHEMA,
validators=Draft4Validator.VALIDATORS,
default_types=_DEPRECATED_DEFAULT_TYPES,
- )
+ ),
+)