From f55ea83d60dcd0af9e25ab8bc7e27ed45e4ad25e Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 18 Jan 2026 11:28:15 +0000 Subject: [PATCH 1/2] fix: CI infrastructure issues - Fix flaky WaitsFor_Performance_Many_Quick_Polls test on net472 - The 1ms polling interval was unrealistic on .NET Framework where the minimum timer resolution is ~15ms - Changed to 10ms interval and reduced target count from 100 to 20 - Add net10.0 target framework to FSharp and VB NuGet tester projects - Pipeline was running with --framework net10.0 but projects only supported up to net9.0 --- TUnit.Assertions.Tests/WaitsForAssertionTests.cs | 10 ++++++---- .../TUnit.NugetTester.FSharp.fsproj | 2 +- .../TUnit.NugetTester.VB/TUnit.NugetTester.VB.vbproj | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/TUnit.Assertions.Tests/WaitsForAssertionTests.cs b/TUnit.Assertions.Tests/WaitsForAssertionTests.cs index 26f0f9ebcf..e8f42f9c6b 100644 --- a/TUnit.Assertions.Tests/WaitsForAssertionTests.cs +++ b/TUnit.Assertions.Tests/WaitsForAssertionTests.cs @@ -249,15 +249,17 @@ public async Task WaitsFor_Performance_Many_Quick_Polls() // This will take many polls before succeeding Func getValue = () => Interlocked.Increment(ref counter); + // Use a more realistic polling interval (10ms) and target count (20) + // On .NET Framework, the minimum timer resolution is ~15ms, making 1ms intervals unreliable await Assert.That(getValue).WaitsFor( - assert => assert.IsGreaterThan(100), + assert => assert.IsGreaterThan(20), timeout: TimeSpan.FromSeconds(5), - pollingInterval: TimeSpan.FromMilliseconds(1)); + pollingInterval: TimeSpan.FromMilliseconds(10)); stopwatch.Stop(); - // Should have made at least 100 attempts - await Assert.That(counter).IsGreaterThanOrEqualTo(101); + // Should have made at least 20 attempts + await Assert.That(counter).IsGreaterThanOrEqualTo(21); // Should complete in a reasonable time (well under 5 seconds) await Assert.That(stopwatch.Elapsed).IsLessThan(TimeSpan.FromSeconds(2)); diff --git a/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.FSharp/TUnit.NugetTester.FSharp.fsproj b/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.FSharp/TUnit.NugetTester.FSharp.fsproj index 979822dc00..bd9985fa3f 100644 --- a/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.FSharp/TUnit.NugetTester.FSharp.fsproj +++ b/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.FSharp/TUnit.NugetTester.FSharp.fsproj @@ -1,7 +1,7 @@  - net6.0;net8.0;net9.0;net462;net472;net48;net481 + net6.0;net8.0;net9.0;net10.0;net462;net472;net48;net481 latest true enable diff --git a/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.VB/TUnit.NugetTester.VB.vbproj b/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.VB/TUnit.NugetTester.VB.vbproj index 6c00b40ee1..174c546276 100644 --- a/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.VB/TUnit.NugetTester.VB.vbproj +++ b/tools/tunit-nuget-tester/TUnit.NugetTester/TUnit.NugetTester.VB/TUnit.NugetTester.VB.vbproj @@ -1,7 +1,7 @@  - net6.0;net8.0;net9.0;net462;net472;net48;net481 + net6.0;net8.0;net9.0;net10.0;net462;net472;net48;net481 latest true enable From b2e44061db9c2d1fb5ea222a56e7693da6ce867e Mon Sep 17 00:00:00 2001 From: Tom Longhurst <30480171+thomhurst@users.noreply.github.com> Date: Sun, 18 Jan 2026 11:29:41 +0000 Subject: [PATCH 2/2] fix: remove platform restrictions from FSharp/VB nuget test modules --- TUnit.Pipeline/Modules/TestNugetPackageModule.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/TUnit.Pipeline/Modules/TestNugetPackageModule.cs b/TUnit.Pipeline/Modules/TestNugetPackageModule.cs index 537ce328fc..f748e04914 100644 --- a/TUnit.Pipeline/Modules/TestNugetPackageModule.cs +++ b/TUnit.Pipeline/Modules/TestNugetPackageModule.cs @@ -16,13 +16,11 @@ public class TestNugetPackageModule : AbstractTestNugetPackageModule public override string ProjectName => "TUnit.NugetTester.csproj"; } -[RunOnWindowsOnly, RunOnLinuxOnly] public class TestFSharpNugetPackageModule : AbstractTestNugetPackageModule { public override string ProjectName => "TUnit.NugetTester.FSharp.fsproj"; } -[RunOnWindowsOnly, RunOnLinuxOnly] public class TestVBNugetPackageModule : AbstractTestNugetPackageModule { public override string ProjectName => "TUnit.NugetTester.VB.vbproj";