From 5e9ec8d0dd0b8d337822acf2c3b161b7707b1e8f Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 31 Jul 2024 09:07:44 +0100 Subject: [PATCH 1/4] Get full path of OpenApiDocumentsDirectory Convert `$(OpenApiDocumentsDirectory)` to a full path before passing it to the `dotnet-getdocument` tool. Relates to #57044. --- .../build/Microsoft.Extensions.ApiDescription.Server.targets | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets b/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets index 788f8b701f24..fad5b1a0c6eb 100644 --- a/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets +++ b/src/Tools/Extensions.ApiDescription.Server/src/build/Microsoft.Extensions.ApiDescription.Server.targets @@ -51,9 +51,11 @@ Text="OpenAPI document generation is not supported when targeting netcoreapp2.0 or earlier. Disable the feature or move to a later target framework." /> + <_DotNetGetDocumentOutputPath>$(OpenApiDocumentsDirectory.TrimEnd('\')) + <_DotNetGetDocumentOutputPath>$([System.IO.Path]::GetFullPath('$(_DotNetGetDocumentOutputPath)')) <_DotNetGetDocumentCommand>dotnet "$(MSBuildThisFileDirectory)../tools/dotnet-getdocument.dll" --assembly "$(TargetPath)" <_DotNetGetDocumentCommand>$(_DotNetGetDocumentCommand) --file-list "$(_OpenApiDocumentsCache)" --framework "$(TargetFrameworkMoniker)" - <_DotNetGetDocumentCommand>$(_DotNetGetDocumentCommand) --output "$(OpenApiDocumentsDirectory.TrimEnd('\'))" --project "$(MSBuildProjectName)" + <_DotNetGetDocumentCommand>$(_DotNetGetDocumentCommand) --output "$(_DotNetGetDocumentOutputPath)" --project "$(MSBuildProjectName)" <_DotNetGetDocumentCommand Condition=" '$(ProjectAssetsFile)' != '' ">$(_DotNetGetDocumentCommand) --assets-file "$(ProjectAssetsFile)" <_DotNetGetDocumentCommand Condition=" '$(PlatformTarget)' != '' ">$(_DotNetGetDocumentCommand) --platform "$(PlatformTarget)" <_DotNetGetDocumentCommand Condition=" '$(PlatformTarget)' == '' AND '$(Platform)' != '' ">$(_DotNetGetDocumentCommand) --platform "$(Platform)" From 5e2df1b0f29b74bc558894a9fe4afa398a7d98cd Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 31 Jul 2024 09:13:48 +0100 Subject: [PATCH 2/4] Avoid warning about invalid OpenAPI version Do not emit warning about an invalid OpenAPI version in the `dotnet-getdocument` tool if no explicit value was passed to the tool via the `` argument. Relates to #57044. --- .../src/Commands/GetDocumentCommandWorker.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Tools/GetDocumentInsider/src/Commands/GetDocumentCommandWorker.cs b/src/Tools/GetDocumentInsider/src/Commands/GetDocumentCommandWorker.cs index ce7c5a81f188..f668795e6de3 100644 --- a/src/Tools/GetDocumentInsider/src/Commands/GetDocumentCommandWorker.cs +++ b/src/Tools/GetDocumentInsider/src/Commands/GetDocumentCommandWorker.cs @@ -326,7 +326,10 @@ private string GetDocument( } else { - _reporter.WriteWarning(Resources.FormatInvalidOpenApiVersion(_context.OpenApiVersion)); + if (!string.IsNullOrWhiteSpace(_context.OpenApiVersion)) + { + _reporter.WriteWarning(Resources.FormatInvalidOpenApiVersion(_context.OpenApiVersion)); + } arguments = [documentName, writer, OpenApiSpecVersion.OpenApi3_0]; } } From 5a4e44ff45a88bd92ba5813fd89e34b0b683747f Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 31 Jul 2024 09:26:07 +0100 Subject: [PATCH 3/4] Fix TargetTest tests Fix tests failing locally in Visual Studio due to test assets not being copied to the output directory. --- .../Microsoft.Extensions.ApiDescription.Client.Tests.csproj | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Tools/Extensions.ApiDescription.Client/test/Microsoft.Extensions.ApiDescription.Client.Tests.csproj b/src/Tools/Extensions.ApiDescription.Client/test/Microsoft.Extensions.ApiDescription.Client.Tests.csproj index 1ccce0e63658..be2ef194a123 100644 --- a/src/Tools/Extensions.ApiDescription.Client/test/Microsoft.Extensions.ApiDescription.Client.Tests.csproj +++ b/src/Tools/Extensions.ApiDescription.Client/test/Microsoft.Extensions.ApiDescription.Client.Tests.csproj @@ -16,9 +16,9 @@ Link="ProcessHelpers\DotNetMuxer.cs" /> - - - + + + From d383e0822db5c800d03a745b3ace6207c044178c Mon Sep 17 00:00:00 2001 From: martincostello Date: Wed, 31 Jul 2024 09:31:16 +0100 Subject: [PATCH 4/4] Fix tests Fix assertions looking for relative paths instead of absolute paths. --- .../Extensions.ApiDescription.Client/test/TargetTest.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Tools/Extensions.ApiDescription.Client/test/TargetTest.cs b/src/Tools/Extensions.ApiDescription.Client/test/TargetTest.cs index a1bda76c9dc2..55d5c0fd7727 100644 --- a/src/Tools/Extensions.ApiDescription.Client/test/TargetTest.cs +++ b/src/Tools/Extensions.ApiDescription.Client/test/TargetTest.cs @@ -77,7 +77,7 @@ public async Task AddsExpectedItems() Assert.Equal(0, process.ExitCode); Assert.Empty(process.Error); - Assert.Contains($"Compile: {Path.Combine("obj", "azureMonitorClient.cs")}", process.Output); + Assert.Contains($"Compile: {Path.Combine(_temporaryDirectory.Root, "obj", "azureMonitorClient.cs")}", process.Output); Assert.Contains($"FileWrites: {Path.Combine("obj", "azureMonitorClient.cs")}", process.Output); Assert.DoesNotContain("TypeScriptCompile:", process.Output); } @@ -120,9 +120,9 @@ public async Task AddsExpectedItems_WithMultipleFiles() Assert.Equal(0, process.ExitCode); Assert.Empty(process.Error); - Assert.Contains($"Compile: {Path.Combine("obj", "azureMonitorClient.cs")}", process.Output); - Assert.Contains($"Compile: {Path.Combine("obj", "NSwagClient.cs")}", process.Output); - Assert.Contains($"Compile: {Path.Combine("obj", "swashbuckleClient.cs")}", process.Output); + Assert.Contains($"Compile: {Path.Combine(_temporaryDirectory.Root, "obj", "azureMonitorClient.cs")}", process.Output); + Assert.Contains($"Compile: {Path.Combine(_temporaryDirectory.Root, "obj", "NSwagClient.cs")}", process.Output); + Assert.Contains($"Compile: {Path.Combine(_temporaryDirectory.Root, "obj", "swashbuckleClient.cs")}", process.Output); Assert.Contains($"FileWrites: {Path.Combine("obj", "azureMonitorClient.cs")}", process.Output); Assert.Contains($"FileWrites: {Path.Combine("obj", "NSwagClient.cs")}", process.Output); Assert.Contains($"FileWrites: {Path.Combine("obj", "swashbuckleClient.cs")}", process.Output);