These two fields make it easier to detect and handle cases where there was no usable reference log for the new error detection. --- testbot/bin/WineSendLog.pl | 2 +- testbot/lib/WineTestBot/LogUtils.pm | 26 ++++++++++++++++++-------- 2 files changed, 19 insertions(+), 9 deletions(-)
diff --git a/testbot/bin/WineSendLog.pl b/testbot/bin/WineSendLog.pl index 89e90c40f..b31d1f5d3 100755 --- a/testbot/bin/WineSendLog.pl +++ b/testbot/bin/WineSendLog.pl @@ -294,7 +294,7 @@ EOF my $AllNew; my $RefReportPath = $StepTask->GetFullFileName($StepTask->GetRefReportName($LogName)); TagNewErrors($RefReportPath, $LogInfo); - if (!defined $LogInfo->{NewCount}) + if ($LogInfo->{NoRef}) { # Test reports should have reference WineTest results and if not # reporting the errors as new would cause false positives. diff --git a/testbot/lib/WineTestBot/LogUtils.pm b/testbot/lib/WineTestBot/LogUtils.pm index 3714941fc..dd98024bd 100644 --- a/testbot/lib/WineTestBot/LogUtils.pm +++ b/testbot/lib/WineTestBot/LogUtils.pm @@ -902,14 +902,22 @@ Compares the specified errors to the reference report to identify new errors. The $LogInfo structure is augmented with the following fields: =over
+=item BadRef +Contains an error message if the reference log could not be read. + +=item NoRef +True if there was no usable reference log. This could either mean that there +was no reference log or that the reference log could not be read in which case +BadRef would be set. + =item NewCount -The total number of new errors or undef if the reference log could not be read. +The total number of new errors if any.
=item ErrGroups =over
=item NewCount -A count of the new errors. +A count of the group's new errors if any.
=item IsNew An array where entries are set to true to identify new errors. @@ -924,16 +932,18 @@ sub TagNewErrors($$) { my ($RefLogPath, $LogInfo) = @_;
- if (!$LogInfo->{ErrCount}) + return if (!$LogInfo->{ErrCount}); + + my $RefInfo = GetLogErrors($RefLogPath); + if ($RefInfo->{BadLog}) { - $LogInfo->{NewCount} = 0; + # Save the BadLog error but do not tag the errors as new: this is up to + # the caller. + $LogInfo->{BadRef} = $RefInfo->{BadLog} if (-e $RefLogPath); + $LogInfo->{NoRef} = 1; return; }
- my $RefInfo = GetLogErrors($RefLogPath); - # Don't tag the errors as new if there is no reference log - return if (!defined $RefInfo->{ErrCount}); - $LogInfo->{NewCount} = 0; foreach my $GroupName (@{$LogInfo->{ErrGroupNames}}) {