fix(abcip-tests): fix static-init NRE blocking AbCip.IntegrationTests (#446)
This commit was merged in pull request #446.
This commit is contained in:
@@ -24,7 +24,7 @@ need sudo to create new ones — I deployed FOCAS to `~/otopcua-focas` on the ho
|
||||
| **Host** | ⚠️ **105/117** (7F, 5 skip) | 7 heavy 2-node deploy/failover E2E time out (20–45 s) under amd64-emulated SQL; 5 LDAP-backed skip |
|
||||
| **TwinCAT** | ⏭️ 13 skip | no TC3 XAR fixture exists (expected clean-skip) |
|
||||
| **Modbus** (dl205 / mitsubishi / s7_1500 / exception_injection) | ❌ 8F/5F/3F/8F | sim-behavior drift — see below |
|
||||
| **AbCip** | ❌ 6F/1P/3skip | test-harness static-init-order bug — see below |
|
||||
| **AbCip** | ✅ 10P/3skip (was 6F/1P/3skip) | static-init-order bug FIXED 2026-07-15 (`326b22a7`) — see below |
|
||||
| **FOCAS** | ❌ 9F/1P | tests assume a localhost-colocated mock — see below |
|
||||
| **AbLegacy** | ❌ 4F | no AbLegacy sim fixture deployed to the host |
|
||||
| **OpcUaServer** | ❌ 4F | test-harness cert-store config gap |
|
||||
@@ -85,7 +85,10 @@ and never run, so they've bit-rotted in several distinct ways.
|
||||
|
||||
## Follow-up backlog (distinct, not one fix)
|
||||
|
||||
1. **AbCip static-init bug** — trivial always-fail test bug. Expression-body `KnownProfiles.All`. *Clean win.*
|
||||
1. ~~**AbCip static-init bug** — trivial always-fail test bug. Expression-body `KnownProfiles.All`.~~
|
||||
✅ **DONE 2026-07-15** (commit `326b22a7`, PR #446). Live-verified against the controllogix fixture:
|
||||
suite went **6F/1P/3skip → 10 pass / 0 fail / 3 skip** (skips = emulator-mode tests needing a different
|
||||
fixture mode).
|
||||
2. **Modbus non-standard profiles** — pin pymodbus in the fixture Dockerfile (or update expected values for 4.x).
|
||||
3. **FOCAS** — reconcile the 127.0.0.1-mock topology with the remote-fixture model.
|
||||
4. **AbLegacy** — deploy an AbLegacy sim fixture (none on host).
|
||||
|
||||
@@ -27,7 +27,11 @@ public sealed record AbServerProfile(
|
||||
public static class KnownProfiles
|
||||
{
|
||||
/// <summary>Gets all known server profiles.</summary>
|
||||
public static IReadOnlyList<AbServerProfile> All { get; } =
|
||||
/// <remarks>Expression-bodied (evaluated on access) so it observes the
|
||||
/// <c>static readonly</c> profile fields below after they are initialised;
|
||||
/// a <c>{ get; } =</c> initialiser here runs in textual order — before those
|
||||
/// fields — and would capture an all-null list.</remarks>
|
||||
public static IReadOnlyList<AbServerProfile> All =>
|
||||
[ControlLogix, CompactLogix, Micro800, GuardLogix];
|
||||
|
||||
/// <summary>Gets the ControlLogix profile.</summary>
|
||||
|
||||
Reference in New Issue
Block a user