Spaces:
Paused
Paused
| """ | |
| 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), | |
| ) | |
| 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() | |