fix(flow-debugger): final-review remediation — 2000-row trace pull, shared ExceptionHeader parser, surrogate-safe clip, wording, alarm source, register renumber (I1/I2/M1-M8)
This commit is contained in:
@@ -254,6 +254,27 @@ public class FlowStepDetailTests : BunitContext
|
||||
Assert.NotNull(cut.Find("[data-test=flow-step-exception-copy]"));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void WrappedException_TheBlockHeaderNamesTheINNERMOSTType_InFull()
|
||||
{
|
||||
// Final review M1: the panel used to parse the OUTERMOST exception of a " ---> " chain
|
||||
// while the graph node's subtitle showed the innermost — the two now share
|
||||
// ExceptionHeader, which always follows the chain to its end. The panel still shows the
|
||||
// type with its namespace (only the node badge shortens it), and the raw detail is
|
||||
// untouched, so the wrapper is still visible in the <pre>.
|
||||
const string wrapped =
|
||||
"System.AggregateException: One or more errors occurred. (Recipe 42 rejected by Galaxy (code 7)) " +
|
||||
"---> ZB.Scada.RecipeRejectedException: Recipe 42 rejected by Galaxy (code 7)\n" +
|
||||
" at Submission#0.<<Initialize>>d__0.MoveNext()";
|
||||
var step = ScriptStep(FlowStepOutcome.Failed, "ProcessRecipeDownload", Guid.NewGuid(), [], wrapped);
|
||||
var cut = Render<FlowStepDetail>(p => p.Add(x => x.Step, step));
|
||||
|
||||
var exc = cut.Find("[data-test=flow-step-exception]");
|
||||
Assert.Equal("ZB.Scada.RecipeRejectedException", exc.QuerySelector(".fsd-exc-type")!.TextContent.Trim());
|
||||
Assert.Equal("Recipe 42 rejected by Galaxy (code 7)", exc.QuerySelector(".fsd-exc-message")!.TextContent.Trim());
|
||||
Assert.Contains("System.AggregateException", exc.QuerySelector("pre")!.TextContent);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void OkStepWithLines_OpensOnInput()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user