[Repo Assist] feat: remove SwaggerClientProvider and v2 compiler, simplify folder structure#377
Merged
sergey-tihon merged 5 commits intomasterfrom Apr 13, 2026
Conversation
…tructure Closes #376 Changes: - Remove SwaggerClientProvider (deprecated v2 type provider) - Remove v2 compiler pipeline (Parser, DefinitionCompiler, OperationCompiler) - Remove v2-specific provider tests and schema test files - Move v3 compiler files from v3/ subfolders to project roots - Rename namespace SwaggerProvider.Internal.v3.Compilers -> SwaggerProvider.Internal.Compilers - Flatten Schemas/v2/ and Schemas/v3/ into Schemas/ root - Move gettyimages.com.json to unsupported/ (fails v3 compiler pipeline) - Update docs: remove SwaggerClientProvider.md, update index.html nav - Update Schema.Parser.Tests.fs to use only v3 pipeline OpenApiClientProvider supports both OpenAPI 3.0 and Swagger 2.0 via Microsoft.OpenApi, so no functionality is lost. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lient-provider-eb303ce51497eef0
…flattening The folder restructuring in 43311e5 moved test files from v3/ subdirectories to project roots but incorrectly updated relative schema paths (/../Schemas/ instead of /Schemas/) and left a stale Swashbuckle.v3 module reference.
Contributor
There was a problem hiding this comment.
Pull request overview
Removes the deprecated SwaggerClientProvider and the repository’s custom Swagger 2.0 (v2) parser/compiler pipeline, consolidating everything onto the OpenApiClientProvider + Microsoft.OpenApi-based compiler path and flattening the folder structure accordingly.
Changes:
- Removed
SwaggerClientProviderand all design-time v2 parser/compiler sources. - Flattened/renamed the v3 compiler namespace to
SwaggerProvider.Internal.Compilersand updated tests accordingly. - Restructured test schemas and provider tests (remove v2 suites, move/rename schema fixtures, update paths/docs).
Reviewed changes
Copilot reviewed 55 out of 76 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| tests/SwaggerProvider.Tests/v2/Schema.Spec.Yaml.Tests.fs | Removed v2 parser YAML tests |
| tests/SwaggerProvider.Tests/v2/Schema.Spec.Json.Tests.fs | Removed v2 parser JSON tests |
| tests/SwaggerProvider.Tests/v2/Schema.PathsTests.fs | Removed v2 paths tests |
| tests/SwaggerProvider.Tests/v2/Schema.DefinitionsTests.fs | Removed v2 definitions tests |
| tests/SwaggerProvider.Tests/SwaggerProvider.Tests.fsproj | Drop v2 tests; flatten v3 test includes |
| tests/SwaggerProvider.Tests/SsrfSecurityTests.fs | Update schema path for SSRF test |
| tests/SwaggerProvider.Tests/Schema.XmlDocTests.fs | Update module + compiler namespace import |
| tests/SwaggerProvider.Tests/Schema.V2SchemaCompilationTests.fs | Update module + compiler namespace import |
| tests/SwaggerProvider.Tests/Schema.TypeMappingTests.fs | Update module name |
| tests/SwaggerProvider.Tests/Schema.TestHelpers.fs | Update module + compiler namespace import |
| tests/SwaggerProvider.Tests/Schema.Parser.Tests.fs | Remove v2 pipeline usage; update paths/modules |
| tests/SwaggerProvider.Tests/Schema.OperationCompilationTests.fs | Update module name |
| tests/SwaggerProvider.Tests/Schema.DefinitionPathTests.fs | Update module + compiler namespace import |
| tests/SwaggerProvider.Tests/Schema.ArrayAndMapTypeMappingTests.fs | Update module name |
| tests/SwaggerProvider.Tests/PathResolutionTests.fs | Update schema fixture paths |
| tests/SwaggerProvider.ProviderTests/v2/Swashbuckle.UpdateControllers.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swashbuckle.SpecialCasesControllers.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swashbuckle.ReturnControllers.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swashbuckle.ResourceControllers.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swashbuckle.NoContentControllers.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.i0027.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.Slack.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.PetStore.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.Namespaces.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.Instagram.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/v2/Swagger.GitHub.Tests.fs | Removed v2 provider test |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.UpdateControllers.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.SpecialCasesControllers.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.ReturnTextControllers.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.ReturnControllers.Tests.fs | Flatten module name |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.ResourceControllers.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.NoContentControllers.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.FileController.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/Swashbuckle.CancellationToken.Tests.fs | Flatten module + update imports |
| tests/SwaggerProvider.ProviderTests/SwaggerProvider.ProviderTests.fsproj | Remove v2 includes; flatten v3 includes |
| tests/SwaggerProvider.ProviderTests/Swagger.SchemaReaderErrors.Tests.fs | Update schema fixture paths |
| tests/SwaggerProvider.ProviderTests/Swagger.PetStore.Tests.fs | Flatten module name |
| tests/SwaggerProvider.ProviderTests/Swagger.NullableDate.Tests.fs | Update schema fixture path |
| tests/SwaggerProvider.ProviderTests/Swagger.I0279.Tests.fs | Update schema fixture path |
| tests/SwaggerProvider.ProviderTests/Swagger.I0219.Tests.fs | Update schema fixture path |
| tests/SwaggerProvider.ProviderTests/Swagger.I0181.Tests.fs | Update schema fixture path |
| tests/SwaggerProvider.ProviderTests/Swagger.I0173.Tests.fs | Update schema fixture path |
| tests/SwaggerProvider.ProviderTests/Schemas/unsupported/issue0204.yaml | Add unsupported schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/swashbuckle.json | Add v2 schema fixture for tests |
| tests/SwaggerProvider.ProviderTests/Schemas/petstore.yaml | Add v3 petstore fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/petstore-v2.json | Add renamed v2 petstore fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/nullable-parameter-issue261.json | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/nullable-date.yaml | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/issue255.yaml | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/issue181.yaml | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/issue132.json | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/i0027.json | Add schema fixture |
| tests/SwaggerProvider.ProviderTests/Schemas/github.json | Add schema fixture |
| src/SwaggerProvider.DesignTime/v2/Parser/SwaggerParser.fs | Removed v2 parser implementation |
| src/SwaggerProvider.DesignTime/v2/Parser/SchemaParserExceptions.fs | Removed v2 parser exceptions |
| src/SwaggerProvider.DesignTime/v2/Parser/Schema.fs | Removed v2 schema model types |
| src/SwaggerProvider.DesignTime/v2/Parser/Parsers.fs | Removed v2 parsing pipeline |
| src/SwaggerProvider.DesignTime/v2/OperationCompiler.fs | Removed v2 operation compiler |
| src/SwaggerProvider.DesignTime/v2/DefinitionCompiler.fs | Removed v2 definition compiler |
| src/SwaggerProvider.DesignTime/SwaggerProvider.DesignTime.fsproj | Remove v2 sources + Swagger provider; include flattened compilers |
| src/SwaggerProvider.DesignTime/Provider.SwaggerClient.fs | Removed deprecated type provider |
| src/SwaggerProvider.DesignTime/Provider.OpenApiClient.fs | Update compiler namespace import |
| src/SwaggerProvider.DesignTime/OperationCompiler.fs | Rename namespace to Internal.Compilers |
| src/SwaggerProvider.DesignTime/DefinitionCompiler.fs | Rename namespace to Internal.Compilers |
| paket.lock | Update git dependency SHAs |
| docs/index.html | Remove SwaggerClientProvider sidebar link |
| docs/SwaggerClientProvider.md | Remove deprecated docs page |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
6 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 This is an automated PR from Repo Assist.
Closes #376
Summary
Removes the deprecated
SwaggerClientProviderand the entire custom Swagger 2.0 parser/compiler pipeline.OpenApiClientProvideralready handles both OpenAPI 3.0 and Swagger 2.0 schemas via Microsoft.OpenApi — no functionality is lost.Changes
Source (DesignTime)
Provider.SwaggerClient.fs— the deprecatedSwaggerClientProvidertype providerv2/folder — custom Swagger 2.0 Parser, DefinitionCompiler, OperationCompiler (~1,700 lines)v3/DefinitionCompiler.fs→DefinitionCompiler.fs(root)v3/OperationCompiler.fs→OperationCompiler.fs(root)SwaggerProvider.Internal.v3.Compilers→SwaggerProvider.Internal.CompilersTests
tests/SwaggerProvider.ProviderTests/v2/— 11 test files usingSwaggerClientProvidertests/SwaggerProvider.Tests/v2/— 4 unit test files for the v2 parserv3/test files to root in both test projectsSchemas/v2/andSchemas/v3/intoSchemas/rootpetstore.json(v2) →petstore-v2.jsonto avoid name clash withpetstore.yaml(v3)gettyimages.com.json→unsupported/(fails v3 compiler pipeline — pre-existing issue with type-name slot conflict)Schema.Parser.Tests.fs— removed theV2module; all schemas now parsed through the v3 pipelineDocs
docs/SwaggerClientProvider.mddocs/index.html— removed sidebar link to SwaggerClientProviderTest Status
Build: ✅ 0 errors, warnings only (pre-existing)
Unit tests: ✅ 257 passed, 0 failed, 1 skipped (the same skip as before)
Integration (provider) tests require a running test server — not run in this environment, but the project builds cleanly.
Notes
OpenApiClientProvideruses Microsoft.OpenApi which natively supports both Swagger 2.0 and OpenAPI 3.0. All v2 schema files are retained inSchemas/so they continue to be exercised by theParsetheory tests via the v3 compiler pipeline.gettyimages.com.jsonschema was moved tounsupported/because it triggers a pre-existing type-name collision in the v3 DefinitionCompiler — this is unrelated to this PR and can be tracked separately.