aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py')
-rw-r--r--.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py50
1 files changed, 50 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py b/.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py
new file mode 100644
index 00000000..c12e88bc
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/jsonschema/tests/fuzz_validate.py
@@ -0,0 +1,50 @@
+"""
+Fuzzing setup for OSS-Fuzz.
+
+See https://github.com/google/oss-fuzz/tree/master/projects/jsonschema for the
+other half of the setup here.
+"""
+import sys
+
+from hypothesis import given, strategies
+
+import jsonschema
+
+PRIM = strategies.one_of(
+ strategies.booleans(),
+ strategies.integers(),
+ strategies.floats(allow_nan=False, allow_infinity=False),
+ strategies.text(),
+)
+DICT = strategies.recursive(
+ base=strategies.one_of(
+ strategies.booleans(),
+ strategies.dictionaries(strategies.text(), PRIM),
+ ),
+ extend=lambda inner: strategies.dictionaries(strategies.text(), inner),
+)
+
+
+@given(obj1=DICT, obj2=DICT)
+def test_schemas(obj1, obj2):
+ try:
+ jsonschema.validate(instance=obj1, schema=obj2)
+ except jsonschema.exceptions.ValidationError:
+ pass
+ except jsonschema.exceptions.SchemaError:
+ pass
+
+
+def main():
+ atheris.instrument_all()
+ atheris.Setup(
+ sys.argv,
+ test_schemas.hypothesis.fuzz_one_input,
+ enable_python_coverage=True,
+ )
+ atheris.Fuzz()
+
+
+if __name__ == "__main__":
+ import atheris
+ main()