Skip to content

Commit

Permalink
ktest: Remove indexes from warnings check
Browse files Browse the repository at this point in the history
The index of a line where a warning is tested can be returned
differently on different versions of gcc (or same version compiled
differently). That is, a tab + space can give different results. This
causes the warning check to produce a false positive. Removing the
index from the check fixes this issue.

Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
  • Loading branch information
Steven Rostedt (Red Hat) committed Feb 18, 2013
1 parent 4c0b67a commit 7328735
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions tools/testing/ktest/ktest.pl
Original file line number Diff line number Diff line change
Expand Up @@ -1945,6 +1945,27 @@ sub start_monitor_and_boot {
my $check_build_re = ".*:.*(warning|error|Error):.*";
my $utf8_quote = "\\x{e2}\\x{80}(\\x{98}|\\x{99})";

sub process_warning_line {
my ($line) = @_;

chomp $line;

# for distcc heterogeneous systems, some compilers
# do things differently causing warning lines
# to be slightly different. This makes an attempt
# to fixe those issues.

# chop off the index into the line
# using distcc, some compilers give different indexes
# depending on white space
$line =~ s/^(\s*\S+:\d+:)\d+/$1/;

# Some compilers use UTF-8 extended for quotes and some don't.
$line =~ s/$utf8_quote/'/g;

return $line;
}

# Read buildlog and check against warnings file for any
# new warnings.
#
Expand All @@ -1965,8 +1986,9 @@ sub check_buildlog {

while (<IN>) {
if (/$check_build_re/) {
chomp;
$warnings_list{$_} = 1;
my $warning = process_warning_line $_;

$warnings_list{$warning} = 1;
}
}
close(IN);
Expand All @@ -1978,13 +2000,9 @@ sub check_buildlog {
open(IN, $buildlog) or dodie "Can't open $buildlog";
while (<IN>) {
if (/$check_build_re/) {
my $warning = process_warning_line $_;

# Some compilers use UTF-8 extended for quotes
# for distcc heterogeneous systems, this causes issues
s/$utf8_quote/'/g;

chomp;
if (!defined $warnings_list{$_}) {
if (!defined $warnings_list{$warning}) {
fail "New warning found (not in $warnings_file)\n$_\n";
$no_reboot = $save_no_reboot;
return 0;
Expand Down

0 comments on commit 7328735

Please sign in to comment.