test: remaining xUnit1051/1031/1030, CS8602/8604, CS0618, CS0219, CS0649, NU1510 fixes (lmxopcua#725)
v2-ci / unit-tests (push) Has been cancelled

Awaited deadline oracles get the runner token; sync-over-async tests made async;
nullable child models asserted via ShouldNotBeNull() return values; obsolete SDK
ctors replaced with the telemetry overloads; dead locals/fixture and the redundant
DI PackageReference removed. No suppressions.

Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
Joseph Doherty
2026-11-09 13:22:34 -05:00
parent 1d7a4b7a53
commit b8202e1147
27 changed files with 84 additions and 92 deletions
@@ -15,7 +15,7 @@ public class DefaultSubscriptionAdapterTests
[Fact]
public async Task DeleteAsync_detaches_the_subscription_from_its_session_once()
{
var subscription = new Subscription();
var subscription = new Subscription(ClientTelemetry.Context);
var detached = new List<Subscription>();
var adapter = new DefaultSubscriptionAdapter(subscription, (s, _) =>
{
@@ -34,7 +34,7 @@ public class DefaultSubscriptionAdapterTests
public void Dispose_detaches_the_subscription_from_its_session()
{
var detached = 0;
var adapter = new DefaultSubscriptionAdapter(new Subscription(), (_, _) =>
var adapter = new DefaultSubscriptionAdapter(new Subscription(ClientTelemetry.Context), (_, _) =>
{
Interlocked.Increment(ref detached);
return Task.CompletedTask;
@@ -49,7 +49,7 @@ public class DefaultSubscriptionAdapterTests
[Fact]
public async Task A_failing_detach_does_not_throw_from_DeleteAsync()
{
var adapter = new DefaultSubscriptionAdapter(new Subscription(),
var adapter = new DefaultSubscriptionAdapter(new Subscription(ClientTelemetry.Context),
(_, _) => throw new InvalidOperationException("boom"));
await Should.NotThrowAsync(() => adapter.DeleteAsync(TestContext.Current.CancellationToken));
@@ -860,7 +860,6 @@ public class OpcUaClientServiceTests : IDisposable
[Fact]
public async Task GetRedundancyInfoAsync_MissingOptionalArrays_ReturnsGracefully()
{
var readCallIndex = 0;
var session = new FakeSessionAdapter
{
ReadResponseFunc = nodeId =>
@@ -1554,7 +1553,7 @@ public class OpcUaClientServiceTests : IDisposable
{
await _service.SubscribeAsync(nodeId);
await _service.UnsubscribeAsync(nodeId);
}));
}, TestContext.Current.CancellationToken));
}
// No InvalidOperationException from concurrent Dictionary mutation.
@@ -1634,7 +1633,6 @@ public class OpcUaClientServiceTests : IDisposable
var alarmFakeSub = new FakeSubscriptionAdapter();
// First CreateSubscription call → data subscription; second → alarm subscription.
var callIndex = 0;
var session = new FakeSessionAdapter
{
NextSubscription = dataFakeSub
@@ -94,7 +94,7 @@ public class MainWindowViewModelTests
{
await _vm.ConnectCommand.ExecuteAsync(null);
_vm.BrowseTree.RootNodes.Count.ShouldBe(1);
_vm.BrowseTree.ShouldNotBeNull().RootNodes.Count.ShouldBe(1);
_vm.BrowseTree.RootNodes[0].DisplayName.ShouldBe("Root");
}
@@ -148,7 +148,7 @@ public class MainWindowViewModelTests
_vm.SessionLabel.ShouldBe(string.Empty);
_vm.RedundancyInfo.ShouldBeNull();
_vm.BrowseTree.RootNodes.ShouldBeEmpty();
_vm.BrowseTree.ShouldNotBeNull().RootNodes.ShouldBeEmpty();
_vm.SubscriptionCount.ShouldBe(0);
}
@@ -176,11 +176,11 @@ public class MainWindowViewModelTests
{
await _vm.ConnectCommand.ExecuteAsync(null);
var node = _vm.BrowseTree.RootNodes[0];
var node = _vm.BrowseTree.ShouldNotBeNull().RootNodes[0];
_vm.SelectedTreeNode = node;
_vm.ReadWrite.SelectedNodeId.ShouldBe(node.NodeId);
_vm.History.SelectedNodeId.ShouldBe(node.NodeId);
_vm.ReadWrite.ShouldNotBeNull().SelectedNodeId.ShouldBe(node.NodeId);
_vm.History.ShouldNotBeNull().SelectedNodeId.ShouldBe(node.NodeId);
}
/// <summary>
@@ -191,10 +191,10 @@ public class MainWindowViewModelTests
{
await _vm.ConnectCommand.ExecuteAsync(null);
_vm.ReadWrite.IsConnected.ShouldBeTrue();
_vm.Subscriptions.IsConnected.ShouldBeTrue();
_vm.Alarms.IsConnected.ShouldBeTrue();
_vm.History.IsConnected.ShouldBeTrue();
_vm.ReadWrite.ShouldNotBeNull().IsConnected.ShouldBeTrue();
_vm.Subscriptions.ShouldNotBeNull().IsConnected.ShouldBeTrue();
_vm.Alarms.ShouldNotBeNull().IsConnected.ShouldBeTrue();
_vm.History.ShouldNotBeNull().IsConnected.ShouldBeTrue();
}
/// <summary>
@@ -206,10 +206,10 @@ public class MainWindowViewModelTests
await _vm.ConnectCommand.ExecuteAsync(null);
await _vm.DisconnectCommand.ExecuteAsync(null);
_vm.ReadWrite.IsConnected.ShouldBeFalse();
_vm.Subscriptions.IsConnected.ShouldBeFalse();
_vm.Alarms.IsConnected.ShouldBeFalse();
_vm.History.IsConnected.ShouldBeFalse();
_vm.ReadWrite.ShouldNotBeNull().IsConnected.ShouldBeFalse();
_vm.Subscriptions.ShouldNotBeNull().IsConnected.ShouldBeFalse();
_vm.Alarms.ShouldNotBeNull().IsConnected.ShouldBeFalse();
_vm.History.ShouldNotBeNull().IsConnected.ShouldBeFalse();
}
/// <summary>
@@ -355,7 +355,7 @@ public class MainWindowViewModelTests
await _vm.SubscribeSelectedNodesCommand.ExecuteAsync(null);
_vm.Subscriptions.ActiveSubscriptions.ShouldBeEmpty();
_vm.Subscriptions.ShouldNotBeNull().ActiveSubscriptions.ShouldBeEmpty();
}
/// <summary>
@@ -366,12 +366,12 @@ public class MainWindowViewModelTests
{
await _vm.ConnectCommand.ExecuteAsync(null);
var node = _vm.BrowseTree.RootNodes[0];
var node = _vm.BrowseTree.ShouldNotBeNull().RootNodes[0];
_vm.SelectedTreeNodes.Add(node);
_vm.ViewHistoryForSelectedNodeCommand.Execute(null);
_vm.History.SelectedNodeId.ShouldBe(node.NodeId);
_vm.History.ShouldNotBeNull().SelectedNodeId.ShouldBe(node.NodeId);
_vm.SelectedTabIndex.ShouldBe(3);
}
@@ -506,7 +506,7 @@ public class MainWindowViewModelTests
await _vm.ConnectCommand.ExecuteAsync(null);
// Add a subscription
_vm.Subscriptions.IsConnected = true;
_vm.Subscriptions.ShouldNotBeNull().IsConnected = true;
await _vm.Subscriptions.AddSubscriptionForNodeAsync("ns=2;s=TestSub");
// Disconnect saves settings including subscriptions
@@ -554,7 +554,7 @@ public class MainWindowViewModelTests
await vm.ConnectCommand.ExecuteAsync(null);
vm.Subscriptions.ActiveSubscriptions.Count.ShouldBe(2);
vm.Subscriptions.ShouldNotBeNull().ActiveSubscriptions.Count.ShouldBe(2);
vm.Subscriptions.ActiveSubscriptions[0].NodeId.ShouldBe("ns=2;s=Restored1");
vm.Subscriptions.ActiveSubscriptions[1].NodeId.ShouldBe("ns=2;s=Restored2");
vm.SubscriptionCount.ShouldBe(2);
@@ -128,7 +128,7 @@ public class ReadWriteViewModelTests
// because auto-read catches the exception too
_vm.SelectedNodeId = "ns=2;s=SomeNode";
_vm.CurrentStatus.ShouldContain("Error");
_vm.CurrentStatus.ShouldNotBeNull().ShouldContain("Error");
}
/// <summary>Verifies that clear resets all properties.</summary>