From 2b4fc5125dea8783b34e374aa5336bbbe8b793ac Mon Sep 17 00:00:00 2001
From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com>
Date: Fri, 17 Jul 2026 16:29:32 +0000
Subject: [PATCH 1/4] chore(deps): update dependency nsubstitute to v6
---
Directory.Packages.props | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Directory.Packages.props b/Directory.Packages.props
index d6766a96..b2467d33 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -39,7 +39,7 @@
-
+
From 366fa31a80adc68ad7e70eb0a13890f59af4e97c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andr=C3=A9=20Silva?=
<2493377+askpt@users.noreply.github.com>
Date: Fri, 17 Jul 2026 17:40:31 +0100
Subject: [PATCH 2/4] fix: resolve NSubstitute v6 nullability warnings in tests
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
NSubstitute v6 enables nullable reference type annotations on its
public API: Arg.Is predicates now take Predicate and
CallInfo.Arg() returns T?. Add null-forgiving operators at the
affected call sites since these arguments are never null in practice.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: André Silva <2493377+askpt@users.noreply.github.com>
---
.../MultiProviderTests.cs | 2 +-
.../MultiProviderTrackingTests.cs | 4 +-
.../ProviderExtensionsTests.cs | 2 +-
.../OpenFeatureEventTests.cs | 54 +++++++++----------
.../OpenFeature.Tests/OpenFeatureHookTests.cs | 32 +++++------
5 files changed, 47 insertions(+), 47 deletions(-)
diff --git a/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTests.cs b/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTests.cs
index b8e0131b..6f919f5e 100644
--- a/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTests.cs
+++ b/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTests.cs
@@ -449,7 +449,7 @@ public async Task EvaluateAsync_WithStrategySkippingProvider_DoesNotCallSkippedP
this._mockStrategy.ShouldEvaluateThisProvider(Arg.Any>(), this._evaluationContext)
.Returns(callInfo =>
{
- var context = callInfo.Arg>();
+ var context = callInfo.Arg>()!;
return context.ProviderName == Provider1Name; // Only evaluate provider1
});
this._mockStrategy.DetermineFinalResult(Arg.Any>(), TestFlagKey, defaultValue, this._evaluationContext, Arg.Any>>())
diff --git a/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTrackingTests.cs b/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTrackingTests.cs
index 7f703ada..1830e925 100644
--- a/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTrackingTests.cs
+++ b/test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTrackingTests.cs
@@ -177,14 +177,14 @@ public async Task Track_WithCustomStrategy_RespectsStrategyDecision()
// Only allow tracking with the first provider
customStrategy.ShouldTrackWithThisProvider(
- Arg.Is>(ctx => ctx.ProviderName == Provider1Name),
+ Arg.Is>(ctx => ctx!.ProviderName == Provider1Name),
Arg.Any(),
Arg.Any(),
Arg.Any()
).Returns(true);
customStrategy.ShouldTrackWithThisProvider(
- Arg.Is>(ctx => ctx.ProviderName != Provider1Name),
+ Arg.Is>(ctx => ctx!.ProviderName != Provider1Name),
Arg.Any(),
Arg.Any(),
Arg.Any()
diff --git a/test/OpenFeature.Providers.MultiProvider.Tests/ProviderExtensionsTests.cs b/test/OpenFeature.Providers.MultiProvider.Tests/ProviderExtensionsTests.cs
index dcf1dfe9..c66a2902 100644
--- a/test/OpenFeature.Providers.MultiProvider.Tests/ProviderExtensionsTests.cs
+++ b/test/OpenFeature.Providers.MultiProvider.Tests/ProviderExtensionsTests.cs
@@ -443,7 +443,7 @@ public async Task EvaluateAsync_WhenAfterHookThrowsException_LogsWarningButSucce
this._mockLogger.Received(1).Log(
LogLevel.Warning,
Arg.Any(),
- Arg.Is