mirror of https://github.com/cirruslabs/tart.git
33 lines
991 B
Python
33 lines
991 B
Python
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])
|