fix(ablegacy): final review I3 — default reverts to libplctag; Native is opt-in
On a wire the native PCCC path is proven only for N-file reads/writes and one F8 read (ab_server). An absent transport key now resolves to Libplctag for every family; explicit Native still wins and still warns once per instance on PLC-5/LogixPccc. AdminUI dropdown, CLI help, evidence claims (PcccFileType, AbLegacy.md wire-evidence table, release note) corrected: S:0 (default probe) and B/T/C/R/S/L/ST/A/O/I are unverified natively. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
+21
-2
@@ -144,8 +144,7 @@ public sealed class AbLegacyDriverPageFormSerializationTests
|
||||
public void A_config_without_transport_loads_as_Default_and_an_unrelated_edit_keeps_the_key_absent()
|
||||
{
|
||||
// Task 22 reverses Task 19's "re-emit an explicit Libplctag": that would pin every edited driver to
|
||||
// a concrete transport and bypass the driver-side default (and AbLegacy's PLC-5 / LogixPccc
|
||||
// exclusion). Absent loads as Default (null) and a save that edits something else still omits it.
|
||||
// a concrete transport and bypass the driver-side default (Libplctag since final review I3). Absent loads as Default (null) and a save that edits something else still omits it.
|
||||
var loaded = AbLegacyDriverForm.TryDeserialize("""{"probeTimeoutSeconds":5}""");
|
||||
loaded.ShouldNotBeNull();
|
||||
var form = AbLegacyDriverForm.FormModel.FromOptions(loaded);
|
||||
@@ -168,4 +167,24 @@ public sealed class AbLegacyDriverPageFormSerializationTests
|
||||
form.Transport = null; // the "Default (...)" dropdown option
|
||||
AbLegacyDriverForm.Serialize(form.ToOptions(loaded.Devices)).ShouldNotContain("transport", Case.Insensitive);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Final review I3: the dropdown labels must say what an absent key does (libplctag) and that Native is
|
||||
/// opt-in. Source scan (no bUnit in this repo); the labels are static option text.
|
||||
/// </summary>
|
||||
[Fact]
|
||||
public void The_transport_dropdown_labels_name_libplctag_as_the_default_and_native_as_opt_in()
|
||||
{
|
||||
var dir = new DirectoryInfo(AppContext.BaseDirectory);
|
||||
while (dir is not null && !File.Exists(Path.Combine(dir.FullName, "ZB.MOM.WW.OtOpcUa.slnx")))
|
||||
dir = dir.Parent;
|
||||
dir.ShouldNotBeNull("could not locate the repository root");
|
||||
var razor = File.ReadAllText(Path.Combine(dir!.FullName, "src", "Server", "ZB.MOM.WW.OtOpcUa.AdminUI",
|
||||
"Components", "Shared", "Drivers", "Forms", "AbLegacyDriverForm.razor"));
|
||||
|
||||
razor.ShouldContain("<option value=\"\">Default (libplctag)</option>");
|
||||
razor.ShouldContain("<option value=\"@AbLegacyTransport.Native\">Native (managed, opt-in)</option>");
|
||||
razor.ShouldContain("<option value=\"@AbLegacyTransport.Libplctag\">libplctag</option>");
|
||||
razor.ShouldNotContain("Default (Native");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user