Migrate to libopenapi by yozel · Pull Request #1388 · oapi-codegen/oapi-codegen

This pull request is a complete migration to libopenapi. Almost the tests and examples generates the same code, except embedded swaggerSpec files. While semantically its the same, due to change of order of object keys in the Json, it generates a different gzipped base64.

There is only one tests that fails, which is internal/test/issues/issue-removed-external-ref. And I believe it's related to this: pb33f/libopenapi#219. I'm following/contributing to the thread to solve the issue.

The generated code continues to use kin-api since validation logic depends on middleware repos, which still uses kin-api.

Test results:

$ go test ./...
?   	github.com/deepmap/oapi-codegen/v2/pkg/ecdsafile	[no test files]
?   	github.com/deepmap/oapi-codegen/v2/pkg/securityprovider	[no test files]
ok  	github.com/deepmap/oapi-codegen/v2/cmd/oapi-codegen	0.733s
ok  	github.com/deepmap/oapi-codegen/v2/pkg/codegen	6.210s
ok  	github.com/deepmap/oapi-codegen/v2/pkg/util	(cached)

The MR also includes regenerated *.gen.go files, so you can compare the difference.

$ cd ./internal/test
$ go generate -v ./...
all_of/doc.go
all_of/v1/openapi.gen.go
all_of/v2/openapi.gen.go
any_of/param/doc.go
any_of/param/param.gen.go
any_of/param/param_test.go
client/client.gen.go
client/client_test.go
client/doc.go
components/components.gen.go
components/components_test.go
components/doc.go
externalref/doc.go
externalref/externalref.gen.go
externalref/imports_test.go
externalref/packageA/doc.go
externalref/packageA/externalref.gen.go
externalref/packageB/doc.go
externalref/packageB/externalref.gen.go
issues/issue-1087/api.gen.go
issues/issue-1087/doc.go
issues/issue-1087/deps/deps.gen.go
issues/issue-1087/deps/doc.go
issues/issue-1093/doc.go
issues/issue-1093/issue_test.go
issues/issue-1093/api/child/child.gen.go
issues/issue-1093/api/parent/parent.gen.go
issues/issue-1127/api.gen.go
issues/issue-1127/doc.go
issues/issue-1168/api.gen.go
issues/issue-1168/doc.go
issues/issue-1180/doc.go
issues/issue-1180/issue.gen.go
issues/issue-1180/issue_test.go
issues/issue-1182/pkg1/doc.go
issues/issue-1182/pkg1/pkg1.gen.go
issues/issue-1182/pkg2/doc.go
issues/issue-1182/pkg2/pkg2.gen.go
issues/issue-1189/doc.go
issues/issue-1189/issue1189.gen.go
issues/issue-1208-1209/doc.go
issues/issue-1208-1209/issue-multi-json.gen.go
issues/issue-1208-1209/issue-multi-json_test.go
issues/issue-1212/pkg1/doc.go
issues/issue-1212/pkg1/pkg1.gen.go
issues/issue-1212/pkg2/doc.go
issues/issue-1212/pkg2/pkg2.gen.go
issues/issue-1219/doc.go
issues/issue-1219/issue.gen.go
issues/issue-1219/issue_test.go
issues/issue-1298/doc.go
issues/issue-1298/issue1298.gen.go
issues/issue-1298/issue1298_test.go
issues/issue-312/doc.go
issues/issue-312/issue.gen.go
issues/issue-312/issue_test.go
issues/issue-52/doc.go
issues/issue-52/issue.gen.go
issues/issue-52/issue_test.go
issues/issue-579/gen.go
issues/issue-579/issue.gen.go
issues/issue-579/issue_test.go
issues/issue-832/generate.go
issues/issue-832/issue.gen.go
issues/issue-936/api.gen.go
issues/issue-936/gen.go
issues/issue-grab_import_names/doc.go
issues/issue-grab_import_names/issue.gen.go
issues/issue-grab_import_names/issue_test.go
issues/issue-head-digit-of-httpheader/doc.go
issues/issue-head-digit-of-httpheader/issue.gen.go
issues/issue-head-digit-of-operation-id/doc.go
issues/issue-head-digit-of-operation-id/issue.gen.go
issues/issue-illegal_enum_names/doc.go
issues/issue-illegal_enum_names/issue.gen.go
issues/issue-illegal_enum_names/issue_test.go
issues/issue-removed-external-ref/doc.go
issues/issue-removed-external-ref/gen/spec_base/issue.gen.go
issues/issue-removed-external-ref/gen/spec_ext/issue.gen.go
parameters/doc.go
parameters/parameters.gen.go
parameters/parameters_test.go
schemas/doc.go
schemas/schemas.gen.go
server/doc.go
server/server.gen.go
server/server_test.go
strict-server/strict_test.go
strict-server/chi/server.gen.go
strict-server/chi/server.go
strict-server/chi/types.gen.go
strict-server/client/client.gen.go
strict-server/client/client.go
strict-server/echo/server.gen.go
strict-server/echo/server.go
strict-server/echo/types.gen.go
strict-server/fiber/server.gen.go
strict-server/fiber/server.go
strict-server/fiber/types.gen.go
strict-server/gin/server.gen.go
strict-server/gin/server.go
strict-server/gin/types.gen.go
strict-server/gorilla/server.gen.go
strict-server/gorilla/server.go
strict-server/gorilla/types.gen.go
strict-server/iris/server.gen.go
strict-server/iris/server.go
strict-server/iris/types.gen.go
$ cd examples
$ go generate -v ./...
authenticated-api/echo/main.go
authenticated-api/echo/api/api.gen.go
authenticated-api/echo/api/doc.go
authenticated-api/echo/server/fake_jws.go
authenticated-api/echo/server/jwt_authenticator.go
authenticated-api/echo/server/server.go
authenticated-api/echo/server/server_test.go
custom-client-type/custom-client-type.gen.go
custom-client-type/doc.go
no-vcs-version-override/echo/api/api.gen.go
no-vcs-version-override/echo/api/doc.go
petstore-expanded/petstore-client.gen.go
petstore-expanded/chi/petstore.go
petstore-expanded/chi/petstore_test.go
petstore-expanded/chi/api/petstore.gen.go
petstore-expanded/chi/api/petstore.go
petstore-expanded/echo/petstore.go
petstore-expanded/echo/petstore_test.go
petstore-expanded/echo/pkg_codegen_petstore_test.go
petstore-expanded/echo/api/petstore-server.gen.go
petstore-expanded/echo/api/petstore.go
petstore-expanded/echo/api/models/models.gen.go
petstore-expanded/fiber/petstore.go
petstore-expanded/fiber/petstore_test.go
petstore-expanded/fiber/api/petstore-server.gen.go
petstore-expanded/fiber/api/petstore-types.gen.go
petstore-expanded/fiber/api/petstore.go
petstore-expanded/gin/petstore.go
petstore-expanded/gin/petstore_test.go
petstore-expanded/gin/api/petstore-server.gen.go
petstore-expanded/gin/api/petstore-types.gen.go
petstore-expanded/gin/api/petstore.go
petstore-expanded/gorilla/petstore.go
petstore-expanded/gorilla/petstore_test.go
petstore-expanded/gorilla/api/petstore.gen.go
petstore-expanded/gorilla/api/petstore.go
petstore-expanded/internal/doc.go
petstore-expanded/iris/petstore.go
petstore-expanded/iris/petstore_test.go
petstore-expanded/iris/api/petstore-server.gen.go
petstore-expanded/iris/api/petstore-types.gen.go
petstore-expanded/iris/api/petstore.go
petstore-expanded/strict/petstore.go
petstore-expanded/strict/petstore_test.go
petstore-expanded/strict/api/petstore-server.gen.go
petstore-expanded/strict/api/petstore-types.gen.go
petstore-expanded/strict/api/petstore.go