OpenAPITools / openapi-diff

Utility for comparing two OpenAPI specifications.
Apache License 2.0
808 stars 154 forks source link

The current openapi-diff implementation does not capture differences in extensions that occur at the properties level (attributes under the type object) and the path level #604

Open rupeshkumarmall opened 9 months ago

rupeshkumarmall commented 9 months ago

Discussed in https://github.com/OpenAPITools/openapi-diff/discussions/603

Originally posted by **rupeshkumarmall** December 28, 2023 I have two *.yaml files named **pet_source.yaml and pet_target.yaml.** The requirement is to identify the differences between the source and target files specifically related to the extension **"x-lifecycle."** The extension "x-lifecycle" is utilized in **lines 15, 18, 20, and 92** within the **pet_source.yaml** file. Currently, the implementation can detect the differences concerning the extension only for the differences found in lines 15 and 20 (between source and target schema), but not for the other two instances (when used under **the path and the properties scope**). However, it should be functioning, at the very least, for the path, as PathDiff.java incorporates ExtensionDiff. To enhance the implementation, **### can we extend it** by introducing the PropertiesDiff.java and ChangedProperties.java classes, along with other necessary modifications in the core implementation, to recognize differences at the property level as well (solely concerning the **"x-lifecycle"** extension)? By the way, I have already added another diff implementation that identifies the difference w.r.t the extension "x-lifecycle" as mentioned below, **public class XLifecycleExtensionDiff implements ExtensionDiff** Also added a file under resources directory, openapi-diff-2.0.1\core\src\main\resources\META-INF\services\org.openapitools.openapidiff.core.compare.ExtensionDiff with the content "**org.openapitools.openapidiff.core.compare.XLifecycleExtensionDiff**" Attaching the source & the target file, [sample_yaml_for_diff.zip](https://github.com/OpenAPITools/openapi-diff/files/13786199/sample_yaml_for_diff.zip)