summary refs log tree commit diff
path: root/nixos/lib
diff options
context:
space:
mode:
authorMarijan Petričević <marijan.petricevic94@gmail.com>2022-01-25 01:15:16 +0100
committerMarijan Petričević <marijan.petricevic94@gmail.com>2022-01-25 01:18:52 +0100
commit7765670c8a80695ae1b7c4e4d3ec6389ba533f1f (patch)
treee9cf169a65cf986c384da5ba4763fc02f4045f20 /nixos/lib
parentf9b5f9dba76f15ffc92f8e320df5a520244d263c (diff)
downloadnixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar.gz
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar.bz2
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar.lz
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar.xz
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.tar.zst
nixpkgs-7765670c8a80695ae1b7c4e4d3ec6389ba533f1f.zip
make output_directory an optional parameter
Diffstat (limited to 'nixos/lib')
-rwxr-xr-xnixos/lib/test-driver/test_driver/__init__.py31
-rw-r--r--nixos/lib/test-driver/test_driver/driver.py3
-rw-r--r--nixos/lib/testing-python.nix2
3 files changed, 19 insertions, 17 deletions
diff --git a/nixos/lib/test-driver/test_driver/__init__.py b/nixos/lib/test-driver/test_driver/__init__.py
index c7f2f9f3ec0..3ee140894a7 100755
--- a/nixos/lib/test-driver/test_driver/__init__.py
+++ b/nixos/lib/test-driver/test_driver/__init__.py
@@ -33,16 +33,18 @@ class EnvDefault(argparse.Action):
         setattr(namespace, self.dest, values)
 
 
-class WriteableDir(argparse.Action):  # type: ignore
-    def __call__(self, parser, namespace, values, option_string=None):  # type: ignore
-        if not values.is_dir():
-            raise argparse.ArgumentTypeError("{0} is not a directory".format(values))
-        if os.access(values, os.W_OK):
-            setattr(namespace, self.dest, values)
-        else:
-            raise argparse.ArgumentTypeError(
-                "{0} is not a writeable directory".format(values)
-            )
+def raise_if_not_writeable_dir(path: Path) -> None:
+    """Raises an ArgumentTypeError if the given path isn't a writeable directory
+    Note: We want to fail as early as possible if a directory isn't writeable,
+    since an executed nixos-test could fail (very late) because of the test-driver
+    writing in a directory without proper permissions.
+    """
+    if not path.is_dir():
+        raise argparse.ArgumentTypeError("{0} is not a directory".format(path))
+    if not os.access(path, os.W_OK):
+        raise argparse.ArgumentTypeError(
+            "{0} is not a writeable directory".format(path)
+        )
 
 
 def main() -> None:
@@ -76,10 +78,11 @@ def main() -> None:
         help="vlans to span by the driver",
     )
     arg_parser.add_argument(
-        "output_directory",
-        action=WriteableDir,
+        "-o",
+        "--output_directory",
         help="""The path to the directory where outputs copied from the VM will be placed.
                 By e.g. Machine.copy_from_vm or Machine.screenshot""",
+        default=Path.cwd(),
         type=Path,
     )
     arg_parser.add_argument(
@@ -92,6 +95,8 @@ def main() -> None:
 
     args = arg_parser.parse_args()
 
+    raise_if_not_writeable_dir(args.output_directory)
+
     if not args.keep_vm_state:
         rootlog.info("Machine state will be reset. To keep it, pass --keep-vm-state")
 
@@ -99,7 +104,7 @@ def main() -> None:
         args.start_scripts,
         args.vlans,
         args.testscript.read_text(),
-        args.output_directory,
+        args.output_directory.resolve(),
         args.keep_vm_state,
     ) as driver:
         if args.interactive:
diff --git a/nixos/lib/test-driver/test_driver/driver.py b/nixos/lib/test-driver/test_driver/driver.py
index d4f799a1cbf..656e04143c1 100644
--- a/nixos/lib/test-driver/test_driver/driver.py
+++ b/nixos/lib/test-driver/test_driver/driver.py
@@ -48,11 +48,8 @@ class Driver:
                 keep_vm_state=keep_vm_state,
                 name=cmd.machine_name,
                 tmp_dir=tmp_dir,
-<<<<<<< HEAD
                 callbacks=[self.check_polling_conditions],
-=======
                 out_dir=self.out_dir,
->>>>>>> 68b2e235272 (nixos/test-driver: use an argument instead of the out env-var)
             )
             for cmd in cmd(start_scripts)
         ]
diff --git a/nixos/lib/testing-python.nix b/nixos/lib/testing-python.nix
index 68c8b0eeba0..a6704046813 100644
--- a/nixos/lib/testing-python.nix
+++ b/nixos/lib/testing-python.nix
@@ -30,7 +30,7 @@ rec {
           # effectively mute the XMLLogger
           export LOGFILE=/dev/null
 
-          ${driver}/bin/nixos-test-driver $out
+          ${driver}/bin/nixos-test-driver
         '';
 
       passthru = driver.passthru // {