mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-12 02:18:44 +02:00
DBG: tests
git-svn-id: trunk@32963 -
This commit is contained in:
parent
c5f2e44a7c
commit
a58a76fc72
@ -213,6 +213,7 @@ type
|
||||
FTestResult: TGDBTestResult;
|
||||
FTestErrors, FIgnoredErrors, FUnexpectedSuccess: String;
|
||||
FTestCnt, FTestErrorCnt, FIgnoredErrorCnt, FUnexpectedSuccessCnt, FSucessCnt: Integer;
|
||||
FTotalErrorCnt, FTotalIgnoredErrorCnt, FTotalUnexpectedSuccessCnt: Integer;
|
||||
FCurrentPrgName, FCurrentExename: String;
|
||||
FLogFile: TextFile;
|
||||
FLogFileCreated: Boolean;
|
||||
@ -417,7 +418,8 @@ begin
|
||||
+ '_' + NameToFileName(GetCompilerInfo.Name)
|
||||
+ '_' + SymbolTypeNames[GetSymbolType]
|
||||
+ '_' + NameToFileName(GetDebuggerInfo.Name)
|
||||
+ '.log';
|
||||
;
|
||||
|
||||
dir := ConfDir;
|
||||
if DirectoryExistsUTF8(Logdir) then
|
||||
dir := Logdir;
|
||||
@ -425,9 +427,11 @@ begin
|
||||
for i := 1 to length(name) do
|
||||
if name[i] in ['/', '\', '*', '?', ':'] then
|
||||
name[i] := '_';
|
||||
FLogFileName := dir + name;
|
||||
|
||||
FFinalLogFileName := dir + name;
|
||||
AssignFile(FLogFile, Dir + name);
|
||||
FLogFileName := dir + name + '.log.running';
|
||||
|
||||
AssignFile(FLogFile, FLogFileName);
|
||||
Rewrite(FLogFile);
|
||||
FLogFileCreated := True;
|
||||
//end;
|
||||
@ -436,6 +440,10 @@ end;
|
||||
procedure TGDBTestCase.SetUp;
|
||||
begin
|
||||
FLogFileCreated := False;
|
||||
ClearTestErrors;
|
||||
FTotalErrorCnt := 0;
|
||||
FTotalIgnoredErrorCnt := 0;
|
||||
FTotalUnexpectedSuccessCnt := 0;
|
||||
inherited SetUp;
|
||||
end;
|
||||
|
||||
@ -444,8 +452,19 @@ begin
|
||||
inherited TearDown;
|
||||
if FLogFileCreated then begin
|
||||
CloseFile(FLogFile);
|
||||
if FFinalLogFileName <> FLogFileName
|
||||
then RenameFileUTF8(FLogFileName, FFinalLogFileName);
|
||||
|
||||
FTotalErrorCnt := FTotalErrorCnt + FTestErrorCnt;
|
||||
FTotalIgnoredErrorCnt := FTotalIgnoredErrorCnt + FIgnoredErrorCnt;
|
||||
FTotalUnexpectedSuccessCnt := FTotalUnexpectedSuccessCnt + FUnexpectedSuccessCnt;
|
||||
if (FTotalIgnoredErrorCnt > 0)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.ignored_'+IntToStr(FTotalIgnoredErrorCnt);
|
||||
if (FTotalUnexpectedSuccessCnt > 0)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.unexpected_'+IntToStr(FTotalUnexpectedSuccessCnt);
|
||||
if (FTotalErrorCnt > 0)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.failed_'+IntToStr(FTotalErrorCnt);
|
||||
|
||||
FFinalLogFileName := FFinalLogFileName + '.log';
|
||||
RenameFileUTF8(FLogFileName, FFinalLogFileName);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -515,6 +534,10 @@ end;
|
||||
|
||||
procedure TGDBTestCase.ClearTestErrors;
|
||||
begin
|
||||
FTotalErrorCnt := FTotalErrorCnt + FTestErrorCnt;
|
||||
FTotalIgnoredErrorCnt := FTotalIgnoredErrorCnt + FIgnoredErrorCnt;
|
||||
FTotalUnexpectedSuccessCnt := FTotalUnexpectedSuccessCnt + FUnexpectedSuccessCnt;
|
||||
|
||||
FTestErrors := '';
|
||||
FIgnoredErrors := '';
|
||||
FUnexpectedSuccess := '';
|
||||
@ -678,12 +701,6 @@ begin
|
||||
writeln(FLogFile, '================= Unexpected Success'+LineEnding);
|
||||
writeln(FLogFile, FUnexpectedSuccess);
|
||||
writeln(FLogFile, '================='+LineEnding);
|
||||
if (FIgnoredErrorCnt > 0) and (pos('ignored', FFinalLogFileName) < 1)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.ignored';
|
||||
if (FUnexpectedSuccessCnt > 0) and (pos('unexpected', FFinalLogFileName) < 1)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.unexpected';
|
||||
if (FTestErrorCnt > 0) and (pos('failed', FFinalLogFileName) < 1)
|
||||
then FFinalLogFileName := FFinalLogFileName + '.failed';
|
||||
end;
|
||||
if s <> '' then begin
|
||||
Fail(s1+ LineEnding + s);
|
||||
|
@ -166,6 +166,7 @@ type
|
||||
function AddCharFmtDef (AnExpr, AMtch: string; ATpNm: string = 'Char'; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
function AddPointerFmtDef (AnExpr, ATpNm: string; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
function AddPointerFmtDef (AnExpr, AMtch, ATpNm: string; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
function AddPointerFmtDefRaw(AnExpr, AMtch, ATpNm: string; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
|
||||
|
||||
procedure UpdRes(AWatchExp: PWatchExpectation; ASymbolType: TSymbolType;
|
||||
@ -362,6 +363,12 @@ end;
|
||||
|
||||
function TTestWatches.AddPointerFmtDef(AnExpr, AMtch, ATpNm: string;
|
||||
AFlgs: TWatchExpectationFlags): PWatchExpectation;
|
||||
begin
|
||||
Result := AddFmtDef(AnExpr, MatchPointer(AMtch), skPointer, ATpNm, AFlgs );
|
||||
end;
|
||||
|
||||
function TTestWatches.AddPointerFmtDefRaw(AnExpr, AMtch, ATpNm: string;
|
||||
AFlgs: TWatchExpectationFlags): PWatchExpectation;
|
||||
begin
|
||||
Result := AddFmtDef(AnExpr, AMtch, skPointer, ATpNm, AFlgs );
|
||||
end;
|
||||
@ -890,8 +897,8 @@ begin
|
||||
r:=AddCharFmtDef('GlobAMyAnsiStringDArray[1][13]', '1', 'char', [IgnDwrf2, IgnStabs]);
|
||||
|
||||
// PAnsiString in array
|
||||
r:=AddPointerFmtDef('ArgTMyPAnsiStringDArray[0]', MatchPointer(), '^(\^|P)(AnsiString|PChar)$', [fTpMtch]);
|
||||
r:=AddPointerFmtDef('ArgTMyPAnsiStringDArray[1]', MatchPointer(), '^(\^|P)(AnsiString|PChar)$', [fTpMtch]);
|
||||
r:=AddPointerFmtDefRaw('ArgTMyPAnsiStringDArray[0]', MatchPointer(), '^(\^|P)(AnsiString|PChar)$', [fTpMtch]);
|
||||
r:=AddPointerFmtDefRaw('ArgTMyPAnsiStringDArray[1]', MatchPointer(), '^(\^|P)(AnsiString|PChar)$', [fTpMtch]);
|
||||
r:=AddStringFmtDef('ArgTMyPAnsiStringDArray[0]^', 'DArray1 Str0', 'AnsiString', [IgnDwrf2, IgnStabs]);
|
||||
r:=AddStringFmtDef('ArgTMyPAnsiStringDArray[1]^', 'DArray1 Str1', 'AnsiString', [IgnDwrf2, IgnStabs]);
|
||||
r:=AddStringFmtDef('VArgTMyPAnsiStringDArray[0]^', 'DArray2 Str0', 'AnsiString', [IgnStabs, IgnDwrf2]);
|
||||
@ -1148,6 +1155,24 @@ begin
|
||||
end;
|
||||
|
||||
procedure TTestWatches.AddExpectBreakFooArray;
|
||||
|
||||
function AddRecForArrFmtDef (AnExpr: string; ARecSuffix, AValue: Integer; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
begin
|
||||
case ARecSuffix of
|
||||
1: Result := Add(AnExpr, wdfDefault, MatchRecord('TRecForArray1', ' a = '+IntToStr(AValue)), skRecord, 'TRecForArray1', AFlgs );
|
||||
2: Result := Add(AnExpr, wdfDefault, MatchRecord('TRecForArray2', ' c = '+IntToStr(AValue)), skRecord, 'TRecForArray2', AFlgs );
|
||||
3: Result := Add(AnExpr, wdfDefault, MatchRecord('TRecForArray3', ' a = '+IntToStr(AValue)), skRecord, 'TRecForArray3', AFlgs );
|
||||
4: Result := Add(AnExpr, wdfDefault, MatchRecord('TRecForArray4', ' c = '+IntToStr(AValue)), skRecord, 'TRecForArray4', AFlgs );
|
||||
end;
|
||||
end;
|
||||
|
||||
function AddArrayFmtDef (AnExpr, AMtch, ATpNm: string; AFlgs: TWatchExpectationFlags=[]): PWatchExpectation;
|
||||
begin
|
||||
Result := Add(AnExpr, wdfDefault, AMtch, skSimple, ATpNm, AFlgs );
|
||||
end;
|
||||
|
||||
var
|
||||
r: PWatchExpectation;
|
||||
begin
|
||||
if not TestControlForm.CheckListBox1.Checked[TestControlForm.CheckListBox1.Items.IndexOf(' TTestWatch.All')] then exit;
|
||||
FCurrentExpArray := @ExpectBreakFooArray;
|
||||
@ -1197,6 +1222,34 @@ begin
|
||||
[fTpMtch]);
|
||||
{%endregion * Array * }
|
||||
|
||||
r := AddArrayFmtDef('ArgTDynArrayTRec1', '.', 'TDynArrayTRec1', []);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[0]', 3, 90, []);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[1]', 3, 91, []);
|
||||
|
||||
r := AddArrayFmtDef('ArgTDynArrayPRec1', '.', 'TDynArrayPRec1', []);
|
||||
r := AddPointerFmtDef ('ArgTDynArrayPRec1[0]', '\^TRecForArray3', '^TRecForArray3', []);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayPRec1[0]^', 3, 90, [IgnDwrf, IgnStabs]);
|
||||
r := AddPointerFmtDef ('ArgTDynArrayPRec1[1]', '\^TRecForArray3', '^TRecForArray3', []);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayPRec1[1]^', 3, 91, [IgnDwrf, IgnStabs]);
|
||||
|
||||
r := AddArrayFmtDef('ArgTDynDynArrayTRec1', '.', 'TDynDynArrayTRec1', []);
|
||||
r := AddArrayFmtDef('ArgTDynDynArrayTRec1[0]', '.', 'xxx', [IgnDwrf, IgnStabs]);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[0][0]', 1, 80, [IgnDwrf, IgnStabs]);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[0][1]', 1, 81, [IgnDwrf, IgnStabs]);
|
||||
r := AddArrayFmtDef('ArgTDynDynArrayTRec1[1]', '.', 'xxx', [IgnDwrf, IgnStabs]);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[1][0]', 1, 85, [IgnDwrf, IgnStabs]);
|
||||
r := AddRecForArrFmtDef('ArgTDynArrayTRec1[1][1]', 1, 86, [IgnDwrf, IgnStabs]);
|
||||
|
||||
|
||||
r := AddArrayFmtDef('VArgTDynArrayTRec1', '.', 'TDynArrayTRec1', []);
|
||||
r := AddRecForArrFmtDef('VArgTDynArrayTRec1[0]', 3, 90, []);
|
||||
r := AddRecForArrFmtDef('VArgTDynArrayTRec1[1]', 3, 91, []);
|
||||
|
||||
r := AddArrayFmtDef('VArgTDynArrayPRec1', '.', 'TDynArrayPRec1', []);
|
||||
r := AddPointerFmtDef ('VArgTDynArrayPRec1[0]', '\^TRecForArray3', '^TRecForArray3', []);
|
||||
r := AddRecForArrFmtDef('VArgTDynArrayPRec1[0]^', 3, 90, [IgnDwrf, IgnStabs]);
|
||||
r := AddPointerFmtDef ('VArgTDynArrayPRec1[1]', '\^TRecForArray3', '^TRecForArray3', []);
|
||||
r := AddRecForArrFmtDef('VArgTDynArrayPRec1[1]^', 3, 91, [IgnDwrf, IgnStabs]);
|
||||
end;
|
||||
|
||||
procedure TTestWatches.AddExpectBreakFooMixInfo;
|
||||
|
Loading…
Reference in New Issue
Block a user