mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-08 19:38:09 +02:00
LazLogger: tests / fix parsing enabled groups
git-svn-id: trunk@35329 -
This commit is contained in:
parent
b4aa41e12e
commit
998b336ccb
@ -184,7 +184,7 @@ type
|
||||
|
||||
FLogGroupList: TObject; // Using TObject, so if none of the functions is used in the app, then even the rlass should be smart linked
|
||||
FParamForLogFileName: String;
|
||||
FLogDefaultEnabled, FLogParamParsed: Boolean;
|
||||
FLogDefaultEnabled, FLogAllDefaultDisabled, FLogParamParsed: Boolean;
|
||||
|
||||
procedure SetAutoDestroy(AValue: Boolean);
|
||||
procedure SetCloseLogFileBetweenWrites(AValue: Boolean);
|
||||
@ -1007,7 +1007,8 @@ var
|
||||
e: Boolean;
|
||||
begin
|
||||
c := GetParamByNameCount(FParamForEnabledLogGroups);
|
||||
FLogDefaultEnabled := True;
|
||||
FLogDefaultEnabled := False;
|
||||
FLogAllDefaultDisabled := FAlse;
|
||||
|
||||
list := TStringList.Create;
|
||||
for i := 0 to c - 1 do begin
|
||||
@ -1018,6 +1019,7 @@ begin
|
||||
FLogDefaultEnabled := False;
|
||||
for j := 0 to LogGroupList.Count - 1 do
|
||||
LogGroupList[j]^.Enabled := False;
|
||||
FLogAllDefaultDisabled := True;
|
||||
end
|
||||
else
|
||||
begin
|
||||
@ -1395,6 +1397,7 @@ begin
|
||||
{$endif}
|
||||
FLogGroupList := nil;
|
||||
FLogDefaultEnabled := False;
|
||||
FLogAllDefaultDisabled := FAlse;
|
||||
end;
|
||||
|
||||
destructor TLazLogger.Destroy;
|
||||
@ -1422,13 +1425,15 @@ end;
|
||||
function TLazLogger.RegisterLogGroup(const AConfigName: String;
|
||||
ADefaulEnabled: Boolean): PLazLoggerLogGroup;
|
||||
begin
|
||||
if FLogAllDefaultDisabled then
|
||||
ADefaulEnabled := False;
|
||||
Result := LogGroupList.Find(AConfigName);
|
||||
if Result <> nil then begin
|
||||
if not(lgfAddedByParamParser in Result^.Flags) then
|
||||
raise Exception.Create('Duplicate LogGroup ' + AConfigName);
|
||||
Result^.Flags := Result^.Flags - [lgfAddedByParamParser];
|
||||
if ADefaulEnabled then
|
||||
if ADefaulEnabled and not(lgfAddedByParamParser in Result^.Flags) then
|
||||
Result^.Enabled := True;
|
||||
Result^.Flags := Result^.Flags - [lgfAddedByParamParser];
|
||||
end
|
||||
else
|
||||
Result := LogGroupList.Add(AConfigName, ADefaulEnabled);
|
||||
|
@ -8,6 +8,7 @@ uses
|
||||
Classes, SysUtils, fpcunit, testutils, testregistry, LazLogger;
|
||||
|
||||
type
|
||||
TStringArray = array of string;
|
||||
|
||||
{ TTestLazLogger }
|
||||
|
||||
@ -16,13 +17,22 @@ type
|
||||
FTheLogger: TLazLogger;
|
||||
FOnDbgOutCount, FOnDebugLnCount: Integer;
|
||||
FOnDbgOutText, FOnDebugLnText: string;
|
||||
FArgcMem, FArgVSaved: PPChar;
|
||||
FArgCSaved: Integer;
|
||||
FArgs: TStringArray;
|
||||
|
||||
procedure TestOnDbgOut(Sender: TObject; S: string; var Handled: Boolean);
|
||||
procedure TestOnDebugln(Sender: TObject; S: string; var Handled: Boolean);
|
||||
procedure InitLogger;
|
||||
procedure AssertDbgOut(Name: string; ExpCount: integer; ExpText: String);
|
||||
procedure AssertDebugLn(Name: string; ExpCount: integer; ExpText: String);
|
||||
procedure SaveArgs;
|
||||
procedure RestoreArgs;
|
||||
procedure SetArgv(List: TStringArray);
|
||||
procedure SetArgs(List: array of string);
|
||||
published
|
||||
procedure TestEvent;
|
||||
procedure TestFilter;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -47,6 +57,8 @@ begin
|
||||
FTheLogger := TLazLogger.Create;
|
||||
FTheLogger.OnDebugLn := @TestOnDebugln;
|
||||
FTheLogger.OnDbgOut := @TestOnDbgOut;
|
||||
FOnDebugLnCount := 0;
|
||||
FOnDebugLnText := '';
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.AssertDbgOut(Name: string; ExpCount: integer; ExpText: String);
|
||||
@ -65,6 +77,49 @@ begin
|
||||
FOnDebugLnText := '';
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.SaveArgs;
|
||||
begin
|
||||
FArgVSaved := argv;
|
||||
FArgCSaved := argc;
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.RestoreArgs;
|
||||
begin
|
||||
argv := FArgVSaved;
|
||||
argc := FArgCSaved;
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.SetArgv(List: TStringArray);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if List = nil then begin
|
||||
argc := 0;
|
||||
argv := nil;
|
||||
ReAllocMem(FArgcMem, 0);
|
||||
exit;
|
||||
end;
|
||||
argc := Length(List);
|
||||
ReAllocMem(FArgcMem, argc * SizeOf(PChar));
|
||||
argv := FArgcMem;
|
||||
for i := 0 to argc - 1 do
|
||||
FArgcMem[i] := PChar(List[i]);
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.SetArgs(List: array of string);
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if Length(List) = 0 then begin
|
||||
SetArgv(nil);
|
||||
Exit;
|
||||
end;
|
||||
SetLength(FArgs, Length(List));
|
||||
for i := 0 to Length(List) - 1 do
|
||||
FArgs[i] := List[i];
|
||||
SetArgv(FArgs);
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.TestEvent;
|
||||
begin
|
||||
InitLogger;
|
||||
@ -122,6 +177,255 @@ begin
|
||||
FreeAndNil(FTheLogger);
|
||||
end;
|
||||
|
||||
procedure TTestLazLogger.TestFilter;
|
||||
procedure FilterInit(List: array of string);
|
||||
begin
|
||||
SetArgs(List);
|
||||
InitLogger;
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
end;
|
||||
|
||||
procedure FilterInitNoParam(List: array of string);
|
||||
begin
|
||||
SetArgs(List);
|
||||
InitLogger;
|
||||
end;
|
||||
|
||||
Procedure TestNoGroup(Name: String);
|
||||
begin
|
||||
FTheLogger.DebugLn('NoGroup'+Name);
|
||||
AssertDebugLn(Name + 'debugln NoGroup'+Name, 1, 'NoGroup'+Name+LineEnding);
|
||||
|
||||
FTheLogger.DebugLn('NoGroupNil'+Name);
|
||||
AssertDebugLn(Name + 'debugln [nil] NoGroupNil'+Name, 1, 'NoGroupNil'+Name+LineEnding);
|
||||
end;
|
||||
|
||||
Procedure TestGroup(Name: String; g: PLazLoggerLogGroup; ExpLog: Boolean);
|
||||
begin
|
||||
FTheLogger.DebugLn(g, 'Group'+Name);
|
||||
if ExpLog then
|
||||
AssertDebugLn(Name + 'debugln ['+g^.ConfigName+'] Group'+Name, 1, 'Group'+Name+LineEnding)
|
||||
else
|
||||
AssertDebugLn(Name + 'debugln ['+g^.ConfigName+'] Group'+Name, 0, '');
|
||||
|
||||
FTheLogger.DebugLn(g, ['Group2',Name]);
|
||||
if ExpLog then
|
||||
AssertDebugLn(Name + 'debugln ['+g^.ConfigName+'] [Group2,'+Name+']', 1, 'Group2'+Name+LineEnding)
|
||||
else
|
||||
AssertDebugLn(Name + 'debugln ['+g^.ConfigName+'] [Group2,'+Name+']', 0, '');
|
||||
end;
|
||||
|
||||
var
|
||||
g1: PLazLoggerLogGroup;
|
||||
s, a: String;
|
||||
begin
|
||||
SaveArgs;
|
||||
try
|
||||
{%region g1 not default enabled}
|
||||
s := 'g1(false)';
|
||||
a := '';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
g1^.Enabled := True;
|
||||
TestGroup (Format('%s -- %s', [s+'->enabled', a]), g1, True);
|
||||
|
||||
a := '--dbe=';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
g1^.Enabled := False;
|
||||
TestGroup (Format('%s -- %s', [s+'->disabled', a]), g1, False);
|
||||
|
||||
a := '--dbe=+g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g2';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g2,g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=g1,g2';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-g2,g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=- --dbe=+g1';
|
||||
FilterInit(['exe', '--debug-log=a', '--dbe=-', '--dbe=+g1']);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
{%endregion g1 not default enabled}
|
||||
|
||||
{%region g1 default enabled}
|
||||
s := 'g1(true)';
|
||||
a := '';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=+g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=-g2';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=g2,-g1';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=-';
|
||||
FilterInit(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1', True);
|
||||
TestNoGroup(Format('%s -- %s', [s, a]));
|
||||
TestGroup (Format('%s -- %s', [s, a]), g1, False);
|
||||
{%endregion g1 default enabled}
|
||||
|
||||
|
||||
{%region g1 not default enabled / param after}
|
||||
s := 'g1(false)';
|
||||
a := '';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=+g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g2';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=g2,g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=g1,g2';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-g2,g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
|
||||
a := '--dbe=-';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', a]);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, False);
|
||||
|
||||
a := '--dbe=- --dbe=+g1';
|
||||
FilterInitNoParam(['exe', '--debug-log=a', '--dbe=-', '--dbe=+g1']);
|
||||
g1 := FTheLogger.RegisterLogGroup('g1');
|
||||
FTheLogger.ParamForEnabledLogGroups := '--dbe=';
|
||||
TestNoGroup(Format('Param late: %s -- %s', [s, a]));
|
||||
TestGroup (Format('Param late: %s -- %s', [s, a]), g1, True);
|
||||
{%endregion g1 not default enabled}
|
||||
finally
|
||||
SetArgv(nil);
|
||||
RestoreArgs;
|
||||
FreeAndNil(FTheLogger);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
initialization
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user