From 4621061aae629a22c089a752d11611bbd45181a2 Mon Sep 17 00:00:00 2001 From: Martin Date: Fri, 13 Sep 2024 18:07:59 +0200 Subject: [PATCH] IdeDebugger: fix rpfClearMultiLine / amend test for new settings --- .../lazdebugtestbase/ttestwatchutilities.pas | 44 +++++++++++-------- .../idedebuggerwatchresprinter.pas | 4 +- 2 files changed, 28 insertions(+), 20 deletions(-) diff --git a/components/lazdebuggers/lazdebugtestbase/ttestwatchutilities.pas b/components/lazdebuggers/lazdebugtestbase/ttestwatchutilities.pas index 0e3bc48d59..4d0bb38669 100644 --- a/components/lazdebuggers/lazdebugtestbase/ttestwatchutilities.pas +++ b/components/lazdebuggers/lazdebugtestbase/ttestwatchutilities.pas @@ -379,6 +379,9 @@ operator := (a:pointer): TWatchExpectationResult; implementation +var + TestWatchDisplayFormat: TWatchDisplayFormat; + operator := (a:string): TWatchExpectationResult; begin Result := weAnsiStr(a); @@ -1477,7 +1480,7 @@ begin Context.WatchRes := WatchVal.ResultData; //debugln([' ## ## ', WatchVal.Expression]); - //debugln([FWatchResultPrinter.PrintWatchValue(WatchVal.ResultData,DefaultWatchDisplayFormat)]); debugln; + //debugln([FWatchResultPrinter.PrintWatchValue(WatchVal.ResultData,TestWatchDisplayFormat)]); debugln; if (Context.WatchRes <> nil) and (Context.WatchRes.ValueKind = rdkPCharOrString) @@ -1748,7 +1751,7 @@ begin Result := True; Expect := AContext.Expectation; - Result := TestMatches('Data', Expect.ExpTextData, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''), AContext, AnIgnoreRsn); + Result := TestMatches('Data', Expect.ExpTextData, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), AContext, AnIgnoreRsn); end; end; @@ -1770,7 +1773,7 @@ begin else s := IntToStr(Expect.expIntValue); - Result := TestEquals('Data', s, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''), AContext, AnIgnoreRsn); + Result := TestEquals('Data', s, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), AContext, AnIgnoreRsn); end else begin if IsCardinal then begin @@ -1803,7 +1806,7 @@ begin Expect := AContext.Expectation; WriteStr(s, Expect.ExpBoolValue); - v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); if AContext.Expectation.ExpResultKind = rkSizedBool then begin i := pos('(', v); if i > 1 then @@ -1824,7 +1827,7 @@ begin Expect := AContext.Expectation; if AContext.WatchRes.ValueKind = rdkPrePrinted then begin - Result := TestEquals('Data', FloatToStr(Expect.ExpFloatValue), FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''), EqIgnoreCase, AContext, AnIgnoreRsn); + Result := TestEquals('Data', FloatToStr(Expect.ExpFloatValue), FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), EqIgnoreCase, AContext, AnIgnoreRsn); end else begin Result := TestTrue('ValKind', AContext.WatchRes.ValueKind = rdkFloatVal, AContext, AnIgnoreRsn); @@ -1842,7 +1845,7 @@ begin Result := True; Expect := AContext.Expectation; - Result := TestEquals('Data', Expect.ExpTextData, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''), not(Compiler.SymbolType in stDwarf2), AContext, AnIgnoreRsn); + Result := TestEquals('Data', Expect.ExpTextData, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), not(Compiler.SymbolType in stDwarf2), AContext, AnIgnoreRsn); end; end; @@ -1858,7 +1861,7 @@ begin Result := True; Expect := AContext.Expectation; - v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); if (v='') or (v[1] <> '[') or (v[length(v)] <> ']') then begin Result := TestTrue('elements are in [...]', False, AContext, AnIgnoreRsn); @@ -1896,7 +1899,7 @@ begin else e := QuoteText(Expect.ExpTextData); - v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); if ehCharFromIndex in ehf then begin if v <> e then begin //AnIgnoreRsn := AnIgnoreRsn + 'char from index not implemented'; @@ -1925,7 +1928,7 @@ begin Expect := AContext.Expectation; if AContext.WatchRes.ValueKind = rdkPrePrinted then begin - v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); ehf := Expect.ExpErrorHandlingFlags[Compiler.SymbolType]; // in dwarf 2 ansistring are pchar @@ -2012,7 +2015,7 @@ begin else e := QuoteText(Expect.ExpTextData); - Result := TestEquals('Data', e, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''), AContext, AnIgnoreRsn); + Result := TestEquals('Data', e, FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''), AContext, AnIgnoreRsn); end else begin Result := TestTrue('ValueKind', AContext.WatchRes.ValueKind = rdkString, AContext, AnIgnoreRsn); @@ -2036,7 +2039,7 @@ begin ehf := Expect.ExpErrorHandlingFlags[Compiler.SymbolType]; if AContext.WatchRes.ValueKind = rdkPrePrinted then begin - g := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + g := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); e := '(\$[0-9a-fA-F]*\^?|nil)'; tn := GetExpTypeNameAsRegEx(Expect); @@ -2187,7 +2190,7 @@ begin end; end; - v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, ''); + v := FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, ''); debugln([' expect ',Expect.ExpFullArrayLen,' got "',v,'"' ]); if CompareText(v, 'nil') = 0 then begin @@ -2248,7 +2251,7 @@ begin Expect := AContext.Expectation; ehf := Expect.ExpErrorHandlingFlags[Compiler.SymbolType]; - v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, '')); + v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, '')); delete(v, 1, pos('(', v)); delete(v, length(v), 1); @@ -2298,7 +2301,7 @@ begin if j >= 0 then begin SubContext.WatchRes := TWatchResultDataPrePrinted.Create( - FWatchResultPrinter.PrintWatchValue(AContext.WatchRes.Fields[j].Field, DefaultWatchDisplayFormat, '') + FWatchResultPrinter.PrintWatchValue(AContext.WatchRes.Fields[j].Field, TestWatchDisplayFormat, '') ); FTest.TestBaseName := n + ' Idx=' + IntToStr(i)+' '; SubContext.Expectation := sr; @@ -2320,7 +2323,7 @@ begin with AContext.WatchExp do begin Result := True; - v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, '')); + v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, '')); TestTrue('TODO / some text', v <> '', AContext, AnIgnoreRsn); TestTrue('rdkStruct', AContext.WatchRes.ValueKind = rdkStruct, AContext, AnIgnoreRsn); @@ -2338,7 +2341,7 @@ begin with AContext.WatchExp do begin Result := True; - v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, '')); + v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, '')); TestTrue('TODO / some text', v <> '', AContext, AnIgnoreRsn); TestTrue('rdkStruct', AContext.WatchRes.ValueKind = rdkStruct, AContext, AnIgnoreRsn); @@ -2356,7 +2359,7 @@ begin with AContext.WatchExp do begin Result := True; - v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, '')); + v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, '')); TestTrue('TODO / some text', v <> '', AContext, AnIgnoreRsn); TestTrue('rdkStruct', AContext.WatchRes.ValueKind = rdkStruct, AContext, AnIgnoreRsn); @@ -2377,7 +2380,7 @@ begin with AContext.WatchExp do begin Result := True; - v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, DefaultWatchDisplayFormat, '')); + v := Trim(FWatchResultPrinter.PrintWatchValue(AContext.WatchRes, TestWatchDisplayFormat, '')); TestTrue('TODO / some text', v <> '', AContext, AnIgnoreRsn); TestTrue('rdkStruct', AContext.WatchRes.ValueKind = rdkStruct, AContext, AnIgnoreRsn); @@ -2573,5 +2576,10 @@ begin CheckResults; end; +initialization + TestWatchDisplayFormat := DefaultWatchDisplayFormat; + TestWatchDisplayFormat.ArrayLen.UseInherited := False; + TestWatchDisplayFormat.ArrayLen.ShowLenPrefix := False; + end. diff --git a/ide/packages/idedebugger/idedebuggerwatchresprinter.pas b/ide/packages/idedebugger/idedebuggerwatchresprinter.pas index d0b472ff11..5867b8e072 100644 --- a/ide/packages/idedebugger/idedebuggerwatchresprinter.pas +++ b/ide/packages/idedebugger/idedebuggerwatchresprinter.pas @@ -1352,9 +1352,9 @@ begin Result.RawAsStringPtr^ := 'Error: Unknown'; rdkPrePrinted: begin if rpfClearMultiLine in FFormatFlags then - Result.RawAsStringPtr^ := AResValue.AsString + Result.RawAsStringPtr^ := ClearMultiline(AResValue.AsString) else - Result.RawAsStringPtr^ := ClearMultiline(AResValue.AsString); + Result.RawAsStringPtr^ := AResValue.AsString; end; rdkSignedNumVal, rdkUnsignedNumVal: begin