hyperlane-cli 0.1.10

A command-line tool for Hyperlane framework.
use crate::*;

#[test]
fn test_bump_version_type_enum() {
    assert_eq!(BumpVersionType::Patch, BumpVersionType::Patch);
    assert_eq!(BumpVersionType::Minor, BumpVersionType::Minor);
    assert_eq!(BumpVersionType::Major, BumpVersionType::Major);
    assert_eq!(BumpVersionType::Release, BumpVersionType::Release);
    assert_eq!(BumpVersionType::Alpha, BumpVersionType::Alpha);
    assert_eq!(BumpVersionType::Beta, BumpVersionType::Beta);
    assert_eq!(BumpVersionType::Rc, BumpVersionType::Rc);
}

#[test]
fn test_version_struct_creation() {
    let version: Version = Version {
        major: 1,
        minor: 2,
        patch: 3,
        prerelease: Some("alpha.1".to_string()),
    };
    assert_eq!(version.major, 1);
    assert_eq!(version.minor, 2);
    assert_eq!(version.patch, 3);
    assert_eq!(version.prerelease, Some("alpha.1".to_string()));
}

#[test]
fn test_version_clone() {
    let version: Version = Version {
        major: 1,
        minor: 2,
        patch: 3,
        prerelease: Some("beta".to_string()),
    };
    let cloned: Version = version.clone();
    assert_eq!(cloned.major, version.major);
    assert_eq!(cloned.minor, version.minor);
    assert_eq!(cloned.patch, version.patch);
    assert_eq!(cloned.prerelease, version.prerelease);
}

#[test]
fn test_execute_bump_integration() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Patch);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.1.1");
    let updated_content: String = std::fs::read_to_string(&manifest_path).unwrap();
    assert!(updated_content.contains("version = \"0.1.1\""));
}

#[test]
fn test_execute_bump_minor() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_minor");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Minor);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.2.0");
}

#[test]
fn test_execute_bump_major() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_major");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Major);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "1.0.0");
}

#[test]
fn test_execute_bump_alpha() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_alpha");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Alpha);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.1.0-alpha");
}

#[test]
fn test_execute_bump_beta() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_beta");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0-alpha.2"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Beta);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.1.0-beta.1");
}

#[test]
fn test_execute_bump_rc() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_rc");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0-beta.1"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Rc);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.1.0-rc.1");
}

#[test]
fn test_execute_bump_release() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_release");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
version = "0.1.0-alpha"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Release);
    assert!(result.is_ok());
    assert_eq!(result.unwrap(), "0.1.0");
}

#[test]
fn test_execute_bump_no_version_field() {
    use std::fs::write;
    use std::path::PathBuf;
    let tmp_dir: PathBuf = PathBuf::from("./tmp/test_bump_no_version");
    let _ = std::fs::create_dir_all(&tmp_dir);
    let manifest_path: PathBuf = tmp_dir.join("Cargo.toml");
    let content: &str = r#"[package]
name = "test-package"
edition = "2024"
"#;
    write(&manifest_path, content).unwrap();
    let result: Result<String, Box<dyn std::error::Error>> =
        execute_bump(manifest_path.to_str().unwrap(), &BumpVersionType::Patch);
    assert!(result.is_err());
}