From 7f0efea9ae61a69cacde09314c3b70caff003dda Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 6 Feb 2023 10:54:32 +0100 Subject: [PATCH] FpDebug: tests, fix logging / add timing --- .../lazdebuggerfp/fpdebugdebuggerutils.pas | 5 +- .../lazdebuggerfp/test/LazDebFpTest.lpi | 151 +++++++++++++----- .../lazdebuggerfp/test/testwatches.pas | 2 +- .../lazdebugtestbase/testdbgtestsuites.pas | 33 ++++ .../lazdebugtestbase/testoutputlogger.pas | 2 +- 5 files changed, 147 insertions(+), 46 deletions(-) diff --git a/components/lazdebuggers/lazdebuggerfp/fpdebugdebuggerutils.pas b/components/lazdebuggers/lazdebuggerfp/fpdebugdebuggerutils.pas index af5def7818..ca0ed6df22 100644 --- a/components/lazdebuggers/lazdebuggerfp/fpdebugdebuggerutils.pas +++ b/components/lazdebuggers/lazdebuggerfp/fpdebugdebuggerutils.pas @@ -30,8 +30,9 @@ unit FpDebugDebuggerUtils; interface uses - FpDbgUtil, FpdMemoryTools, FpPascalParser, LazLoggerBase, DbgIntfDebuggerBase, - sysutils, Classes, syncobjs, Forms; + FpDbgUtil, FpdMemoryTools, FpPascalParser, + {$ifdef FORCE_LAZLOGGER_DUMMY} LazLoggerDummy {$else} LazLoggerBase {$endif}, + DbgIntfDebuggerBase, sysutils, Classes, syncobjs, Forms; type diff --git a/components/lazdebuggers/lazdebuggerfp/test/LazDebFpTest.lpi b/components/lazdebuggers/lazdebuggerfp/test/LazDebFpTest.lpi index 237f9d9914..cb016518a6 100644 --- a/components/lazdebuggers/lazdebuggerfp/test/LazDebFpTest.lpi +++ b/components/lazdebuggers/lazdebuggerfp/test/LazDebFpTest.lpi @@ -12,7 +12,7 @@ - + @@ -50,7 +50,7 @@ - + @@ -68,7 +68,7 @@ - + @@ -86,7 +86,7 @@ - + @@ -104,7 +104,7 @@ - + @@ -122,7 +122,7 @@ - + @@ -140,7 +140,7 @@ - + @@ -158,7 +158,7 @@ - + @@ -176,7 +176,7 @@ - + @@ -194,7 +194,7 @@ - + @@ -212,7 +212,7 @@ - + @@ -230,7 +230,7 @@ - + @@ -248,7 +248,7 @@ - + @@ -266,7 +266,25 @@ - + + + + + + + + + + + + + + + + + + + @@ -286,8 +304,8 @@ - - + + @@ -304,31 +322,70 @@ - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -414,7 +471,7 @@ - + @@ -423,13 +480,23 @@ + + + + + + + + + + diff --git a/components/lazdebuggers/lazdebuggerfp/test/testwatches.pas b/components/lazdebuggers/lazdebuggerfp/test/testwatches.pas index c05925fc29..116831a1c2 100644 --- a/components/lazdebuggers/lazdebuggerfp/test/testwatches.pas +++ b/components/lazdebuggers/lazdebuggerfp/test/testwatches.pas @@ -1335,7 +1335,7 @@ begin for i := c to t.Count-1 do t.Tests[i].Skip; // class var do not work => but ensure they do not crash - if (Compiler.Version >= 030200) or (Compiler.SymbolType in stDwarf2) then begin + if (Compiler.Version >= 030202) or (Compiler.SymbolType in stDwarf2) then begin AddWatches(t, 'glob MyOldObjectBase', 'MyOldObjectBase.obc', 003, 'D', tlAny, '', [tlReduced]); AddWatches(t, 'glob MyOldObject inherhit', 'MyOldObject.obc', 004, 'E', tlAny, '', [tlReduced]); AddWatches(t, 'glob MyOldObject', 'MyOldObject.oc', 002, 'C', tlAny, '', [tlReduced]); diff --git a/components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas b/components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas index ecbd7dda4a..e0acb1710e 100644 --- a/components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas +++ b/components/lazdebuggers/lazdebugtestbase/testdbgtestsuites.pas @@ -58,6 +58,7 @@ type FLogFileCreated, FReportFileCreated: Boolean; FLogFileName, FReportFileName: String; FLogBufferText: TStringList; + FTestStartTime: QWord; procedure InitLog; procedure FinishLog; @@ -82,6 +83,7 @@ type function GetFinalLogFileName: String; virtual; procedure CreateLog; procedure CreateReport; + procedure LogTime(AName: String; ATimeDiff: QWord); // Debugln procedure DoDbgOut(Sender: TObject; S: string; var Handled: Boolean); virtual; procedure DoDebugln(Sender: TObject; S: string; var Handled: Boolean); virtual; @@ -766,6 +768,31 @@ begin end; end; +procedure TDBGTestCase.LogTime(AName: String; ATimeDiff: QWord); +var + dir: String; + f: Text; +begin + {$ifndef TEST_LOG_TIME} + exit; + {$Endif} + AName := GetLogFileName + ' ' + AName; + if DirectoryExistsUTF8(TestControlGetLogPath) then + dir := TestControlGetLogPath + else + dir := GetCurrentDirUTF8; + + dir := AppendPathDelim(dir)+'RunTimes.log'; + + Assign(f, dir); + if FileExistsUTF8(dir) then + Append(f) + else + rewrite(f); + writeln(f, Format('%-50s : %3.3f', [AName, ATimeDiff/1000])); + Close(f); +end; + procedure TDBGTestCase.FinishLog; var NewName: String; @@ -883,9 +910,11 @@ begin TestLogger.DebugLn(['Running ', Parent.TestSuiteName, ' ', Parent.TestName, ' ', TestSuiteName, ' ', TestName]); try ClearTestErrors; + FTestStartTime := GetTickCount64; inherited RunTest; finally Debugger.CleanAfterTestDone; + LogTime('', GetTickCount64 - FTestStartTime); end; end; @@ -919,7 +948,10 @@ end; procedure TDBGTestCase.TestCompile(const PrgName: string; out ExeName: string; const UsesDirs: array of TUsesDir; NamePostFix: String; ExtraArgs: String); +var + t: QWord; begin + t := GetTickCount64; try LogText(LineEnding+LineEnding + '******************* compile '+PrgName + ' ' + ExtraArgs +LineEnding ); Compiler.TestCompile(PrgName, ExeName, UsesDirs, NamePostFix, ExtraArgs); @@ -930,6 +962,7 @@ begin AssertTestErrors; end; end; + FTestStartTime := FTestStartTime + (GetTickCount64 - t); end; procedure TDBGTestCase.TestCompile(const Prg: TCommonSource; out diff --git a/components/lazdebuggers/lazdebugtestbase/testoutputlogger.pas b/components/lazdebuggers/lazdebugtestbase/testoutputlogger.pas index 9ff3e45440..e5e85bd79d 100644 --- a/components/lazdebuggers/lazdebugtestbase/testoutputlogger.pas +++ b/components/lazdebuggers/lazdebugtestbase/testoutputlogger.pas @@ -20,7 +20,7 @@ begin if TheLogger = nil then begin TheLogger := TLazLoggerFile.Create; TheLogger.AddReference; - TLazLoggerFile(TheLogger).Assign(DebugLogger); +// TLazLoggerFile(TheLogger).Assign(DebugLogger); TheLogger.OnDbgOut := nil; TheLogger.OnDebugLn := nil; TheLogger.Init;