about summary refs log tree commit diff
path: root/nixos/lib
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2020-01-17 13:50:49 +0100
committerGitHub <noreply@github.com>2020-01-17 13:50:49 +0100
commited0b5b613360fc2634b7da2a055ef428789874b3 (patch)
tree9604ffac7804972fe42f0b112352d5fc618ef124 /nixos/lib
parent0866527ec13bbc6790c45adc61e25293f8fa609c (diff)
parent61c61f80e58b24c969f0ea1d0d069e70ddc37be3 (diff)
downloadnixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar.gz
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar.bz2
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar.lz
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar.xz
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.tar.zst
nixlib-ed0b5b613360fc2634b7da2a055ef428789874b3.zip
Merge pull request #77662 from marijanp/verbose-python-test-driver
nixos/test: added verbose output for failed tests
Diffstat (limited to 'nixos/lib')
-rw-r--r--nixos/lib/test-driver/test-driver.py18
1 files changed, 13 insertions, 5 deletions
diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py
index c2cbedc5e3e2..7ac31e18e9d7 100644
--- a/nixos/lib/test-driver/test-driver.py
+++ b/nixos/lib/test-driver/test-driver.py
@@ -84,7 +84,7 @@ CHAR_TO_KEY = {
 
 # Forward references
 nr_tests: int
-nr_succeeded: int
+failed_tests: list
 log: "Logger"
 machines: "List[Machine]"
 
@@ -842,23 +842,31 @@ def run_tests() -> None:
             machine.execute("sync")
 
     if nr_tests != 0:
+        nr_succeeded = nr_tests - len(failed_tests)
         eprint("{} out of {} tests succeeded".format(nr_succeeded, nr_tests))
-        if nr_tests > nr_succeeded:
+        if len(failed_tests) > 0:
+            eprint(
+                "The following tests have failed:\n - {}".format(
+                    "\n - ".join(failed_tests)
+                )
+            )
             sys.exit(1)
 
 
 @contextmanager
 def subtest(name: str) -> Iterator[None]:
     global nr_tests
-    global nr_succeeded
+    global failed_tests
 
     with log.nested(name):
         nr_tests += 1
         try:
             yield
-            nr_succeeded += 1
             return True
         except Exception as e:
+            failed_tests.append(
+                'Test "{}" failed with error: "{}"'.format(name, str(e))
+            )
             log.log("error: {}".format(str(e)))
 
     return False
@@ -880,7 +888,7 @@ if __name__ == "__main__":
     exec("\n".join(machine_eval))
 
     nr_tests = 0
-    nr_succeeded = 0
+    failed_tests = []
 
     @atexit.register
     def clean_up() -> None: