cargo-make 0.37.24

Rust task runner and build tool.
Documentation
use super::*;
use crate::test;

#[test]
fn is_crate_installed_true_core() {
    let output = is_crate_installed(&None, "test").unwrap();
    assert!(output);
}

#[test]
fn is_crate_installed_true_plugin() {
    let output = is_crate_installed(&None, "make").unwrap();
    assert!(output);
}

#[test]
fn is_crate_installed_false() {
    let output = is_crate_installed(&None, "badbadbad").unwrap();
    assert!(!output);
}

#[test]
fn is_crate_installed_with_toolchain_true() {
    if test::is_not_rust_stable() {
        let toolchain = test::get_toolchain();

        let output = is_crate_installed(&Some(toolchain), "test").unwrap();
        assert!(output);
    }
}

#[test]
fn is_crate_installed_with_toolchain_false() {
    if test::is_not_rust_stable() {
        let toolchain = test::get_toolchain();

        let output = is_crate_installed(&Some(toolchain), "badbadbad").unwrap();
        assert!(!output);
    }
}

#[test]
fn get_install_crate_args_no_args() {
    let all_args = get_install_crate_args("test123", false, &None, &None, &None);

    assert_eq!(all_args.len(), 2);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "test123");
}

#[test]
fn get_install_crate_args_no_args_force() {
    let all_args = get_install_crate_args("test123", true, &None, &None, &None);

    assert_eq!(all_args.len(), 3);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "--force");
    assert_eq!(all_args[2], "test123");
}

#[test]
fn get_install_crate_args_empty_args() {
    let all_args = get_install_crate_args("test123", false, &Some(vec![]), &None, &None);

    assert_eq!(all_args.len(), 2);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "test123");
}

#[test]
fn get_install_crate_args_empty_args_force() {
    let all_args = get_install_crate_args("test123", true, &Some(vec![]), &None, &None);

    assert_eq!(all_args.len(), 3);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "--force");
    assert_eq!(all_args[2], "test123");
}

#[test]
fn get_install_crate_args_with_args() {
    let all_args = get_install_crate_args(
        "test123",
        false,
        &Some(vec!["arg1".to_string(), "arg2".to_string()]),
        &None,
        &None,
    );

    assert_eq!(all_args.len(), 4);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "arg1");
    assert_eq!(all_args[2], "arg2");
    assert_eq!(all_args[3], "test123");
}

#[test]
fn get_install_crate_args_with_args_force() {
    let all_args = get_install_crate_args(
        "test123",
        true,
        &Some(vec!["arg1".to_string(), "arg2".to_string()]),
        &None,
        &None,
    );

    assert_eq!(all_args.len(), 5);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "--force");
    assert_eq!(all_args[2], "arg1");
    assert_eq!(all_args[3], "arg2");
    assert_eq!(all_args[4], "test123");
}

#[test]
fn get_install_crate_args_without_crate_name() {
    let all_args = get_install_crate_args(
        "test123",
        false,
        &Some(vec!["--git".to_string(), "arg2".to_string()]),
        &None,
        &None,
    );

    assert_eq!(all_args.len(), 3);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "--git");
    assert_eq!(all_args[2], "arg2");
}

#[test]
#[ignore]
fn get_install_crate_args_locked() {
    envmnt::set_bool("CARGO_MAKE_CRATE_INSTALLATION_LOCKED", true);
    let all_args = get_install_crate_args(
        "test123",
        false,
        &Some(vec!["arg1".to_string(), "arg2".to_string()]),
        &Some("1.2.3".to_string()),
        &None,
    );
    envmnt::remove("CARGO_MAKE_CRATE_INSTALLATION_LOCKED");

    assert_eq!(all_args.len(), 7);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "arg1");
    assert_eq!(all_args[2], "arg2");
    assert_eq!(all_args[3], "--locked");
    assert_eq!(all_args[4], "--version");
    assert_eq!(all_args[5], "1.2.3");
    assert_eq!(all_args[6], "test123");
}

#[test]
#[ignore]
fn get_install_crate_args_no_version_locked() {
    envmnt::set_bool("CARGO_MAKE_CRATE_INSTALLATION_LOCKED", true);
    let all_args = get_install_crate_args(
        "test123",
        false,
        &Some(vec!["arg1".to_string(), "arg2".to_string()]),
        &None,
        &None,
    );
    envmnt::remove("CARGO_MAKE_CRATE_INSTALLATION_LOCKED");

    assert_eq!(all_args.len(), 4);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "arg1");
    assert_eq!(all_args[2], "arg2");
    assert_eq!(all_args[3], "test123");
}

#[test]
#[ignore]
fn get_install_crate_args_without_crate_name_locked() {
    envmnt::set_bool("CARGO_MAKE_CRATE_INSTALLATION_LOCKED", true);
    let all_args = get_install_crate_args(
        "test123",
        false,
        &Some(vec!["--git".to_string(), "arg2".to_string()]),
        &Some("1.2.3".to_string()),
        &None,
    );
    envmnt::remove("CARGO_MAKE_CRATE_INSTALLATION_LOCKED");

    assert_eq!(all_args.len(), 3);
    assert_eq!(all_args[0], "install");
    assert_eq!(all_args[1], "--git");
    assert_eq!(all_args[2], "arg2");
}

#[test]
fn get_install_crate_args_with_install_command() {
    let all_args = get_install_crate_args(
        "test123",
        false,
        &None,
        &None,
        &Some("myinstall".to_string()),
    );

    assert_eq!(all_args.len(), 2);
    assert_eq!(all_args[0], "myinstall");
    assert_eq!(all_args[1], "test123");
}

#[test]
fn should_skip_crate_name_none() {
    let output = should_skip_crate_name(&None);

    assert!(!output);
}

#[test]
fn should_skip_crate_name_empty() {
    let output = should_skip_crate_name(&Some(vec![]));

    assert!(!output);
}

#[test]
fn should_skip_crate_name_false() {
    let output = should_skip_crate_name(&Some(vec!["arg1".to_string(), "arg2".to_string()]));

    assert!(!output);
}

#[test]
fn should_skip_crate_name_git() {
    let output = should_skip_crate_name(&Some(vec!["--git".to_string(), "arg2".to_string()]));

    assert!(output);
}

#[test]
fn install_crate_already_installed_test() {
    install_crate(&None, Some("test"), "bad", &None, true, &None, &None, &None).unwrap();
}

#[test]
fn install_crate_already_installed_cargo_make() {
    install_crate(
        &None,
        Some("make"),
        "cargo-make",
        &None,
        true,
        &None,
        &None,
        &None,
    )
    .unwrap();
}

#[test]
fn install_crate_already_installed_cargo_make_without_check() {
    install_crate(&None, None, "cargo-make", &None, true, &None, &None, &None).unwrap();
}

#[test]
#[ignore]
fn install_crate_already_installed_min_version_equal() {
    let version = crate_version_check::get_crate_version("cargo-make", None).unwrap();
    let mut version_string = String::new();
    version_string.push_str(&version.major.to_string());
    version_string.push_str(".");
    version_string.push_str(&version.minor.to_string());
    version_string.push_str(".");
    version_string.push_str(&version.patch.to_string());

    install_crate(
        &None,
        Some("make"),
        "cargo-make",
        &None,
        true,
        &Some(version_string),
        &None,
        &None,
    )
    .unwrap();
}

#[test]
#[ignore]
fn install_crate_already_installed_min_version_smaller() {
    let mut version = crate_version_check::get_crate_version("cargo-make", None).unwrap();
    if version.patch > 0 {
        version.patch = version.patch - 1;
    } else if version.minor > 0 {
        version.minor = version.minor - 1;
    } else if version.major > 0 {
        version.major = version.major - 1;
    }

    let mut version_string = String::new();
    version_string.push_str(&version.major.to_string());
    version_string.push_str(".");
    version_string.push_str(&version.minor.to_string());
    version_string.push_str(".");
    version_string.push_str(&version.patch.to_string());

    install_crate(
        &None,
        Some("make"),
        "cargo-make",
        &None,
        true,
        &Some(version_string),
        &None,
        &None,
    )
    .unwrap();
}