This will make it possible to jump to the first line of a test unit that contains failures.
Signed-off-by: Francois Gouget fgouget@codeweavers.com ---
This also makes group names fit perfectly into the future log errors cache format ;-)
testbot/lib/WineTestBot/LogUtils.pm | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/testbot/lib/WineTestBot/LogUtils.pm b/testbot/lib/WineTestBot/LogUtils.pm index 75d283381c..4d0d99bfab 100644 --- a/testbot/lib/WineTestBot/LogUtils.pm +++ b/testbot/lib/WineTestBot/LogUtils.pm @@ -709,16 +709,20 @@ sub _DumpErrors($$) } }
-sub _AddLogGroup($$) +sub _AddLogGroup($$;$) { - my ($LogInfo, $GroupName) = @_; + my ($LogInfo, $GroupName, $LineNo) = @_;
# In theory the error group names are all unique. But, just in case, make # sure we don't overwrite $LogInfo->{ErrGroups}->{$GroupName}. if (!$LogInfo->{ErrGroups}->{$GroupName}) { push @{$LogInfo->{ErrGroupNames}}, $GroupName; - $LogInfo->{ErrGroups}->{$GroupName} = { LineNos => [], Errors => [] }; + $LogInfo->{ErrGroups}->{$GroupName} = { + LineNo => $LineNo || 0, + LineNos => [], + Errors => [] + }; } return $LogInfo->{ErrGroups}->{$GroupName}; } @@ -758,6 +762,10 @@ A hashtable indexed by the error group name. Each entry contains:
=over
+=item LineNo +The line number of the start of this error group. Note that this is normally +different from the line of the first error in that group. + =item Errors An array containing the error messages.
@@ -798,7 +806,7 @@ sub GetLogErrors($) { $LogInfo->{ErrCount} ||= 0; my $CurrentModule = ""; - my $CurrentGroup; + my ($CurrentGroup, $GroupLineNo); my $LineNo = 0; foreach my $Line (<$LogFile>) { @@ -807,6 +815,7 @@ sub GetLogErrors($) if ($IsReport and $Line =~ /^([_.a-z0-9-]+):[_a-z0-9]* start /) { $CurrentModule = $1; + $GroupLineNo = $LineNo; $CurrentGroup = undef; next; } @@ -820,7 +829,7 @@ sub GetLogErrors($) } if (!$CurrentGroup) { - $CurrentGroup = _AddLogGroup($LogInfo, $CurrentModule); + $CurrentGroup = _AddLogGroup($LogInfo, $CurrentModule, $GroupLineNo || $LineNo); } _AddLogError($LogInfo, $CurrentGroup, $Line, $LineNo); } @@ -848,7 +857,7 @@ sub GetLogErrors($) # Note: $GroupName must not depend on the previous content as this # would break diffs. my $GroupName = $IsReport ? "Report errors" : "Task errors"; - $CurrentGroup = _AddLogGroup($LogInfo, $GroupName); + $CurrentGroup = _AddLogGroup($LogInfo, $GroupName, $LineNo); } _AddLogError($LogInfo, $CurrentGroup, $Line, $LineNo); }