Skip to content

Commit 1fe490f

Browse files
renovate[bot]askptCopilotgithub-code-quality[bot]
authored
chore(deps): update dependency nsubstitute to v6 (#786)
* chore(deps): update dependency nsubstitute to v6 * fix: resolve NSubstitute v6 nullability warnings in tests NSubstitute v6 enables nullable reference type annotations on its public API: Arg.Is<T> predicates now take Predicate<T?> and CallInfo.Arg<T>() 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> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: André Silva <2493377+askpt@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com> Signed-off-by: André Silva <2493377+askpt@users.noreply.github.com> --------- Signed-off-by: André Silva <2493377+askpt@users.noreply.github.com> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: André Silva <2493377+askpt@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
1 parent f8ef675 commit 1fe490f

6 files changed

Lines changed: 48 additions & 48 deletions

File tree

Directory.Packages.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
<PackageVersion Include="Microsoft.Extensions.Diagnostics.Testing" Version="10.0.0" />
4040
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsVersion)" />
4141
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="18.8.1" />
42-
<PackageVersion Include="NSubstitute" Version="5.3.0" />
42+
<PackageVersion Include="NSubstitute" Version="6.0.0" />
4343
<PackageVersion Include="OpenTelemetry" Version="1.16.0" />
4444
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.16.0" />
4545
<PackageVersion Include="Reqnroll.xunit.v3" Version="3.3.4" />

test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -449,7 +449,7 @@ public async Task EvaluateAsync_WithStrategySkippingProvider_DoesNotCallSkippedP
449449
this._mockStrategy.ShouldEvaluateThisProvider(Arg.Any<StrategyPerProviderContext<bool>>(), this._evaluationContext)
450450
.Returns(callInfo =>
451451
{
452-
var context = callInfo.Arg<StrategyPerProviderContext<bool>>();
452+
var context = callInfo.Arg<StrategyPerProviderContext<bool>>()!;
453453
return context.ProviderName == Provider1Name; // Only evaluate provider1
454454
});
455455
this._mockStrategy.DetermineFinalResult(Arg.Any<StrategyEvaluationContext<bool>>(), TestFlagKey, defaultValue, this._evaluationContext, Arg.Any<List<ProviderResolutionResult<bool>>>())

test/OpenFeature.Providers.MultiProvider.Tests/MultiProviderTrackingTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -177,14 +177,14 @@ public async Task Track_WithCustomStrategy_RespectsStrategyDecision()
177177

178178
// Only allow tracking with the first provider
179179
customStrategy.ShouldTrackWithThisProvider(
180-
Arg.Is<StrategyPerProviderContext<object>>(ctx => ctx.ProviderName == Provider1Name),
180+
Arg.Is<StrategyPerProviderContext<object>>(ctx => ctx!.ProviderName == Provider1Name),
181181
Arg.Any<EvaluationContext>(),
182182
Arg.Any<string>(),
183183
Arg.Any<TrackingEventDetails>()
184184
).Returns(true);
185185

186186
customStrategy.ShouldTrackWithThisProvider(
187-
Arg.Is<StrategyPerProviderContext<object>>(ctx => ctx.ProviderName != Provider1Name),
187+
Arg.Is<StrategyPerProviderContext<object>>(ctx => ctx!.ProviderName != Provider1Name),
188188
Arg.Any<EvaluationContext>(),
189189
Arg.Any<string>(),
190190
Arg.Any<TrackingEventDetails>()

test/OpenFeature.Providers.MultiProvider.Tests/ProviderExtensionsTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ public async Task EvaluateAsync_WhenAfterHookThrowsException_LogsWarningButSucce
443443
this._mockLogger.Received(1).Log(
444444
LogLevel.Warning,
445445
Arg.Any<EventId>(),
446-
Arg.Is<object>(v => v.ToString()!.Contains("Provider after/finally hook execution failed")),
446+
Arg.Is<object>(v => v!.ToString()!.Contains("Provider after/finally hook execution failed")),
447447
Arg.Is<Exception>(ex => ex == hookException),
448448
Arg.Any<Func<object, Exception?, string>>());
449449
}

