Skip to content

Conversation

@martincostello
Copy link
Collaborator

Update Microsoft.OpenApi to version 2.0.0-preview.17 using the latest daily build of ASP.NET Core 10 preview 4.

This PR is mainly to get a head-start on adapting to the breaking changes between 2.0.0-preview.11 and 2.0.0-preview.17 of Microsoft.OpenApi.

@martincostello martincostello added dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code labels Apr 28, 2025
@codecov-commenter
Copy link

codecov-commenter commented Apr 28, 2025

❌ 10 Tests Failed:

Tests completed Failed Passed Skipped
2784 10 2774 9
View the top 3 failed test(s) by shortest run time
TestFirst.IntegrationTests.GetProductsTests::GetProducsts_Returns200_IfRequiredParametersProvided
Stack Traces | 0.00076s run time
at Swashbuckle.AspNetCore.ApiTesting.OpenApiDocumentExtensions.TryFindOperationById(OpenApiDocument openApiDocument, String operationId, String& pathTemplate, HttpMethod& operationType) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/OpenApiDocumentExtensions.cs:line 14
   at Swashbuckle.AspNetCore.ApiTesting.ApiTestRunnerBase.TestAsync(String documentName, String operationId, String expectedStatusCode, HttpRequestMessage request, HttpClient httpClient) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/ApiTestRunnerBase.cs:line 55
   at Swashbuckle.AspNetCore.ApiTesting.Xunit.ApiTestFixture`1.TestAsync(String operationId, String expectedStatusCode, HttpRequestMessage request) in ........./_/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/ApiTestFixture.cs:line 25
   at TestFirst.IntegrationTests.GetProductsTests.GetProducsts_Returns200_IfRequiredParametersProvided() in .../test/WebSites/TestFirst.IntegrationTests/GetProductsTests.cs:line 18
--- End of stack trace from previous location ---
TestFirst.IntegrationTests.CreateProductTests::CreateProduct_Returns400_IfContentIsInValid
Stack Traces | 0.000934s run time
at Swashbuckle.AspNetCore.ApiTesting.OpenApiDocumentExtensions.TryFindOperationById(OpenApiDocument openApiDocument, String operationId, String& pathTemplate, HttpMethod& operationType) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/OpenApiDocumentExtensions.cs:line 14
   at Swashbuckle.AspNetCore.ApiTesting.ApiTestRunnerBase.TestAsync(String documentName, String operationId, String expectedStatusCode, HttpRequestMessage request, HttpClient httpClient) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/ApiTestRunnerBase.cs:line 55
   at Swashbuckle.AspNetCore.ApiTesting.Xunit.ApiTestFixture`1.TestAsync(String operationId, String expectedStatusCode, HttpRequestMessage request) in ........./_/src/Swashbuckle.AspNetCore.ApiTesting.Xunit/ApiTestFixture.cs:line 25
   at TestFirst.IntegrationTests.CreateProductTests.CreateProduct_Returns400_IfContentIsInValid() in .../test/WebSites/TestFirst.IntegrationTests/CreateProductTests.cs:line 33
