From 86680e4ac32d7b6bd3dfbf1517afc2356191b815 Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Mon, 24 Aug 2026 17:00:47 -0600 Subject: [PATCH 1/2] Use configured NuGet source for analyzer tests Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d82770a-b36c-40a8-95a6-4f807773da09 --- .../Helpers/ReferencesHelper.cs | 12 ++++++- .../VSTHRD002UseJtfRunAnalyzerTests.cs | 7 +++-- .../VSTHRD103UseAsyncOptionAnalyzerTests.cs | 31 ++++++++++--------- .../VSTHRD104OfferAsyncOptionAnalyzerTests.cs | 25 ++++++++------- 4 files changed, 44 insertions(+), 31 deletions(-) diff --git a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/Helpers/ReferencesHelper.cs b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/Helpers/ReferencesHelper.cs index 8c440cafb..2e93f08b1 100644 --- a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/Helpers/ReferencesHelper.cs +++ b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/Helpers/ReferencesHelper.cs @@ -14,10 +14,20 @@ internal static class ReferencesHelper { private static readonly string NuGetConfigPath = FindNuGetConfigPath(); + /// + /// Gets the .NET 8 reference assemblies using this repository's NuGet sources. + /// + internal static readonly ReferenceAssemblies Net80References = ReferenceAssemblies.Net.Net80.WithNuGetConfigFilePath(NuGetConfigPath); + + /// + /// Gets the .NET Framework 2.0 reference assemblies using this repository's NuGet sources. + /// + internal static readonly ReferenceAssemblies NetFramework20References = ReferenceAssemblies.NetFramework.Net20.Default.WithNuGetConfigFilePath(NuGetConfigPath); + #if NETFRAMEWORK public static ReferenceAssemblies DefaultReferences = ReferenceAssemblies.NetFramework.Net471.Default #elif NET8_0 - public static ReferenceAssemblies DefaultReferences = ReferenceAssemblies.Net.Net80 + public static ReferenceAssemblies DefaultReferences = Net80References #else #error Fix TFM conditions #endif diff --git a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD002UseJtfRunAnalyzerTests.cs b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD002UseJtfRunAnalyzerTests.cs index 3f43f8548..9b3d5a93b 100644 --- a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD002UseJtfRunAnalyzerTests.cs +++ b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD002UseJtfRunAnalyzerTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using CSVerify = Microsoft.VisualStudio.Threading.Analyzers.Tests.CSharpCodeFixVerifier; +using ReferencesHelper = Microsoft.VisualStudio.Threading.Analyzers.Tests.ReferencesHelper; public class VSTHRD002UseJtfRunAnalyzerTests { @@ -1272,7 +1273,7 @@ bool ReplaceFlag(ref Task task) { await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }.RunAsync(); } @@ -1384,7 +1385,7 @@ void F(CustomWaiter waiter) { TestCode = test, FixedCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.NetFramework.Net20.Default, + ReferenceAssemblies = ReferencesHelper.NetFramework20References, }; verifyTest.TestState.AdditionalFiles.Add(("vs-threading.SyncBlockingMethods.txt", "[CustomWaiter]::Join")); await verifyTest.RunAsync(); @@ -2096,7 +2097,7 @@ int DefaultInterfaceMethod(Task task) { TestCode = test, FixedCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }.RunAsync(); } diff --git a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD103UseAsyncOptionAnalyzerTests.cs b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD103UseAsyncOptionAnalyzerTests.cs index f34335c4f..677b716f6 100644 --- a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD103UseAsyncOptionAnalyzerTests.cs +++ b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD103UseAsyncOptionAnalyzerTests.cs @@ -3,6 +3,7 @@ using static Microsoft.VisualStudio.Threading.Analyzers.VSTHRD103UseAsyncOptionAnalyzer; using CSVerify = Microsoft.VisualStudio.Threading.Analyzers.Tests.CSharpCodeFixVerifier; +using ReferencesHelper = Microsoft.VisualStudio.Threading.Analyzers.Tests.ReferencesHelper; public class VSTHRD103UseAsyncOptionAnalyzerTests { @@ -970,7 +971,7 @@ Task GetResultAsync(Task task) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }.RunAsync(); } @@ -997,7 +998,7 @@ Task GetResultAsync(Task task, Task otherTask) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await analyzerTest.RunAsync(); @@ -1027,7 +1028,7 @@ Task GetResultAsync(Task task) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await analyzerTest.RunAsync(); @@ -1057,7 +1058,7 @@ Task GetResultAsync(Task task) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await analyzerTest.RunAsync(); @@ -1088,7 +1089,7 @@ Task GetResultAsync(Task task) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await analyzerTest.RunAsync(); @@ -1121,7 +1122,7 @@ Task GetResultAsync(Task task, Task replacement) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await analyzerTest.RunAsync(); @@ -1150,7 +1151,7 @@ Task GetResultAsync(ValueTask task) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; await analyzerTest.RunAsync(); } @@ -1285,7 +1286,7 @@ Task> GetResultAsync(Task task, IEnumerable items) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, ExpectedDiagnostics = { CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result"), @@ -1319,7 +1320,7 @@ Task GetResultAsync(Task task, Task replacement) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, ExpectedDiagnostics = { CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result"), @@ -1358,7 +1359,7 @@ Task GetResultAsync(Task task, Task replacement) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, ExpectedDiagnostics = { CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result"), @@ -1389,7 +1390,7 @@ Task GetResultAsync(ref Task task) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, ExpectedDiagnostics = { CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result"), @@ -1587,7 +1588,7 @@ async Task GetResultAsync(ValueTask task) var verifyTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; verifyTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await verifyTest.RunAsync(); @@ -1622,7 +1623,7 @@ async Task GetResultAsync(ValueTask task, ValueTask other) await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }.RunAsync(); } @@ -1651,7 +1652,7 @@ async Task GetResultAsync(ValueTask task) var verifyTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; verifyTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await verifyTest.RunAsync(); @@ -1682,7 +1683,7 @@ async Task GetResultAsync(ValueTask task, ValueTask copy) var verifyTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; verifyTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic(DescriptorNoAlternativeMethod).WithLocation(0).WithArguments("Result")); await verifyTest.RunAsync(); diff --git a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD104OfferAsyncOptionAnalyzerTests.cs b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD104OfferAsyncOptionAnalyzerTests.cs index 55c29d779..51c08ab55 100644 --- a/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD104OfferAsyncOptionAnalyzerTests.cs +++ b/test/Microsoft.VisualStudio.Threading.Analyzers.Tests/VSTHRD104OfferAsyncOptionAnalyzerTests.cs @@ -2,6 +2,7 @@ // Licensed under the MIT license. See LICENSE file in the project root for full license information. using CSVerify = Microsoft.VisualStudio.Threading.Analyzers.Tests.CSharpCodeFixVerifier; +using ReferencesHelper = Microsoft.VisualStudio.Threading.Analyzers.Tests.ReferencesHelper; public class VSTHRD104OfferAsyncOptionAnalyzerTests { @@ -193,7 +194,7 @@ public int GetResult(Task task) { await new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }.RunAsync(); } @@ -217,7 +218,7 @@ public int GetResult(Task task, Task otherTask) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(7, 25, 7, 31)); await analyzerTest.RunAsync(); @@ -243,7 +244,7 @@ public int GetResult(ValueTask task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(7, 25, 7, 31)); await analyzerTest.RunAsync(); @@ -271,7 +272,7 @@ public int GetResult() { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(9, 33, 9, 39)); await analyzerTest.RunAsync(); @@ -298,7 +299,7 @@ public int GetResult(Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(7, 41, 7, 47)); await analyzerTest.RunAsync(); @@ -325,7 +326,7 @@ public int GetResult(Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(8, 25, 8, 31)); await analyzerTest.RunAsync(); @@ -355,7 +356,7 @@ private static void Replace(ref Task task) var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(8, 25, 8, 31)); await analyzerTest.RunAsync(); @@ -383,7 +384,7 @@ public int GetResult(Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(9, 25, 9, 31)); await analyzerTest.RunAsync(); @@ -411,7 +412,7 @@ public int GetResult(Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(9, 25, 9, 31)); await analyzerTest.RunAsync(); @@ -442,7 +443,7 @@ private static bool Replace(ref Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(7, 25, 7, 31)); await analyzerTest.RunAsync(); @@ -470,7 +471,7 @@ public int GetResult(Task task) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(9, 26, 9, 32)); await analyzerTest.RunAsync(); @@ -499,7 +500,7 @@ public int GetResult(Task task, Task replacement) { var analyzerTest = new CSVerify.Test { TestCode = test, - ReferenceAssemblies = Microsoft.CodeAnalysis.Testing.ReferenceAssemblies.Net.Net80, + ReferenceAssemblies = ReferencesHelper.Net80References, }; analyzerTest.ExpectedDiagnostics.Add(CSVerify.Diagnostic().WithSpan(8, 26, 8, 32)); await analyzerTest.RunAsync(); From 6265a42a0352a5b0b044e4eb78040548162f398b Mon Sep 17 00:00:00 2001 From: Andrew Arnott Date: Mon, 24 Aug 2026 18:15:04 -0600 Subject: [PATCH 2/2] Retry CI after transient test failure Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 1d82770a-b36c-40a8-95a6-4f807773da09