import uuid import pytest from paramiko.client import SSHClient, AutoAddPolicy @pytest.mark.parametrize("run_opts", [[], ["--no-graphics"]]) def test_run(tart, run_opts): vm_name = f"integration-test-run-{uuid.uuid4()}" # Instantiate a VM with admin:admin SSH access tart.run(["clone", "ghcr.io/cirruslabs/macos-tahoe-base:latest", vm_name]) # Run the VM asynchronously tart_run_process = tart.run_async(["run", vm_name] + run_opts) # Obtain the VM's IP stdout, _ = tart.run(["ip", vm_name, "--wait", "120"]) ip = stdout.strip() # Connect to the VM over SSH and shutdown it client = SSHClient() client.set_missing_host_key_policy(AutoAddPolicy) client.connect(ip, username="admin", password="admin") client.exec_command("sudo shutdown -h now") # Wait for the "tart run" to finish successfully tart_run_process.wait() assert tart_run_process.returncode == 0 # Delete the VM _, _ = tart.run(["delete", vm_name])