--- End of stack trace from previous location ---
TestFirst.IntegrationTests.GetProductsTests::GetProducsts_Returns200_IfRequiredParametersProvided
Stack Traces | 0.001s run time
at Microsoft.OpenApi.Reader.OpenApiModelFactory.InternalLoad(MemoryStream input, String format, OpenApiReaderSettings settings)
   at Microsoft.OpenApi.Reader.OpenApiModelFactory.Load(MemoryStream stream, String format, OpenApiReaderSettings settings)
   at Microsoft.OpenApi.Models.OpenApiDocument.Load(MemoryStream stream, String format, OpenApiReaderSettings settings)
   at Swashbuckle.AspNetCore.ApiTesting.ApiTestRunnerOptionsExtensions.AddOpenApiFile(ApiTestRunnerOptions options, String documentName, String filePath) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/ApiTestRunnerOptionsExtensions.cs:line 15
   at TestFirst.IntegrationTests.ApiTestRunner.<>c.<.ctor>b__0_0(ApiTestRunnerOptions c) in .../test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs:line 18
   at Swashbuckle.AspNetCore.ApiTesting.ApiTestRunnerBase.Configure(Action`1 setupAction) in ....../_/src/Swashbuckle.AspNetCore.ApiTesting/ApiTestRunnerBase.cs:line 21
   at TestFirst.IntegrationTests.ApiTestRunner..ctor() in .../test/WebSites/TestFirst.IntegrationTests/ApiTestsSetup.cs:line 11
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@bkoelman
Copy link
Contributor

It's a pain that we lost all sorting. Related conversation: microsoft/OpenAPI.NET#1314 (comment).

@martincostello
Copy link
Collaborator Author

Yeah - I was going to look tomorrow at having the code sort the lists before returning the document to the caller. It's not ideal, but it's a partial solution until/unless they revert the changes to use specific concrete types.

Subclassing List<T> might also be an option - either way is more code for us to maintain...

@bkoelman
Copy link
Contributor

I wonder why they changed all signatures from IList<> to List<>, etc. If the reason is because of CA1859, subclassing is going to undo those benefits. And recursively sorting afterwards also results in a magnitude worse performance.

I quickly hacked together something here to unblock me and see what else breaks. But to do the sorting properly, it needs to be done recursively, such as here. Hope that helps.

@martincostello
Copy link
Collaborator Author

Yeah, a recursive approach was what I was going to do. I have benchmarks in a consuming repository, so I can see the effect (albeit very localised on a small API surface) after the changes to see how bad it is.

martincostello added a commit that referenced this pull request Apr 29, 2025
Cherry-pick changes from #3386 to prepare for ASP.NET Core 10 preview 4 and Microsoft.OpenApi 2.0.0-preview.17.
martincostello added a commit that referenced this pull request Apr 29, 2025
Cherry-pick changes from #3386 to prepare for ASP.NET Core 10 preview 4 and Microsoft.OpenApi 2.0.0-preview.17.
Update Microsoft.OpenApi to version 2.0.0-preview.17 using the latest daily build of ASP.NET Core 10 preview 4.
Update API baselines for change from `OperationType` to `HttpMethod `.
.NET 8 and 9 TestFirst integration tests are failing, so skip for now.
@martincostello
Copy link
Collaborator Author

Not sure why the build is failing, but (disregarding the fact it's using a daily build) this should be "done" for supporting Microsoft.OpenApi 2.0.0-preview.17.

Use the new `SerializeAs()` method to resolve TODOs.
Use the right writer.
@bkoelman
Copy link
Contributor

bkoelman commented May 1, 2025

I suspect that 04b52e9#r156107432 got lost in the conversation. The actual issue has been resolved, but the concern about copying remains.

@martincostello do you have an opinion here?

Fix build for official build of .NET 10 preview 4.
Disable tests failing due to yet-to-be-logged issue with the OpenAPI document being truncated/not flushed.
Fix incorrect file name.
Publish NuGet packages to the workflow even if tests fail.
@martincostello martincostello marked this pull request as ready for review May 15, 2025 13:47
@martincostello
Copy link
Collaborator Author

Merging with dotnet test returning 1 for some unknown reason.

@martincostello martincostello merged commit 91b6649 into dotnet-vnext May 15, 2025
3 of 6 checks passed
@martincostello martincostello deleted the dotnet-10-preview.4 branch May 15, 2025 13:48
martincostello added a commit that referenced this pull request Nov 11, 2025
* Support .NET 10

- Add support for ASP.NET Core 10 and Microsoft.OpenApi v2.
- Add opt-in support for OpenAPI 3.1 when targeting `net10.0`.

* Fix test

Fix broken test.

* Remove obsolete method

Remove obsolete method.

* Update to ASP.NET Core 10 preview 2

Update to preview 2 of ASP.NET Core 10, which includes Microsoft.OpenApi 2.0.0-preview7.

* Add TODO

Add TODO to use `SerializeAs()`.

* Partially fix security requirement issue

Use `AddComponent()` to ensure references work correctly.

* Fix test

Fix test by passing the current `OpenApiDocument` to the filter contexts so it can be used to resolve the references.

* Fix test

Fix broken test.

* Fix type tests

Account for flags enum.

* Fix missing descriptions

Fix missing descriptions in .NET 10.

* Refactor fix

Restore the sample projects to how they were, and instead adjust the annotation filters to consider parameters and properties for records.

* Fix package reference

Fix missed rename in merge.

* Fix xUnit1051 warnings

Fix xUnit1051 warnings

* Update to ASP.NET Core 10 preview 3 (#3361)

Update to preview 3 of ASP.NET Core 10.

* Update NuGet packages

Update NuGet packages for .NET 10 preview 3.

* Link to issue

Update Skip with link to GitHub issue.

* Fix typo

"respository" ➡️ "repository".

* Fix tag serialization

Add tags to the document before adding them to the operations as a workaround for microsoft/OpenAPI.NET#2319.

* Fix merge

Fix bad merge with default branch.

* Add issue reference

Add comment with link to issue.

* Remove TODO

Based on tests passing, I think it is correct.

* Fix formatting

Adjust formatting to match what it would be without the pragma.

* Prepare for .NET 10 preview 4 (#3388)

Cherry-pick changes from #3386 to prepare for ASP.NET Core 10 preview 4 and Microsoft.OpenApi 2.0.0-preview.17.

* Fix nullability for null schema Type

Fix bitmasks for adding `JsonSchemaType.Null` if the `Type` is null.

Resolves #3387.

* Re-enable MyGet

Re-enable MyGet on the off-chance that it was a transient issue and has self-resolved.

* Fix rebase

Fix changes after merge from main.

* Skip failing tets

Skip failing tests for now - re-visit once ASP.NET Core 10 preview.4 lets us update to Microsoft.OpenApi 2.0.0-preview.17.

* Update MyGet publish URL

See if the issue is specific to the old V2 push endpoint.

* Re-disable MyGet publishing

Using the v3 feed didn't fix it.

* Update to Microsoft.OpenApi 2.0.0 preview 17

Update Microsoft.OpenApi to version 2.0.0-preview.17 using the latest daily build of ASP.NET Core 10 preview 4.

* Fix API baselines

Update API baselines for change from `OperationType` to `HttpMethod `.

* Skip failing tests

.NET 8 and 9 TestFirst integration tests are failing, so skip for now.

* Use SerializeAs

Use the new `SerializeAs()` method to resolve TODOs.

* Fix build

Use the right writer.

* Apply suggestions from code review

* Fix build

Fix build for official build of .NET 10 preview 4.

* Disable failing tests

Disable tests failing due to yet-to-be-logged issue with the OpenAPI document being truncated/not flushed.

* Fix MergeWith

Fix incorrect file name.

* Publish packages

Publish NuGet packages to the workflow even if tests fail.

* Fix tests

Fix tests due to error in test setup fixture caused by changes in microsoft/OpenAPI.NET#2325.

* Remove workaround

Remove workaround needed for previous preview versions.

* Re-enable tests

Re-enable three skipped tests that are no longer failing.

* Re-enable MyGet publishing

Re-enable publishing to MyGet.

* Apply review suggestions

Apply some of the code-review suggestions. More to follow.

* Workaround VS issue

Workaround issue building the solution in Visual Studio.

* Fix culture-insensitive handling of numbers with [Range] (#3426)

Fix incorrect handling of culture-sensitivity for number ranges.

* Refactor method

Rename constant and move culture to variable.

* Fix range parsing

- Use the correct culture to parse `[Range]`.
- Update snapshots.

* Sort AnyOf and OneOf

Address code review comment.

* Update issue number

Point to latest issue number.

* Refactor [Range] handling

Refactor how `[Range]` is handled to match how ASP.NET Core 10 does.

* Add test cases for `[Range]`

Add various test cases for the behaviour of `[Range]` applying changes to `OpenApiSchema` instances.

* Refactor method to avoid round-trip

Refactor method to avoid redundant round-trip parse/format when the `Maximum` and `Minimum` properties are not strings.

* Tweak comment

Fix grammar.

* Fix comment

Add another missing word.

* Fix conversion

Convert to `decimal` not `double`.

* Update snapshot

Update snapshot after merge.

* Update .NET SDK to 10.0.100-preview.5.25277.114 (#3451)

* Update .NET SDK

Update .NET SDK to version 10.0.100-preview.5.25277.114.

---
updated-dependencies:
- dependency-name: Microsoft.NET.Sdk
  dependency-version: 10.0.100-preview.5.25277.114
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>

* Bump NuGet packages

Update NuGet packages for .NET 10 preview 5.

---------

Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Martin Costello <[email protected]>

* Bump Microsoft.OpenApi

Bump Microsoft.OpenApi for .NET 10 preview 5.

* Fix build

Update `OpenApiAny` to `JsonNodeExtension`.

* Fix line endings

Fix-up line endings.

* Validate TypedResults is supported for ASP.NET Core 10 (#3455)

Co-authored-by: Javier García de la Noceda Argüelles <[email protected]>

* Support [ProducesResponseType], [Produces], and [ProducesDefaultResponseType] (#3456)

Add support for populating the description for an OpenAPI operation from `[ProducesResponseType]`, `[Produces]`, and/or `[ProducesDefaultResponseType]`.

Resolves #3099.

* Remove workarounds

Remove workarounds from earlier previews.

* Apply suggestions from code review

* Fix build

Fix build after merge.

* Fix package version

Update from preview 1 to preview 5.

* Update PublicAPI baselines

Move renames from Shipped to Unshipped files.

* Update _SdkTasksTFM

Update the value of `_SdkTasksTFM` for .NET 10.

* Update to ASP.NET Core 10 preview.6 (#3479)

Update to ASP.NET Core 10 preview 6 and Microsoft.OpenApi 2.0.0-preview.29.

* Update Microsoft.OpenApi to 2.0.0

Update to the stable release of Microsoft.OpenApi 2.0.0.

* Remove WithOpenApi usage

`WithOpenApi()` will be deprecated in .NET 10 preview 7.

See aspnet/Announcements#519.

* Remove redundant references

Remove redundant references to `Microsoft.AspNetCore.OpenApi`.

* Add UI tests for SwaggerUI and Redoc

Add end-to-end UI tests for SwaggerUI and Redoc to help validate upstream changes.

Resolves #3514.

* Update allowed licenses

Update licenses for Microsoft.OpenApi 2.0.0.

* Update to ASP.NET Core 10 preview 7

Update to preview 7 of ASP.NET Core 10.

* Remove workaround

Remove workaround for resolved issue.

* Bump Microsoft.OpenApi to 2.1.0

- Bump Microsoft.OpenApi to 2.1.0 in test projects.
- Pin to 2.0.0 in shipping packages.

* Verify OpenAPI documents

Verify there are no errors or warnings.

* Update snapshots

Update snapshot baselines.

* Apply suggestions from code review

Bump version to match other TFMs.

* Update to .NET 10 RC1 (#3556)

- Update to release candidate 1 of .NET 10.
- Fix or suppress `ASPDEPR004` and `ASPDEPR008` warnings.

* Fix deprecation warnings

Fix `ASPDEPR004` and `ASPDEPR008` warnings.

* Fix whitespace

Fix-up formatting and package versions.

* Resolve TODO

NSwag now supports .NET 10.

* Bump Duende.IdentityServer

Update Duende.IdentityServer for .NET 10.

* Simplify reference

Remove duplication by defining the reference once.

* Update documentation for v10 and OpenAPI 3.1 (#3585)

- Update the READMEs for changes in v10.
- Update most references to Swagger to OpenAPI.
- Add migration guide for v9 to v10.
- Add the version of Microsoft.OpenApi included to the version table.
- Support for generating code snippets in the documentation from code that is checked to compile.

* Fix build

Fix bad merge.

* Update Microsoft.OpenApi

Bump to v2.3.4.

* Bump Microsoft.OpenApi

Bump Microsoft.OpenApi to 2.3.5.

* Update to .NET 10 RC2

Update to Release Candidate 2 of .NET 10.

* Bump Microsoft.OpenApi

Bump Microsoft.OpenApi to 2.3.6.

* Update Microsoft.OpenApi

Update to 2.3.7.

* Bump Microsoft.OpenApi

Update to 2.3.8.

* Initialized Security property (#3635)

Avoid `NullReferenceException` in synchronous code path.

* Bump Microsoft.OpenApi

Bump Microsoft.OpenApi to 2.3.9.

* Bump Microsoft.OpenApi

Update Microsoft.OpenApi package version to 2.3.0.

* Bump Microsoft.OpenApi

Update Microsoft.OpenApi package version to 2.3.0.

* Update migration guide

- Call out some additional required changes.
- Add specific package versions.
- Link to the Microsoft.AspNetCore.OpenApi NuGet package.

* Add upgrade tip

Added a recommendation to upgrade to Swashbuckle.AspNetCore v9.0.6 before migrating to v10.

* Update to .NET 10 GA

Update to stable release of .NET 10.

---------

Signed-off-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Bart Koelman <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Javier García de la Noceda Argüelles <[email protected]>
Co-authored-by: Javier García de la Noceda Argüelles <[email protected]>
Co-authored-by: Cesar Roux dit Buisson <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file .NET Pull requests that update .NET code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants