Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Property `type` change on referenced component schema is silently ignored

Aberta
#910 1 comentário 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
68/100
Tipo de issue
Bug
Clareza
Claramente especificada
Status de atividade
Pouca atividade
Stack de tecnologia
java

Direção de pesquisa

Comece em OpenApiCompare.fromContents e fromSpecifications, usando a reprodução old.yaml/new.yaml fornecida com ParseOptions.setResolveFully(true). Rastreie como ChangedOpenApi registra alterações nos schemas referenciados e onde Schema.getType()/getTypes() são comparados. Considera-se concluído quando a alteração de weight de integer para string produz um resultado não vazio de changedOperations ou changedSchemas com uma entrada INCOMPATIBLE, enquanto as alterações em required e enum continuam sendo detectadas.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug OpenAP 3.1.0 Support

Library version: org.openapitools.openapidiff:openapi-diff-core:2.1.7
Java: 21
OpenAPI version of test specs: 3.1.0 (also reproduces on 3.0.x)

Summary

When the only difference between two specs is a type change on a property of a referenced component schema, OpenApiCompare.fromContents reports zero changes. Both getChangedOperations() and getChangedSchemas() are empty. Other property-level changes (required list deltas, enum value deltas) on the same referenced schema are detected normally — only type swaps are dropped.

Minimal reproduction

old.yaml:

openapi: 3.1.0
info:
  title: t
  version: '1'
paths:
  /widgets:
    get:
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
components:
  schemas:
    Widget:
      type: object
      properties:
        weight:
          type: integer

new.yaml — identical except for weight.type:

openapi: 3.1.0
info:
  title: t
  version: '1'
paths:
  /widgets:
    get:
      responses:
        '200':
          description: ok
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Widget'
components:
  schemas:
    Widget:
      type: object
      properties:
        weight:
          type: string
import org.openapitools.openapidiff.core.OpenApiCompare;
import org.openapitools.openapidiff.core.model.ChangedOpenApi;
import java.nio.file.*;

public class Repro {
    public static void main(String[] a) throws Exception {
        String prev = Files.readString(Path.of("old.yaml"));
        String curr = Files.readString(Path.of("new.yaml"));
        ChangedOpenApi d = OpenApiCompare.fromContents(prev, curr);
        System.out.println("missingEndpoints: " + d.getMissingEndpoints().size());
        System.out.println("newEndpoints:     " + d.getNewEndpoints().size());
        System.out.println("changedOperations:" + d.getChangedOperations().size());
        System.out.println("changedSchemas:   " + d.getChangedSchemas().size());
    }
}
Actual output
missingEndpoints: 0
newEndpoints:     0
changedOperations:0
changedSchemas:   0
Expected output

A non-empty changedOperations (or changedSchemas) containing an INCOMPATIBLE entry for the property weight on Widget.

Other findings
  • Reproduces with OpenAPIParser + ParseOptions.setResolveFully(true) and OpenApiCompare.fromSpecifications(...).
  • Inverting the spec versions (3.1.0 ↔ 3.0.3) does not change the result.
  • The same fixture with a required: list change instead (e.g. adding weight to required) is detected correctly — changedOperations and changedSchemas are populated. So the parser does diff the referenced schema; only the type field is being skipped.
  • As a workaround, walking the resolved Schema tree manually after setResolveFully(true) and comparing Schema.getType() / Schema.getTypes() recovers the change.

Happy to put up a PR if pointers to where the schema-type comparator lives would help.

Linguagem predominante
Java
Estrelas
1.1k
Forks
190
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de OpenAPITools/openapi-diff

Todas as issues de OpenAPITools/openapi-diff

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.