From d1c80863b8f941268f031a827a4ab73f2ef9f854 Mon Sep 17 00:00:00 2001 From: Maxime Van Hees Date: Wed, 20 Aug 2025 15:42:12 +0200 Subject: [PATCH] fixed test script errors --- herodo/src/lib.rs | 8 ++- .../virt/tests/rhai/04_qcow2_basic.rhai | 55 ++++++++++--------- 2 files changed, 33 insertions(+), 30 deletions(-) diff --git a/herodo/src/lib.rs b/herodo/src/lib.rs index 8c00710..388c050 100644 --- a/herodo/src/lib.rs +++ b/herodo/src/lib.rs @@ -33,9 +33,11 @@ pub fn run(script_path: &str) -> Result<(), Box> { // TODO: if we create a scope here we could clean up all the different functionsand types regsitered wit the engine // We should generalize the way we add things to the scope for each module sepeartely let mut scope = Scope::new(); - // TODO: this should be done for the other clients as well (but not here of course, in each module) - let hetzner_client = sal::hetzner::api::Client::new(sal::hetzner::config::Config::from_env().unwrap()); - scope.push("hetzner", hetzner_client); + // Conditionally add Hetzner client only when env config is present + if let Ok(cfg) = sal::hetzner::config::Config::from_env() { + let hetzner_client = sal::hetzner::api::Client::new(cfg); + scope.push("hetzner", hetzner_client); + } // This makes it easy to call e.g. `hetzner.get_server()` or `mycelium.get_connected_peers()` // --> without the need of manually created a client for each one first // --> could be conditionally compiled to only use those who we need (we only push the things to the scope that we actually need to run the script) diff --git a/packages/system/virt/tests/rhai/04_qcow2_basic.rhai b/packages/system/virt/tests/rhai/04_qcow2_basic.rhai index 696f93b..13845e3 100644 --- a/packages/system/virt/tests/rhai/04_qcow2_basic.rhai +++ b/packages/system/virt/tests/rhai/04_qcow2_basic.rhai @@ -11,55 +11,56 @@ if qemu == () { exit(); } -// Helper: unique temp path -let now = 0; -try { - // if process module exists you could pull a timestamp; fallback to random-ish suffix - now = 100000 + (rand() % 100000); -} catch (err) { - now = 100000 + (rand() % 100000); -} -let img_path = `/tmp/qcow2_test_${now}.img`; +// Helper: unique temp path (use monotonic timestamp; avoid shell quoting issues) +let now = run_silent("date +%s%N"); +let suffix = if now.success && now.stdout != "" { now.stdout.trim() } else { "100000" }; +let img_path = `/tmp/qcow2_test_${suffix}.img`; print("\n--- Test 1: Create image ---"); -let create_res = qcow2_create(img_path, 1); -if create_res.is_err() { - print(`❌ Create failed: ${create_res.unwrap_err()}`); +try { + let created_path = qcow2_create(img_path, 1); + // created_path should equal img_path + print(`✓ Created qcow2: ${created_path}`); +} catch (err) { + print(`❌ Create failed: ${err}`); exit(); } -print(`✓ Created qcow2: ${img_path}`); print("\n--- Test 2: Info ---"); -let info_res = qcow2_info(img_path); -if info_res.is_err() { - print(`❌ Info failed: ${info_res.unwrap_err()}`); +let info; +try { + info = qcow2_info(img_path); +} catch (err) { + print(`❌ Info failed: ${err}`); exit(); } -let info = info_res.unwrap(); print("✓ Info fetched"); if info.format != () { print(` format: ${info.format}`); } if info["virtual-size"] != () { print(` virtual-size: ${info["virtual-size"]}`); } print("\n--- Test 3: Snapshot create/list/delete (offline) ---"); let snap_name = "s1"; -let screate = qcow2_snapshot_create(img_path, snap_name); -if screate.is_err() { - print(`❌ snapshot_create failed: ${screate.unwrap_err()}`); +try { + qcow2_snapshot_create(img_path, snap_name); +} catch (err) { + print(`❌ snapshot_create failed: ${err}`); exit(); } print("✓ snapshot created: s1"); -let slist = qcow2_snapshot_list(img_path); -if slist.is_err() { - print(`❌ snapshot_list failed: ${slist.unwrap_err()}`); +let snaps; +try { + snaps = qcow2_snapshot_list(img_path); +} catch (err) { + print(`❌ snapshot_list failed: ${err}`); exit(); } -let snaps = slist.unwrap(); print(`✓ snapshot_list ok, count=${snaps.len()}`); -let sdel = qcow2_snapshot_delete(img_path, snap_name); -if sdel.is_err() { - print(`❌ snapshot_delete failed: ${sdel.unwrap_err()}`); +try { + qcow2_snapshot_delete(img_path, snap_name); +} catch (err) { + print(`❌ snapshot_delete failed: ${err}`); exit(); } print("✓ snapshot deleted: s1");