Add unit tests for update module

This commit is contained in:
Erikk Shupp 2026-05-11 11:07:15 -04:00
parent bdae3231b5
commit ad37dc6be4
2 changed files with 105 additions and 0 deletions

View file

@ -147,3 +147,47 @@ fn has_pacman_installation() -> bool {
fn has_pacman_installation() -> bool {
false
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_install_method_display() {
assert_eq!(InstallMethod::Cargo.to_string(), "cargo");
assert_eq!(InstallMethod::Homebrew.to_string(), "homebrew");
assert_eq!(InstallMethod::Apt.to_string(), "apt");
assert_eq!(InstallMethod::Dnf.to_string(), "dnf");
assert_eq!(InstallMethod::Pacman.to_string(), "pacman");
assert_eq!(InstallMethod::Windows.to_string(), "windows");
assert_eq!(InstallMethod::Scoop.to_string(), "scoop");
assert_eq!(
InstallMethod::Chocolatey.to_string(),
"chocolatey"
);
assert_eq!(
InstallMethod::ScoopBucket.to_string(),
"scoop-bucket"
);
assert_eq!(InstallMethod::Unknown.to_string(), "unknown");
}
#[test]
fn test_install_method_equality() {
assert_eq!(InstallMethod::Cargo, InstallMethod::Cargo);
assert_ne!(InstallMethod::Cargo, InstallMethod::Dnf);
}
#[test]
fn test_install_method_clone() {
let method = InstallMethod::Dnf;
let cloned = method.clone();
assert_eq!(method, cloned);
}
#[test]
fn test_install_method_debug() {
let debug_str = format!("{:?}", InstallMethod::Cargo);
assert!(debug_str.contains("Cargo"));
}
}

View file

@ -168,3 +168,64 @@ fn confirm(prompt: &str) -> Result<bool> {
Ok(input.trim().eq_ignore_ascii_case("y"))
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_is_prerelease_nightly() {
assert!(is_prerelease("0.28.1-nightly"));
assert!(is_prerelease("0.28.1-NIGHTLY"));
}
#[test]
fn test_is_prerelease_rc() {
assert!(is_prerelease("0.28.1-rc.1"));
assert!(is_prerelease("0.28.1-RC.1"));
}
#[test]
fn test_is_prerelease_beta() {
assert!(is_prerelease("0.28.1-beta"));
assert!(is_prerelease("0.28.0-beta.2"));
}
#[test]
fn test_is_prerelease_alpha() {
assert!(is_prerelease("0.28.1-alpha"));
assert!(is_prerelease("0.28.0-alpha.1"));
}
#[test]
fn test_is_prerelease_dev() {
assert!(is_prerelease("0.28.1-dev"));
assert!(is_prerelease("0.28.0-dev.20240101"));
}
#[test]
fn test_is_prerelease_preview() {
assert!(is_prerelease("0.28.1-preview"));
assert!(is_prerelease("0.28.0-preview.3"));
}
#[test]
fn test_is_prerelease_snapshot() {
assert!(is_prerelease("0.28.1-snapshot"));
}
#[test]
fn test_is_not_prerelease_stable() {
assert!(!is_prerelease("0.28.1"));
assert!(!is_prerelease("0.28.0"));
assert!(!is_prerelease("1.0.0"));
}
#[test]
fn test_is_not_prerelease_version_with_prerelease_substring() {
// Ensure we don't false-positive on versions that contain prerelease keywords
// but aren't actually prereleases (e.g., "0.28.1-nightly-feature" wouldn't be valid anyway)
assert!(is_prerelease("0.28.1-nightly"));
assert!(!is_prerelease("0.28.1"));
}
}