ktest.pl: Always warn on build warnings
authorSteven Rostedt <rostedt@goodmis.org>
Mon, 19 Aug 2024 21:20:28 +0000 (17:20 -0400)
committerSteven Rostedt <rostedt@goodmis.org>
Wed, 4 Sep 2024 19:05:48 +0000 (15:05 -0400)
If a warning happens at build, give a warning at the end:

  Build time:   1 minute 40 seconds
  Install time: 17 seconds
  Reboot time:  25 seconds

  *** WARNING found in build: 1 ***

  *******************************************
  *******************************************
  KTEST RESULT: TEST 1 SUCCESS!!!!   **
  *******************************************
  *******************************************

This way, even if the test isn't made to fail on warnings during the
build, a message is still displayed that warnings were found.

Link: https://lore.kernel.org/<20240819172028.3a7fae09@gandalf.local.home>
Acked-by: John 'Warthog9' Hawley (Tenstorrent) <warthog9@eaglescrag.net>
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
tools/testing/ktest/ktest.pl

index eb31cd9..c82b8d5 100755 (executable)
@@ -222,6 +222,8 @@ my $install_time;
 my $reboot_time;
 my $test_time;
 
+my $warning_found = 0;
+
 my $pwd;
 my $dirname = $FindBin::Bin;
 
@@ -729,11 +731,18 @@ sub print_times {
        show_time($test_time);
        doprint "\n";
     }
+    if ($warning_found) {
+       doprint "\n*** WARNING";
+       doprint "S" if ($warning_found > 1);
+       doprint " found in build: $warning_found ***\n\n";
+    }
+
     # reset for iterations like bisect
     $build_time = 0;
     $install_time = 0;
     $reboot_time = 0;
     $test_time = 0;
+    $warning_found = 0;
 }
 
 sub get_mandatory_configs {
@@ -2460,8 +2469,6 @@ sub process_warning_line {
 # Returns 1 if OK
 #         0 otherwise
 sub check_buildlog {
-    return 1 if (!defined $warnings_file);
-
     my %warnings_list;
 
     # Failed builds should not reboot the target
@@ -2482,18 +2489,21 @@ sub check_buildlog {
        close(IN);
     }
 
-    # If warnings file didn't exist, and WARNINGS_FILE exist,
-    # then we fail on any warning!
-
     open(IN, $buildlog) or dodie "Can't open $buildlog";
     while (<IN>) {
        if (/$check_build_re/) {
            my $warning = process_warning_line $_;
 
            if (!defined $warnings_list{$warning}) {
-               fail "New warning found (not in $warnings_file)\n$_\n";
-               $no_reboot = $save_no_reboot;
-               return 0;
+               $warning_found++;
+
+               # If warnings file didn't exist, and WARNINGS_FILE exist,
+               # then we fail on any warning!
+               if (defined $warnings_file) {
+                   fail "New warning found (not in $warnings_file)\n$_\n";
+                   $no_reboot = $save_no_reboot;
+                   return 0;
+               }
            }
        }
     }