test/OpenFeature.Tests/OpenFeatureEventTests.cs

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public async Task Event_Executor_Should_Propagate_Events_ToGlobal_Handler()
5151

5252
eventHandler.DidNotReceive().Invoke(newEventPayload);
5353

54-
eventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.Type == ProviderEventTypes.ProviderStale));
54+
eventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.Type == ProviderEventTypes.ProviderStale));
5555
}
5656

5757
[Fact]
@@ -79,28 +79,28 @@ await Utils.AssertUntilAsync(_ => eventHandler
7979
.Received()
8080
.Invoke(
8181
Arg.Is<ProviderEventPayload>(
82-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
82+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
8383
)));
8484

8585
await Utils.AssertUntilAsync(_ => eventHandler
8686
.Received()
8787
.Invoke(
8888
Arg.Is<ProviderEventPayload>(
89-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged
89+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged
9090
)));
9191

9292
await Utils.AssertUntilAsync(_ => eventHandler
9393
.Received()
9494
.Invoke(
9595
Arg.Is<ProviderEventPayload>(
96-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderError
96+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderError
9797
)));
9898

9999
await Utils.AssertUntilAsync(_ => eventHandler
100100
.Received()
101101
.Invoke(
102102
Arg.Is<ProviderEventPayload>(
103-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderStale
103+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderStale
104104
)));
105105
}
106106

@@ -124,7 +124,7 @@ await Utils.AssertUntilAsync(_ => eventHandler
124124
.Received()
125125
.Invoke(
126126
Arg.Is<ProviderEventPayload>(
127-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
127+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
128128
)));
129129
}
130130

@@ -148,7 +148,7 @@ await Utils.AssertUntilAsync(_ => eventHandler
148148
.Received()
149149
.Invoke(
150150
Arg.Is<ProviderEventPayload>(
151-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
151+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady
152152
)));
153153
}
154154

@@ -174,7 +174,7 @@ await Utils.AssertUntilAsync(_ => eventHandler
174174
.Received()
175175
.Invoke(
176176
Arg.Is<ProviderEventPayload>(
177-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderError
177+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderError
178178
)));
179179
}
180180

@@ -199,7 +199,7 @@ await Utils.AssertUntilAsync(_ => eventHandler
199199
.Received()
200200
.Invoke(
201201
Arg.Is<ProviderEventPayload>(
202-
payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderStale
202+
payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderStale
203203
)));
204204
}
205205

@@ -227,10 +227,10 @@ public async Task API_Level_Event_Handlers_Should_Be_Exchangeable()
227227
await newTestProvider.SendEventAsync(ProviderEventTypes.ProviderConfigurationChanged, TestContext.Current.CancellationToken);
228228

229229
await Utils.AssertUntilAsync(
230-
_ => eventHandler.Received(2).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady))
230+
_ => eventHandler.Received(2).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderReady))
231231
);
232232
await Utils.AssertUntilAsync(
233-
_ => eventHandler.Received(2).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
233+
_ => eventHandler.Received(2).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
234234
);
235235
}
236236

@@ -254,7 +254,7 @@ public async Task API_Level_Event_Handlers_Should_Be_Removable()
254254
var newTestProvider = new TestProvider();
255255
await Api.Instance.SetProviderAsync(newTestProvider, TestContext.Current.CancellationToken);
256256

257-
eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name));
257+
eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name));
258258
}
259259

260260
[Fact]
@@ -280,10 +280,10 @@ public async Task API_Level_Event_Handlers_Should_Be_Executed_When_Other_Handler
280280
await Api.Instance.SetProviderAsync(testProvider, TestContext.Current.CancellationToken);
281281

282282
await Utils.AssertUntilAsync(
283-
_ => failingEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
283+
_ => failingEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
284284
);
285285
await Utils.AssertUntilAsync(
286-
_ => eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
286+
_ => eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
287287
);
288288
}
289289

@@ -306,7 +306,7 @@ public async Task Client_Level_Event_Handlers_Should_Be_Registered()
306306

