mirror of https://github.com/morpheus65535/bazarr
51 lines
1.1 KiB
Python
51 lines
1.1 KiB
Python
"""
|
|
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()
|