about summary refs log tree commit diff
path: root/nixos/lib/test-driver
diff options
context:
space:
mode:
authorJanne Heß <janne@hess.ooo>2021-10-23 18:46:51 +0200
committerJanne Heß <janne@hess.ooo>2021-10-24 15:11:46 +0200
commit1ed5606d8a65c45f9f24229202be6c60c019c01f (patch)
treedfb55d7b9b14ceb650a8acff07d57cfb392c70da /nixos/lib/test-driver
parent663a0f328ff5388c98ebe58715b72cf4b0f546ac (diff)
downloadnixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar.gz
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar.bz2
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar.lz
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar.xz
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.tar.zst
nixlib-1ed5606d8a65c45f9f24229202be6c60c019c01f.zip
nixos/test-runner: Fix thread cleanup
Diffstat (limited to 'nixos/lib/test-driver')
-rwxr-xr-xnixos/lib/test-driver/test-driver.py32
1 files changed, 16 insertions, 16 deletions
diff --git a/nixos/lib/test-driver/test-driver.py b/nixos/lib/test-driver/test-driver.py
index 3ee8b3227c61..e4d93418a22f 100755
--- a/nixos/lib/test-driver/test-driver.py
+++ b/nixos/lib/test-driver/test-driver.py
@@ -8,7 +8,6 @@ import queue
 import io
 import threading
 import argparse
-import atexit
 import base64
 import codecs
 import os
@@ -1128,11 +1127,13 @@ class Driver:
             for cmd in cmd(start_scripts)
         ]
 
-        @atexit.register
-        def clean_up() -> None:
-            with rootlog.nested("clean up"):
-                for machine in self.machines:
-                    machine.release()
+    def __enter__(self) -> "Driver":
+        return self
+
+    def __exit__(self, *_: Any) -> None:
+        with rootlog.nested("cleanup"):
+            for machine in self.machines:
+                machine.release()
 
     def subtest(self, name: str) -> Iterator[None]:
         """Group logs under a given test name"""
@@ -1307,14 +1308,13 @@ if __name__ == "__main__":
     if not args.keep_vm_state:
         rootlog.info("Machine state will be reset. To keep it, pass --keep-vm-state")
 
-    driver = Driver(
+    with Driver(
         args.start_scripts, args.vlans, args.testscript.read_text(), args.keep_vm_state
-    )
-
-    if args.interactive:
-        ptpython.repl.embed(driver.test_symbols(), {})
-    else:
-        tic = time.time()
-        driver.run_tests()
-        toc = time.time()
-        rootlog.info(f"test script finished in {(toc-tic):.2f}s")
+    ) as driver:
+        if args.interactive:
+            ptpython.repl.embed(driver.test_symbols(), {})
+        else:
+            tic = time.time()
+            driver.run_tests()
+            toc = time.time()
+            rootlog.info(f"test script finished in {(toc-tic):.2f}s")