Repository navigation
Refactoring a schma with "$ref" results in false positive breaking change #192
Copy link
Copy link
Labels
Breaking/Non-Breaking classificationIssues related to Breaking/Non-Breaking changes classificationIssues related to Breaking/Non-Breaking changes classificationhelp wanted
Milestone
Description
The bug
When splitting a schema into two schemas where one refers with allOf to the other the diff shows breaking change, even if the end structure is the same.
To Reproduce
Example schema old.yaml:
openapi: "3.0.0"
info:
title: Sample API
description: API description in Markdown.
version: 1.0.0
servers: []
paths:
/test:
get:
summary: Your GET endpoint
tags: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/working'
components:
schemas:
working:
type: object
properties:
foo:
type: string
bar:
type: integerExample schema new.yaml:
openapi: 3.0.0
info:
title: Sample API
description: API description in Markdown.
version: 1.1.0
servers: []
paths:
/test:
get:
summary: Your GET endpoint
tags: []
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/working'
operationId: get-test
components:
schemas:
working:
allOf:
- type: object
properties:
foo:
type: string
- $ref: '#/components/schemas/bar'
bar:
type: object
properties:
bar:
type: integerResult of docker run -v $(pwd):/tmp openapitools/openapi-diff:latest /tmp/old.yaml /tmp/new.yaml:
==========================================================================
== API CHANGE LOG ==
==========================================================================
Sample API
--------------------------------------------------------------------------
-- What's Changed --
--------------------------------------------------------------------------
- GET /test
Return Type:
- Changed 200 OK
Media types:
- Changed application/json
Schema: Broken compatibility
Changed property type: (object -> object)
--------------------------------------------------------------------------
-- Result --
--------------------------------------------------------------------------
API changes broke backward compatibility
--------------------------------------------------------------------------Expected behavior
The tool is expected to notice a change but not a breaking one since the allOf mapping results in the same schema after resolving.
Reacted by Johannes Wienke, Fabrice Gabolde, Farshad Dortadj, Alex Lutay, Benoit Brayer, Juha Syrjälä, Wilerson de Oliveira, Jon Imanol Duran, Fatih Eser, Joakim Gunst and 4 more
Metadata
Metadata
Assignees
Labels
Breaking/Non-Breaking classificationIssues related to Breaking/Non-Breaking changes classificationIssues related to Breaking/Non-Breaking changes classificationhelp wanted
Activity
Add testSameTypeResponseSchemaDIff based on issue OpenAPITools#192.
M0dM commentedon Feb 18, 2022
I have opened a PR, with a failing test with your schema examples.