def _canonicalises_to_equivalent_fixpoint(data): # This function isn't executed by pytest, only by FuzzBuzz - we want to parametrize # over schemas for differnt types there, but have to supply *all* args here. schema = data.draw(json_schemata(), label="schema") cc = canonicalish(schema) assert cc == canonicalish(cc) try: strat = from_schema(cc) except InvalidArgument: # e.g. array of unique {type: integers}, with too few allowed integers assume(False) instance = data.draw(JSON_STRATEGY | strat, label="instance") assert is_valid(instance, schema) == is_valid(instance, cc) jsonschema.validators.validator_for(schema).check_schema(schema)
"ab": { "type": "boolean" } } } } }, ], ], ) def test_unable_to_merge(group): assert merged(group) is None @settings(suppress_health_check=[HealthCheck.too_slow], deadline=None) @given(json_schemata()) def test_self_merge_eq_canonicalish(schema): m = merged([schema, schema]) assert m == canonicalish(schema) def _merge_semantics_helper(data, s1, s2, combined): note(combined) ic = data.draw(from_schema(combined), label="combined") i1 = data.draw(from_schema(s1), label="s1") i2 = data.draw(from_schema(s2), label="s2") assert is_valid(ic, s1) assert is_valid(ic, s2) assert is_valid(i1, s2) == is_valid(i1, combined) assert is_valid(i2, s1) == is_valid(i2, combined)