Skip to content

Commit b28f3bd

Browse files
authored
Fix Blaze linter rules assuming object schemas (#417)
See: sourcemeta/jsonschema#323 Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
1 parent 423950f commit b28f3bd

4 files changed

Lines changed: 55 additions & 3 deletions

File tree

src/linter/valid_default.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ auto ValidDefault::condition(
2828
return false;
2929
}
3030

31-
if (!schema.defines("default")) {
31+
if (!schema.is_object() || !schema.defines("default")) {
3232
return false;
3333
}
3434

src/linter/valid_examples.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ auto ValidExamples::condition(
2626
return false;
2727
}
2828

29-
if (!schema.defines("examples") || !schema.at("examples").is_array() ||
30-
schema.at("examples").empty()) {
29+
if (!schema.is_object() || !schema.defines("examples") ||
30+
!schema.at("examples").is_array() || schema.at("examples").empty()) {
3131
return false;
3232
}
3333

test/linter/linter_valid_default_test.cc

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,3 +234,29 @@ TEST(Linter, valid_default_7) {
234234

235235
EXPECT_EQ(schema, expected);
236236
}
237+
238+
TEST(Linter, valid_default_8) {
239+
sourcemeta::core::SchemaTransformer bundle;
240+
bundle.add<sourcemeta::blaze::ValidDefault>(
241+
sourcemeta::blaze::default_schema_compiler);
242+
243+
auto schema{sourcemeta::core::parse_json(R"JSON({
244+
"$schema": "http://json-schema.org/draft-07/schema#",
245+
"additionalProperties": false,
246+
"default": {}
247+
})JSON")};
248+
249+
const auto result =
250+
bundle.apply(schema, sourcemeta::core::schema_official_walker,
251+
sourcemeta::core::schema_official_resolver);
252+
253+
EXPECT_TRUE(result);
254+
255+
const auto expected{sourcemeta::core::parse_json(R"JSON({
256+
"$schema": "http://json-schema.org/draft-07/schema#",
257+
"additionalProperties": false,
258+
"default": {}
259+
})JSON")};
260+
261+
EXPECT_EQ(schema, expected);
262+
}

test/linter/linter_valid_examples_test.cc

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -272,3 +272,29 @@ TEST(Linter, valid_examples_8) {
272272

273273
EXPECT_EQ(schema, expected);
274274
}
275+
276+
TEST(Linter, valid_examples_9) {
277+
sourcemeta::core::SchemaTransformer bundle;
278+
bundle.add<sourcemeta::blaze::ValidDefault>(
279+
sourcemeta::blaze::default_schema_compiler);
280+
281+
auto schema{sourcemeta::core::parse_json(R"JSON({
282+
"$schema": "http://json-schema.org/draft-07/schema#",
283+
"additionalProperties": false,
284+
"examples": [ {} ]
285+
})JSON")};
286+
287+
const auto result =
288+
bundle.apply(schema, sourcemeta::core::schema_official_walker,
289+
sourcemeta::core::schema_official_resolver);
290+
291+
EXPECT_TRUE(result);
292+
293+
const auto expected{sourcemeta::core::parse_json(R"JSON({
294+
"$schema": "http://json-schema.org/draft-07/schema#",
295+
"additionalProperties": false,
296+
"examples": [ {} ]
297+
})JSON")};
298+
299+
EXPECT_EQ(schema, expected);
300+
}

0 commit comments

Comments
 (0)