From 407f38b3c6b5544d6c76ea386f3784f37271cc35 Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Thu, 16 Jan 2025 11:53:56 -0600 Subject: [PATCH 1/6] Re-enable SB tests --- .../Microsoft.DotNet.SourceBuild.Tests/BasicScenarioTests.cs | 2 +- .../Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs | 2 +- .../Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs | 2 +- .../test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs | 2 +- .../Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs | 5 ++--- 5 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/BasicScenarioTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/BasicScenarioTests.cs index f9fe8acd36df..336316f2fa50 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/BasicScenarioTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/BasicScenarioTests.cs @@ -19,7 +19,7 @@ public class BasicScenarioTests : SdkTests { public BasicScenarioTests(ITestOutputHelper outputHelper) : base(outputHelper) { } - // [Theory(Skip="https://github.com/dotnet/sdk/issues/42920")] + [Theory] [MemberData(nameof(GetScenarioObjects))] public void VerifyScenario(TestScenario scenario) => scenario.Execute(DotNetHelper); diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs index 0de57851de53..b3c7e05e1650 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs @@ -20,7 +20,7 @@ public DotNetFormatTests(ITestOutputHelper outputHelper) : base(outputHelper) { /// /// Format an unformatted project and verify that the output matches the pre-computed solution. /// - // [Fact(Skip="https://github.com/dotnet/sdk/issues/42920")] + [Fact] public void FormatProject() { if (DotNetHelper.IsMonoRuntime) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs index e39c47507343..78c151b5eb68 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs @@ -13,7 +13,7 @@ public class DotNetWatchTests : SdkTests { public DotNetWatchTests(ITestOutputHelper outputHelper) : base(outputHelper) { } - // [Fact(Skip="https://github.com/dotnet/sdk/issues/42920")] + [Fact] public void WatchTests() { if (DotNetHelper.IsMonoRuntime) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs index 75ffc708f345..fe84b941cbbd 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs @@ -24,7 +24,7 @@ public SymbolsTests(ITestOutputHelper outputHelper) : base(outputHelper) { } /// /// Verifies that all symbols have valid sourcelinks. /// - // [Fact(Skip="https://github.com/dotnet/sdk/issues/42920")] + [Fact] public void VerifySdkSymbols() { try diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs index 6f3cd28f5233..b8e8b3ed7c49 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs @@ -20,7 +20,7 @@ public class WebScenarioTests : SdkTests { public WebScenarioTests(ITestOutputHelper outputHelper) : base(outputHelper) { } - // [Theory(Skip="https://github.com/dotnet/sdk/issues/42920")] + [Theory] [MemberData(nameof(GetScenarioObjects))] public void VerifyScenario(TestScenario scenario) => scenario.Execute(DotNetHelper); @@ -37,8 +37,7 @@ private static IEnumerable GetScenarios() yield return new(nameof(WebScenarioTests), DotNetLanguage.CSharp, DotNetTemplate.Razor, DotNetActions.Build | DotNetActions.Run | DotNetActions.Publish); yield return new(nameof(WebScenarioTests), DotNetLanguage.CSharp, DotNetTemplate.BlazorWasm, DotNetActions.Build | DotNetActions.Run | DotNetActions.Publish); - // Disabled due to .NET 10.0 transition. See https://github.com/dotnet/sdk/pull/42969 - // yield return new(nameof(WebScenarioTests), DotNetLanguage.CSharp, DotNetTemplate.WebApp, DotNetActions.PublishSelfContained, VerifyRuntimePacksForSelfContained); + yield return new(nameof(WebScenarioTests), DotNetLanguage.CSharp, DotNetTemplate.WebApp, DotNetActions.PublishSelfContained, VerifyRuntimePacksForSelfContained); yield return new(nameof(WebScenarioTests), DotNetLanguage.CSharp, DotNetTemplate.Worker); } From 196f148aab16ef3f98abd3b7101dd87b3611a265 Mon Sep 17 00:00:00 2001 From: Nikola Milosavljevic Date: Fri, 17 Jan 2025 02:15:26 +0000 Subject: [PATCH 2/6] Fix for symbols tests --- .../test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs index fe84b941cbbd..912fa9b376f6 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/SymbolsTests.cs @@ -66,6 +66,10 @@ private IList VerifySdkFilesHaveMatchingSymbols(string symbolsRoot, stri { Assert.True(Directory.Exists(sdkRoot), $"Path, with SDK files to validate, does not exist: {sdkRoot}"); + // Normalize paths, to ensure proper string replacement + symbolsRoot = symbolsRoot.TrimEnd(Path.DirectorySeparatorChar); + sdkRoot = sdkRoot.TrimEnd(Path.DirectorySeparatorChar); + var failedFiles = new ConcurrentBag(); IEnumerable allFiles = Directory.GetFiles(sdkRoot, "*", SearchOption.AllDirectories); From c61dbd2e59972a3ad82941acc3831b5dc71c6cb0 Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Thu, 16 Jan 2025 13:38:01 -0600 Subject: [PATCH 3/6] fix dotnet watch test --- .../test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs index 78c151b5eb68..60f81c464add 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetWatchTests.cs @@ -36,7 +36,7 @@ public void WatchTests() void processConfigCallback(Process process) { - const string waitingString = "Waiting for changes"; + const string waitingString = "Waiting for a file to change"; const string expectedString = "Hello from dotnet watch!"; bool fileChanged = false; From 12fcbf9b60e1b138d5488df4445ce7115bff308a Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Fri, 17 Jan 2025 10:29:54 -0600 Subject: [PATCH 4/6] Fix self-contained test --- .../WebScenarioTests.cs | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs index b8e8b3ed7c49..d58e9a87be50 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -49,9 +50,28 @@ private static void VerifyRuntimePacksForSelfContained(string projectPath) string projNugetCachePath = Path.Combine(projectPath, "obj", "project.nuget.cache"); JsonNode? projNugetCache = JsonNode.Parse(File.ReadAllText(projNugetCachePath)); - string? restoredPackageFiles = projNugetCache?["expectedPackageFiles"]?.ToString(); + JsonArray? restoredPackageFiles = (JsonArray?)projNugetCache?["expectedPackageFiles"]; Assert.True(restoredPackageFiles is not null, "Failed to parse project.nuget.cache"); - Assert.True("[]" == restoredPackageFiles, "Runtime packs were retrieved from NuGet instead of the SDK"); + + string[] allowedPackages = [ + "Microsoft.AspNetCore.App.Internal.Assets" + ]; + + string packagesDirectory = Path.Combine(Environment.CurrentDirectory, "packages"); + + IEnumerable packages = restoredPackageFiles + .Select(file => + { + string path = file.ToString(); + path = path.Substring(packagesDirectory.Length + 1); // trim the leading path up to the package name directory + return path.Substring(0, path.IndexOf('/')); // trim the rest of the path + }) + .Except(allowedPackages, StringComparer.OrdinalIgnoreCase); + + if (packages.Any()) + { + Assert.Fail($"The following runtime packs were retrieved from NuGet instead of the SDK: {string.Join(",", packages.ToArray())}"); + } } } From 3462aa83c61ce9b2f95dbd87e7cbc6113a2d584e Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Fri, 17 Jan 2025 14:47:58 -0600 Subject: [PATCH 5/6] disable format test --- .../Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs index b3c7e05e1650..c35d2bb6892e 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/DotNetFormatTests.cs @@ -20,7 +20,8 @@ public DotNetFormatTests(ITestOutputHelper outputHelper) : base(outputHelper) { /// /// Format an unformatted project and verify that the output matches the pre-computed solution. /// - [Fact] + // Disabled due to https://github.com/dotnet/roslyn/issues/76797 + // [Fact] public void FormatProject() { if (DotNetHelper.IsMonoRuntime) From b5ac60b485e07761f6ebf845933bd3178e1cb0df Mon Sep 17 00:00:00 2001 From: Matt Thalman Date: Tue, 21 Jan 2025 08:14:35 -0600 Subject: [PATCH 6/6] add link to issue --- .../test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs index d58e9a87be50..b2ce04a620cb 100644 --- a/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs +++ b/src/SourceBuild/content/test/Microsoft.DotNet.SourceBuild.Tests/WebScenarioTests.cs @@ -55,6 +55,8 @@ private static void VerifyRuntimePacksForSelfContained(string projectPath) Assert.True(restoredPackageFiles is not null, "Failed to parse project.nuget.cache"); string[] allowedPackages = [ + // Temporarily allowed due to https://github.com/dotnet/sdk/issues/46165 + // TODO: Remove this once the issue is resolved "Microsoft.AspNetCore.App.Internal.Assets" ];