Skip to content

Commit 8754d7f

Browse files
CopilotDrSatyr
andcommitted
Fix NullPointerException in MarkdownRender, AsciidocRender, and ConsoleRender when schema is null
Co-authored-by: DrSatyr <8143518+DrSatyr@users.noreply.github.com>
1 parent 60ea0fc commit 8754d7f

File tree

6 files changed

+43
-3
lines changed

6 files changed

+43
-3
lines changed

core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,7 @@ private String itemContent(
182182
.append(itemContent("Schema:", "", indent))
183183
.append(changedMediaType.isCompatible() ? "Backward compatible" : "Broken compatibility")
184184
.append(System.lineSeparator());
185-
if (!changedMediaType.isCompatible()) {
185+
if (!changedMediaType.isCompatible() && changedMediaType.getSchema() != null) {
186186
sb.append(incompatibilities(changedMediaType.getSchema()));
187187
}
188188
return sb.toString();

core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ private String itemContent(
171171
.append("Schema: ")
172172
.append(changedMediaType.isCompatible() ? "Backward compatible" : "Broken compatibility")
173173
.append(System.lineSeparator());
174-
if (!changedMediaType.isCompatible()) {
174+
if (!changedMediaType.isCompatible() && changedMediaType.getSchema() != null) {
175175
sb.append(incompatibilities(changedMediaType.getSchema()));
176176
}
177177
return sb.toString();

core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,11 @@ protected String itemContent(String title, String mediaType, MediaType content)
274274
}
275275

276276
protected String itemContent(int deepness, String mediaType, ChangedMediaType content) {
277-
return itemContent("Changed content type", mediaType) + schema(deepness, content.getSchema());
277+
String result = itemContent("Changed content type", mediaType);
278+
if (content.getSchema() != null) {
279+
result += schema(deepness, content.getSchema());
280+
}
281+
return result;
278282
}
279283

280284
protected String schema(ChangedSchema schema) {

core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,4 +93,16 @@ public void validateAsciiDocRangeStatus() {
9393
+ "\n"
9494
+ "WARNING: API changes broke backward compatibility\n");
9595
}
96+
97+
@Test
98+
public void renderDoesNotFailWhenSchemaIsNullButExampleChanged() {
99+
AsciidocRender render = new AsciidocRender();
100+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
101+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
102+
ChangedOpenApi diff =
103+
OpenApiCompare.fromLocations(
104+
"issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml");
105+
render.render(diff, outputStreamWriter);
106+
assertThat(outputStream.toString()).isNotBlank();
107+
}
96108
}

core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,4 +76,16 @@ public void renderShowsWhatsChangedSectionWithCorrectFormattingWhenEndpointIsCha
7676
.contains("What's Changed")
7777
.containsSubsequence("- GET /widgets", "Parameter:", "- Changed query-param-1 in query");
7878
}
79+
80+
@Test
81+
public void renderDoesNotFailWhenSchemaIsNullButExampleChanged() {
82+
ConsoleRender render = new ConsoleRender();
83+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
84+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
85+
ChangedOpenApi diff =
86+
OpenApiCompare.fromLocations(
87+
"issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml");
88+
render.render(diff, outputStreamWriter);
89+
assertThat(outputStream.toString()).isNotBlank();
90+
}
7991
}

core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,4 +40,16 @@ public void renderDoesNotFailWhenHTTPStatusCodeIsRange() {
4040
render.render(diff, outputStreamWriter);
4141
assertThat(outputStream.toString()).isNotBlank();
4242
}
43+
44+
@Test
45+
public void renderDoesNotFailWhenSchemaIsNullButExampleChanged() {
46+
MarkdownRender render = new MarkdownRender();
47+
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
48+
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
49+
ChangedOpenApi diff =
50+
OpenApiCompare.fromLocations(
51+
"issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml");
52+
render.render(diff, outputStreamWriter);
53+
assertThat(outputStream.toString()).isNotBlank();
54+
}
4355
}

0 commit comments

Comments
 (0)