use wasm_slim::toolchain::ToolchainDetector;
use wasm_slim::tools::{Tool, ToolChain, ToolStatus};
#[test]
fn test_tool_check_with_installed_tool_returns_available_status() {
let toolchain = ToolChain::default();
let status = toolchain.cargo.check();
match status {
ToolStatus::Available(version) => {
assert!(version.contains("cargo"));
}
_ => panic!("cargo should be available"),
}
}
#[test]
fn test_tool_version_with_valid_tool_returns_parseable_version() {
let tool = Tool::new("cargo", "cargo", "--version", true);
let version_result = tool.version();
assert!(version_result.is_ok());
let version = version_result.unwrap();
assert!(!version.is_empty());
}
#[test]
fn test_toolchain_module_is_accessible() {
let detector = ToolchainDetector::new();
let result = detector.is_nightly_toolchain();
assert!(result.is_ok(), "Should successfully detect toolchain");
}
#[test]
fn test_tool_version_with_multiline_output_returns_first_line() {
let tool = Tool::new("rustc", "rustc", "--version", false);
if tool.is_installed() {
let version = tool.version().expect("Failed to get rustc version");
assert!(!version.is_empty());
assert!(!version.contains('\n'));
}
}
#[test]
fn test_tool_version_with_prerelease_tag_parses_successfully() {
let tool = Tool::new("cargo", "cargo", "--version", true);
let version = tool.version().expect("Failed to get cargo version");
assert!(!version.is_empty());
assert!(version.to_lowercase().contains("cargo"));
}
#[test]
fn test_tool_version_with_build_metadata_parses_successfully() {
let tool = Tool::new("rustc", "rustc", "--version", false);
if tool.is_installed() {
let version = tool.version().expect("Failed to get version");
assert!(!version.is_empty());
}
}
#[test]
fn test_tool_version_with_different_format_succeeds() {
let tool = Tool::new("cargo", "cargo", "--version", true);
let version = tool.version().expect("Failed to get version");
assert!(!version.is_empty());
assert!(!version.contains('\n'));
}
#[test]
fn test_is_nightly_toolchain_detects_channel() {
let detector = ToolchainDetector::new();
let result = detector.is_nightly_toolchain();
assert!(result.is_ok());
}