diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java index b45b2034..b6afc6f5 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/AsciidocRender.java @@ -182,7 +182,7 @@ private String itemContent( .append(itemContent("Schema:", "", indent)) .append(changedMediaType.isCompatible() ? "Backward compatible" : "Broken compatibility") .append(System.lineSeparator()); - if (!changedMediaType.isCompatible()) { + if (!changedMediaType.isCompatible() && changedMediaType.getSchema() != null) { sb.append(incompatibilities(changedMediaType.getSchema())); } return sb.toString(); diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java index 37b926cd..e41f7aa9 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/ConsoleRender.java @@ -171,7 +171,7 @@ private String itemContent( .append("Schema: ") .append(changedMediaType.isCompatible() ? "Backward compatible" : "Broken compatibility") .append(System.lineSeparator()); - if (!changedMediaType.isCompatible()) { + if (!changedMediaType.isCompatible() && changedMediaType.getSchema() != null) { sb.append(incompatibilities(changedMediaType.getSchema())); } return sb.toString(); diff --git a/core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java b/core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java index b1182606..73bd12cc 100644 --- a/core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java +++ b/core/src/main/java/org/openapitools/openapidiff/core/output/MarkdownRender.java @@ -274,7 +274,11 @@ protected String itemContent(String title, String mediaType, MediaType content) } protected String itemContent(int deepness, String mediaType, ChangedMediaType content) { - return itemContent("Changed content type", mediaType) + schema(deepness, content.getSchema()); + String result = itemContent("Changed content type", mediaType); + if (content.getSchema() != null) { + result += schema(deepness, content.getSchema()); + } + return result; } protected String schema(ChangedSchema schema) { diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java index 15c698d6..a9e7937b 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/AsciidocRenderTest.java @@ -93,4 +93,16 @@ public void validateAsciiDocRangeStatus() { + "\n" + "WARNING: API changes broke backward compatibility\n"); } + + @Test + public void issue870_renderDoesNotFailWhenSchemaIsNullButExampleChanged() { + AsciidocRender render = new AsciidocRender(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml"); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java index 675633fc..a193e4e5 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/ConsoleRenderTest.java @@ -76,4 +76,16 @@ public void renderShowsWhatsChangedSectionWithCorrectFormattingWhenEndpointIsCha .contains("What's Changed") .containsSubsequence("- GET /widgets", "Parameter:", "- Changed query-param-1 in query"); } + + @Test + public void issue870_renderDoesNotFailWhenSchemaIsNullButExampleChanged() { + ConsoleRender render = new ConsoleRender(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml"); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } } diff --git a/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java b/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java index fb1f24fe..59788210 100644 --- a/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java +++ b/core/src/test/java/org/openapitools/openapidiff/core/output/MarkdownRenderTest.java @@ -40,4 +40,16 @@ public void renderDoesNotFailWhenHTTPStatusCodeIsRange() { render.render(diff, outputStreamWriter); assertThat(outputStream.toString()).isNotBlank(); } + + @Test + public void issue870_renderDoesNotFailWhenSchemaIsNullButExampleChanged() { + MarkdownRender render = new MarkdownRender(); + ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); + OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream); + ChangedOpenApi diff = + OpenApiCompare.fromLocations( + "issue-865-null-schema-1.yaml", "issue-865-null-schema-2.yaml"); + render.render(diff, outputStreamWriter); + assertThat(outputStream.toString()).isNotBlank(); + } }