Commit bdacdc46 authored by K900's avatar K900
Browse files

nixos/lib/test-driver: provide legacy path for create_machine({"startCommand": "..."})

parent 423098c2
Loading
Loading
Loading
Loading
+37 −1
Original line number Diff line number Diff line
@@ -12,6 +12,8 @@ from test_driver.machine import Machine, NixStartScript, retry
from test_driver.polling_condition import PollingCondition
from test_driver.vlan import VLan

SENTINEL = object()


def get_tmp_dir() -> Path:
    """Returns a temporary directory that is defined by TMPDIR, TEMP, TMP or CWD
@@ -189,11 +191,45 @@ class Driver:

    def create_machine(
        self,
        start_command: str,
        start_command: str | dict,
        *,
        name: Optional[str] = None,
        keep_vm_state: bool = False,
    ) -> Machine:
        # Legacy args handling
        # FIXME: remove after 24.05
        if isinstance(start_command, dict):
            if name is not None or keep_vm_state:
                raise TypeError(
                    "Dictionary passed to create_machine must be the only argument"
                )

            args = start_command
            start_command = args.pop("startCommand", SENTINEL)

            if start_command is SENTINEL:
                raise TypeError(
                    "Dictionary passed to create_machine must contain startCommand"
                )

            if not isinstance(start_command, str):
                raise TypeError(
                    f"startCommand must be a string, got: {repr(start_command)}"
                )

            name = args.pop("name", None)
            keep_vm_state = args.pop("keep_vm_state", False)

            if args:
                raise TypeError(
                    f"Unsupported arguments passed to create_machine: {args}"
                )

            rootlog.warning(
                "Using create_machine with a single dictionary argument is deprecated, and will be removed in NixOS 24.11"
            )
        # End legacy args handling

        tmp_dir = get_tmp_dir()

        cmd = NixStartScript(start_command)
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ class PollingConditionProtocol(Protocol):
class CreateMachineProtocol(Protocol):
    def __call__(
        self,
        start_command: str,
        start_command: str | dict,
        *,
        name: Optional[str] = None,
        keep_vm_state: bool = False,