test: add pytest coverage for plan/burn cli
This commit is contained in:
parent
910d01d22a
commit
f08546ebd1
75
tests/test_plan_cli.py
Normal file
75
tests/test_plan_cli.py
Normal file
@ -0,0 +1,75 @@
|
||||
import json
|
||||
import subprocess
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def write_inv(tmpdir, image_path, checksum):
|
||||
inv = {
|
||||
"classes": [
|
||||
{
|
||||
"name": "test-class",
|
||||
"arch": "arm64",
|
||||
"os": "testos",
|
||||
"image": f"file://{image_path}",
|
||||
"checksum": checksum,
|
||||
"default_labels": {"role": "worker"},
|
||||
}
|
||||
],
|
||||
"nodes": [
|
||||
{
|
||||
"name": "node-a",
|
||||
"class": "test-class",
|
||||
"hostname": "node-a",
|
||||
"ip": "10.0.0.10",
|
||||
"k3s_role": "agent",
|
||||
}
|
||||
],
|
||||
}
|
||||
inv_path = Path(tmpdir) / "inv.yaml"
|
||||
inv_path.write_text(json.dumps(inv))
|
||||
return inv_path
|
||||
|
||||
|
||||
def test_plan_output_contains_actions(tmp_path):
|
||||
dummy = tmp_path / "dummy.img"
|
||||
dummy.write_bytes(b"dummy")
|
||||
import hashlib
|
||||
|
||||
checksum = "sha256:" + hashlib.sha256(dummy.read_bytes()).hexdigest()
|
||||
inv_path = write_inv(tmp_path, dummy, checksum)
|
||||
cache_dir = tmp_path / "cache"
|
||||
cmd = ["go", "run", "./cmd/metis", "plan", "--inventory", str(inv_path), "--node", "node-a", "--device", "/dev/sdz", "--cache", str(cache_dir)]
|
||||
out = subprocess.check_output(cmd, cwd=ROOT)
|
||||
plan = json.loads(out)
|
||||
assert plan["node"] == "node-a"
|
||||
assert any(a["type"] == "fetch" for a in plan["actions"])
|
||||
|
||||
|
||||
def test_burn_dry_run(tmp_path):
|
||||
dummy = tmp_path / "dummy.img"
|
||||
dummy.write_bytes(b"dummy")
|
||||
import hashlib
|
||||
|
||||
checksum = "sha256:" + hashlib.sha256(dummy.read_bytes()).hexdigest()
|
||||
inv_path = write_inv(tmp_path, dummy, checksum)
|
||||
cache_dir = tmp_path / "cache"
|
||||
cmd = [
|
||||
"go",
|
||||
"run",
|
||||
"./cmd/metis",
|
||||
"burn",
|
||||
"--inventory",
|
||||
str(inv_path),
|
||||
"--node",
|
||||
"node-a",
|
||||
"--device",
|
||||
"/dev/sdz",
|
||||
"--cache",
|
||||
str(cache_dir),
|
||||
]
|
||||
out = subprocess.check_output(cmd, cwd=ROOT, text=True)
|
||||
assert "Dry run" in out or "Plan for" in out
|
||||
Loading…
x
Reference in New Issue
Block a user