307307
myClient.AddHandler(ProviderEventTypes.ProviderReady, eventHandler);
308308

309-
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name));
309+
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name));
310310
}
311311

312312
[Fact]
@@ -336,10 +336,10 @@ public async Task Client_Level_Event_Handlers_Should_Be_Executed_When_Other_Hand
336336
await Api.Instance.SetProviderAsync(myClient.GetMetadata().Name!, testProvider, TestContext.Current.CancellationToken);
337337

338338
await Utils.AssertUntilAsync(
339-
_ => failingEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
339+
_ => failingEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
340340
);
341341
await Utils.AssertUntilAsync(
342-
_ => eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
342+
_ => eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
343343
);
344344
}
345345

@@ -369,11 +369,11 @@ public async Task Client_Level_Event_Handlers_Should_Be_Registered_To_Default_Pr
369369
myClientWithNoBoundProvider.AddHandler(ProviderEventTypes.ProviderReady, eventHandler);
370370
myClientWithBoundProvider.AddHandler(ProviderEventTypes.ProviderReady, clientEventHandler);
371371

372-
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == apiProvider.GetMetadata().Name));
373-
eventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == clientProvider.GetMetadata().Name));
372+
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == apiProvider.GetMetadata().Name));
373+
eventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == clientProvider.GetMetadata().Name));
374374

375-
clientEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == clientProvider.GetMetadata().Name));
376-
clientEventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == apiProvider.GetMetadata().Name));
375+
clientEventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == clientProvider.GetMetadata().Name));
376+
clientEventHandler.DidNotReceive().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == apiProvider.GetMetadata().Name));
377377
}
378378

379379
[Fact]
@@ -403,7 +403,7 @@ public async Task Client_Level_Event_Handlers_Should_Be_Receive_Events_From_Name
403403
// verify that the client received the event from the default provider as there is no named provider registered yet
404404
await Utils.AssertUntilAsync(
405405
_ => clientEventHandler.Received(1)
406-
.Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == defaultProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
406+
.Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == defaultProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
407407
);
408408

409409
// set the other provider specifically for the client
@@ -415,12 +415,12 @@ await Utils.AssertUntilAsync(
415415

416416
// now the client should have received only the event from the named provider
417417
await Utils.AssertUntilAsync(
418-
_ => clientEventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == clientProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
418+
_ => clientEventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == clientProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
419419
);
420420
// for the default provider, the number of received events should stay unchanged
421421
await Utils.AssertUntilAsync(
422422
_ => clientEventHandler.Received(1)
423-
.Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == defaultProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
423+
.Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == defaultProvider.GetMetadata().Name && payload.Type == ProviderEventTypes.ProviderConfigurationChanged))
424424
);
425425
}
426426

@@ -444,7 +444,7 @@ public async Task Client_Level_Event_Handlers_Should_Be_Informed_About_Ready_Sta
444444
// add the event handler after the provider has already transitioned into the ready state
445445
myClient.AddHandler(ProviderEventTypes.ProviderReady, eventHandler);
446446

447-
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name));
447+
eventHandler.Received().Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name));
448448
}
449449

450450
[Fact]
@@ -468,7 +468,7 @@ public async Task Client_Level_Event_Handlers_Should_Be_Removable()
468468

469469
// wait for the first event to be received
470470
await Utils.AssertUntilAsync(
471-
_ => eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
471+
_ => eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
472472
);
473473

474474
myClient.RemoveHandler(ProviderEventTypes.ProviderReady, eventHandler);
@@ -478,7 +478,7 @@ await Utils.AssertUntilAsync(
478478

479479
// wait a bit and make sure we only have received the first event, but nothing after removing the event handler
480480
await Utils.AssertUntilAsync(
481-
_ => eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload.ProviderName == testProvider.GetMetadata().Name))
481+
_ => eventHandler.Received(1).Invoke(Arg.Is<ProviderEventPayload>(payload => payload!.ProviderName == testProvider.GetMetadata().Name))
482482
);
483483
}
484484

0 commit comments

Comments
 (0)