OpenAPITools / openapi-diff

Utility for comparing two OpenAPI specifications.
Apache License 2.0
784 stars 153 forks source link

Getting NPE when I compare two Yaml or JSON file. #516

Closed bmistry13 closed 6 months ago

bmistry13 commented 1 year ago

Here is stack trace with issue:

docker run --rm -t -v /Users/bmistry/Downloads:/specs:ro openapitools/openapi-diff:latest /specs/old.yml /specs/new.yml
Unexpected exception. Reason: null
java.lang.NullPointerException
    at org.openapitools.openapidiff.core.compare.ParametersDiff.pathUnchangedParametersChanged(ParametersDiff.java:102)
    at org.openapitools.openapidiff.core.compare.ParametersDiff.diff(ParametersDiff.java:88)
    at org.openapitools.openapidiff.core.compare.OperationDiff.diff(OperationDiff.java:78)
    at org.openapitools.openapidiff.core.compare.PathDiff.diff(PathDiff.java:39)
    at org.openapitools.openapidiff.core.compare.PathsDiff.lambda$diff$3(PathsDiff.java:90)
    at java.util.LinkedHashMap$LinkedKeySet.forEach(LinkedHashMap.java:559)
    at org.openapitools.openapidiff.core.compare.PathsDiff.diff(PathsDiff.java:47)
    at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:96)
    at org.openapitools.openapidiff.core.compare.OpenApiDiff.compare(OpenApiDiff.java:64)
    at org.openapitools.openapidiff.core.OpenApiCompare.fromSpecifications(OpenApiCompare.java:102)
    at org.openapitools.openapidiff.core.OpenApiCompare.fromLocations(OpenApiCompare.java:91)
    at org.openapitools.openapidiff.cli.Main.main(Main.java:175)
joschi commented 1 year ago

@bmistry13 Please provide the old.yml and new.yml OpenAPI specs or alternatively a minimal reproducible example for this issue.

cliffred commented 1 year ago

Got the same error with same stack trace, parameters in the DiffContext is an empty map.

The minimal example to reproduce is to simply rename a parameter:

      parameters:
        - name: limit #rename this in the new yaml
          in: query
          description: How many items to return at one time (max 100)
          required: false
          schema:
            type: integer
            maximum: 100
            format: int32

I attached a minimal example. specs.zip

cliffred commented 1 year ago

This issue does not occur in v2.0.1. I got this while using 2.1.0-beta.5.

stoeren commented 11 months ago

This issue has been resolved in version 2.1.0-beta7 and is a duplicate of #488