From e80502b1847c5a015bc0e8390f422e301b6ca395 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Wed, 11 Mar 2026 12:19:17 +0100 Subject: [PATCH] test(runtime): add resolve_package tests for found and not-found cases --- crates/weft-runtime/src/main.rs | 52 +++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/crates/weft-runtime/src/main.rs b/crates/weft-runtime/src/main.rs index 1dcb8e0..a2cd9ac 100644 --- a/crates/weft-runtime/src/main.rs +++ b/crates/weft-runtime/src/main.rs @@ -127,4 +127,56 @@ mod tests { assert_eq!(roots, vec![PathBuf::from("/custom/store")]); unsafe { std::env::remove_var("WEFT_APP_STORE") }; } + + #[test] + fn resolve_package_finds_installed_package() { + use std::fs; + let store = + std::env::temp_dir().join(format!("weft_runtime_resolve_{}", std::process::id())); + let pkg_dir = store.join("com.example.resolve"); + fs::create_dir_all(&pkg_dir).unwrap(); + fs::write( + pkg_dir.join("wapp.toml"), + "[package]\nid=\"com.example.resolve\"\n", + ) + .unwrap(); + + let prior = std::env::var("WEFT_APP_STORE").ok(); + unsafe { std::env::set_var("WEFT_APP_STORE", &store) }; + + let result = resolve_package("com.example.resolve"); + + unsafe { + match prior { + Some(v) => std::env::set_var("WEFT_APP_STORE", v), + None => std::env::remove_var("WEFT_APP_STORE"), + } + } + let _ = fs::remove_dir_all(&store); + + assert!(result.is_ok()); + assert!(result.unwrap().ends_with("com.example.resolve")); + } + + #[test] + fn resolve_package_errors_on_unknown_id() { + let store = + std::env::temp_dir().join(format!("weft_runtime_resolve_empty_{}", std::process::id())); + let _ = std::fs::create_dir_all(&store); + + let prior = std::env::var("WEFT_APP_STORE").ok(); + unsafe { std::env::set_var("WEFT_APP_STORE", &store) }; + + let result = resolve_package("com.does.not.exist"); + + unsafe { + match prior { + Some(v) => std::env::set_var("WEFT_APP_STORE", v), + None => std::env::remove_var("WEFT_APP_STORE"), + } + } + let _ = std::fs::remove_dir_all(&store); + + assert!(result.is_err()); + } }