summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2013-02-18 09:35:49 -0500
committerSteven Rostedt <rostedt@goodmis.org>2013-02-18 09:35:49 -0500
commit7328735cbf68b7cd4d7ef16e172013743cdc2bc4 (patch)
tree66a6ff7a8d90f809d81c5f77e8219dc40e5c50a1 /tools
parent4c0b67a27d96e01a4b4ede2fda57da9f7c50af21 (diff)
downloadlinux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.tar.gz
linux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.tar.bz2
linux-7328735cbf68b7cd4d7ef16e172013743cdc2bc4.zip
ktest: Remove indexes from warnings check
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>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/testing/ktest/ktest.pl34
1 files changed, 26 insertions, 8 deletions
diff --git a/tools/testing/ktest/ktest.pl b/tools/testing/ktest/ktest.pl
index f3bb5da3193b..4e67d52eb3a2 100755
--- a/tools/testing/ktest/ktest.pl
+++ b/tools/testing/ktest/ktest.pl
@@ -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.
#
@@ -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);
@@ -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;