[PATCH v2 10/15] KVM: selftests: Add flag to suppress all output from Selftest KVM Runner

Vipin Sharma vipinsh at google.com
Fri Jun 6 16:56:14 PDT 2025


Add a command line flag, --quiet, to suppress all of the output from
runner to terminal.

Signed-off-by: Vipin Sharma <vipinsh at google.com>
---
 .../testing/selftests/kvm/runner/__main__.py  |  8 ++++++-
 .../selftests/kvm/runner/test_runner.py       | 21 ++++++++++++-------
 2 files changed, 20 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/kvm/runner/__main__.py b/tools/testing/selftests/kvm/runner/__main__.py
index 2dcac1f4d1c4..c02035a62873 100644
--- a/tools/testing/selftests/kvm/runner/__main__.py
+++ b/tools/testing/selftests/kvm/runner/__main__.py
@@ -129,6 +129,12 @@ def cli():
                         default=False,
                         help="Print only the summary status line.")
 
+    parser.add_argument("-q",
+                        "--quiet",
+                        action="store_true",
+                        default=False,
+                        help="Suppress all of the output to terminal")
+
     return parser.parse_args()
 
 
@@ -136,7 +142,7 @@ def level_filters(args):
     # Levels added here will be printed by logger.
     levels = set()
 
-    if args.sticky_summary_only:
+    if args.sticky_summary_only or args.quiet:
         return levels
 
     if args.print_passed or args.print_passed_status or args.print_status:
diff --git a/tools/testing/selftests/kvm/runner/test_runner.py b/tools/testing/selftests/kvm/runner/test_runner.py
index e0da30d216a2..e7730880907d 100644
--- a/tools/testing/selftests/kvm/runner/test_runner.py
+++ b/tools/testing/selftests/kvm/runner/test_runner.py
@@ -18,6 +18,7 @@ class TestRunner:
         self.status = {x: 0 for x in SelftestStatus}
         self.output_dir = args.output
         self.jobs = args.jobs
+        self.quiet = args.quiet
         self.print_status = args.print_status
         self.print_stds = {
             SelftestStatus.PASSED: args.print_passed,
@@ -35,17 +36,21 @@ class TestRunner:
         test.run()
         return test
 
+    def _print(self, text, end="\n"):
+        if not self.quiet:
+            print(text, end=end)
+
     def _sticky_update(self):
-        print(f"\r\033[1mTotal: {self.tests_ran}/{len(self.tests)}" \
-                f"\033[32;1m Passed: {self.status[SelftestStatus.PASSED]}" \
-                f"\033[31;1m Failed: {self.status[SelftestStatus.FAILED]}" \
-                f"\033[33;1m Skipped: {self.status[SelftestStatus.SKIPPED]}"\
-                f"\033[91;1m Timed Out: {self.status[SelftestStatus.TIMED_OUT]}"\
-                f"\033[34;1m No Run: {self.status[SelftestStatus.NO_RUN]}\033[0m", end="\r")
+        self._print(f"\r\033[1mTotal: {self.tests_ran}/{len(self.tests)}"
+                    f"\033[32;1m Passed: {self.status[SelftestStatus.PASSED]}"
+                    f"\033[31;1m Failed: {self.status[SelftestStatus.FAILED]}"
+                    f"\033[33;1m Skipped: {self.status[SelftestStatus.SKIPPED]}"
+                    f"\033[91;1m Timed Out: {self.status[SelftestStatus.TIMED_OUT]}"
+                    f"\033[34;1m No Run: {self.status[SelftestStatus.NO_RUN]}\033[0m", end="\r")
 
     def _log_result(self, test_result):
         # Clear the status line
-        print("\033[2K", end="\r")
+        self._print("\033[2K", end="\r")
         logger.log(test_result.status,
                    f"[{test_result.status}] {test_result.test_path}")
         if (self.output_dir is None and self.print_status is False
@@ -79,5 +84,5 @@ class TestRunner:
                                                SelftestStatus.NO_RUN,
                                                SelftestStatus.SKIPPED]):
                     ret = 1
-        print("\n")
+        self._print("")
         return ret
-- 
2.50.0.rc0.604.gd4ff7b7c86-goog




More information about the linux-arm-kernel mailing list