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
@@ -13,11 +13,6 @@ namespace ZB.MOM.WW.OtOpcUa.Core.Scripting.Tests;
[Trait("Category", "Unit")]
public sealed class CompiledScriptCacheTests
{
private sealed class CompileCountingGate
{
public int Count;
}
/// <summary>Verifies that the first call to GetOrCompile compiles the script and caches the evaluator.</summary>
[Fact]
public void First_call_compiles_and_caches()
@@ -112,7 +107,7 @@ public sealed class CompiledScriptCacheTests
/// <summary>Verifies that concurrent compiles of the same source deduplicate to a single compilation.</summary>
[Fact]
public void Concurrent_compiles_of_the_same_source_deduplicate()
public async Task Concurrent_compiles_of_the_same_source_deduplicate()
{
// LazyThreadSafetyMode.ExecutionAndPublication guarantees only one compile
// even when multiple threads race GetOrCompile against an empty cache.
@@ -122,13 +117,13 @@ public sealed class CompiledScriptCacheTests
const string src = """return 99;""";
var tasks = Enumerable.Range(0, 20)
.Select(_ => Task.Run(() => cache.GetOrCompile(src)))
.Select(_ => Task.Run(() => cache.GetOrCompile(src), TestContext.Current.CancellationToken))
.ToArray();
Task.WhenAll(tasks).GetAwaiter().GetResult();
var evaluators = await Task.WhenAll(tasks);
var firstInstance = tasks[0].Result;
foreach (var t in tasks)
ReferenceEquals(t.Result, firstInstance).ShouldBeTrue();
var firstInstance = evaluators[0];
foreach (var e in evaluators)
ReferenceEquals(e, firstInstance).ShouldBeTrue();
cache.Count.ShouldBe(1);
}