From 3010f2436b8f3d13cdb93cac8872272fe3ac9bac Mon Sep 17 00:00:00 2001 From: Jakub Jares Date: Wed, 17 Jun 2026 15:23:57 +0200 Subject: [PATCH 1/2] Fix #2722: Add missing Because parameter to Should-BeSlowerThan and fix flaky test Should-BeSlowerThan referenced $Because in error messages but never declared it as a parameter, so it was always null. Also changed the Should-BeFasterThan Because test to use a deterministic [timespan] instead of a scriptblock with Start-Sleep to avoid timing flakiness on CI. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/functions/assert/Time/Should-BeSlowerThan.ps1 | 3 ++- tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 | 2 +- tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 | 6 ++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/functions/assert/Time/Should-BeSlowerThan.ps1 b/src/functions/assert/Time/Should-BeSlowerThan.ps1 index 0d3931e73..63f98a081 100644 --- a/src/functions/assert/Time/Should-BeSlowerThan.ps1 +++ b/src/functions/assert/Time/Should-BeSlowerThan.ps1 @@ -51,7 +51,8 @@ [Parameter(Position = 1, ValueFromPipeline = $true)] $Actual, [Parameter(Position = 0)] - $Expected + $Expected, + [string] $Because ) if ($Expected -isnot [timespan]) { diff --git a/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 b/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 index 085b3c569..646c0411e 100644 --- a/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 @@ -49,7 +49,7 @@ Describe "Should-BeFasterThan" { } It "Has Because parameter" -ForEach @( - @{ Actual = { Start-Sleep -Milliseconds 10 }; Expected = "1ms"; Because = "I said so" } + @{ Actual = [timespan]::FromMilliseconds(100); Expected = "1ms"; Because = "I said so" } ) { { $Actual | Should-BeFasterThan -Expected $Expected -Because $Because } | Verify-AssertionFailed } diff --git a/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 b/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 index 79da1bb79..cef72a478 100644 --- a/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 @@ -24,4 +24,10 @@ Describe "Should-BeSlowerThan" { ) { { $Actual | Should-BeSlowerThan -Expected $Expected } | Verify-AssertionFailed } + + It "Has Because parameter" -ForEach @( + @{ Actual = [timespan]::FromMilliseconds(1); Expected = "1000ms"; Because = "I said so" } + ) { + { $Actual | Should-BeSlowerThan -Expected $Expected -Because $Because } | Verify-AssertionFailed + } } From f1bf6d174684938c02195531b45409578aa866f2 Mon Sep 17 00:00:00 2001 From: Jakub Jares Date: Wed, 17 Jun 2026 15:54:15 +0200 Subject: [PATCH 2/2] Verify Because message appears in assertion error Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 | 3 ++- tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 b/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 index 646c0411e..d13b0d5b1 100644 --- a/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeFasterThan.Tests.ps1 @@ -51,6 +51,7 @@ Describe "Should-BeFasterThan" { It "Has Because parameter" -ForEach @( @{ Actual = [timespan]::FromMilliseconds(100); Expected = "1ms"; Because = "I said so" } ) { - { $Actual | Should-BeFasterThan -Expected $Expected -Because $Because } | Verify-AssertionFailed + $err = { $Actual | Should-BeFasterThan -Expected $Expected -Because $Because } | Verify-AssertionFailed + $err.Exception.Message | Verify-Like '*because I said so*' } } diff --git a/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 b/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 index cef72a478..080265d7e 100644 --- a/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 +++ b/tst/functions/assert/Time/Should-BeSlowerThan.Tests.ps1 @@ -28,6 +28,7 @@ Describe "Should-BeSlowerThan" { It "Has Because parameter" -ForEach @( @{ Actual = [timespan]::FromMilliseconds(1); Expected = "1000ms"; Because = "I said so" } ) { - { $Actual | Should-BeSlowerThan -Expected $Expected -Because $Because } | Verify-AssertionFailed + $err = { $Actual | Should-BeSlowerThan -Expected $Expected -Because $Because } | Verify-AssertionFailed + $err.Exception.Message | Verify-Like '*because I said so*' } }