OpenAPITools / openapi-diff

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

Doesn't detect change in API #216

Open daniasuheimat opened 3 years ago

daniasuheimat commented 3 years ago

I've been using openapi-diff to provide a summary output for any breaking changes happening in our CI/CD pipeline, and it doesn't seem to be detecting some of the changes, for example this one:

old.yaml:

  common_metadata_properties: &common_metadata_properties
    ctime:
      description: >
        Creation Time: UTC date and time (in RFC3339 format) when the resource was created. If this is a system created
        resource, this will be a fixed time unaffected by user actions.
      type: string
      format: date-time
      readOnly: true
      example: 2021-01-19T12:34:16.17292498Z
    mtime:
      description: >
        Last Modification Time: UTC date and time (in RFC3339 format) when the resource was last updated. For a resource
        that cannot be modified this will be the same as `ctime`.
      type: string
      format: date-time
      readOnly: true
      example: 2021-01-19T12:36:38.207757Z
    etime:
      description: >
        Expiry Time: UTC date and time (in RFC3339 format) when the resource will be removed automatically by the system
        and become unavailable.
      type: string
      format: date-time
      readOnly: true
      nullable: true
      example: 2021-01-26T12:36:38.207757Z

new yaml:

x-aliases:
  common_metadata_properties: &common_metadata_properties
    ctime:
      description: >
        Creation Time: UTC date and time (in RFC3339 format) when the resource was created. If this is a system created
        resource, this will be a fixed time unaffected by user actions.
      type: string
      format: date-time
      readOnly: true
      example: 2021-01-19T12:34:16.17292498Z
    mtime:
      description: >
        Last Modification Time: UTC date and time (in RFC3339 format) when the resource was last updated. For a resource
        that cannot be modified this will be the same as `ctime`.
      type: string
      format: date-time
      readOnly: true
      example: 2021-01-19T12:36:38.207757Z
    # etime:
    #   description: >
    #     Expiry Time: UTC date and time (in RFC3339 format) when the resource will be removed automatically by the system
    #     and become unavailable.
    #   type: string
    #   format: date-time
    #   readOnly: true
    #   nullable: true
    #   example: 2021-01-26T12:36:38.207757Z

(The removal of the etime property is a breaking change, but the output of the openapi-diff tool is "No differences. Specifications are equivalents")

joschi commented 3 years ago

@daniasuheimat Thanks for reporting this!

Could you please provide the full OpenAPI spec or at least a minimal OpenAPI spec to demonstrate your issue?