cargo-make 0.37.24

Rust task runner and build tool.
Documentation
use super::*;
use crate::test;
use crate::types::{ScriptValue, Task};

#[test]
fn execute_duckscript() {
    let valid = execute(
        &vec!["echo test".to_string()],
        &vec![],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
    assert!(valid);
}

#[test]
fn execute_duckscript_error_no_validate() {
    let valid = execute(
        &vec!["badcommand".to_string()],
        &vec![],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        false,
    )
    .unwrap();
    assert!(!valid);
}

#[test]
#[should_panic]
fn execute_duckscript_error_with_validate() {
    execute(
        &vec!["badcommand".to_string()],
        &vec![],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
}

#[test]
fn execute_duckscript_cli_arguments() {
    let valid = execute(
        &vec!["assert ${1}".to_string()],
        &vec!["true".to_string()],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
    assert!(valid);
}

#[test]
#[should_panic]
fn execute_duckscript_cli_arguments2() {
    execute(
        &vec!["assert ${1}".to_string()],
        &vec!["false".to_string()],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
}

#[test]
#[should_panic]
fn execute_duckscript_crash() {
    execute(
        &vec!["function test".to_string()],
        &vec![],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
}

#[test]
#[should_panic]
fn execute_duckscript_crash2() {
    execute(
        &vec!["assert false".to_string()],
        &vec![],
        Some(&test::create_empty_flow_info()),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
}

#[test]
fn cm_run_task_valid() {
    envmnt::set("CM_RUN_TASK_VALID_TEST", "0");

    let mut flow_info = test::create_empty_flow_info();

    let mut task = Task::new();
    task.script_runner = Some("@duckscript".to_string());
    task.script = Some(ScriptValue::Text(vec![r#"
    value = get_env CM_RUN_TASK_VALID_TEST
    value = calc ${value} + 1
    set_env CM_RUN_TASK_VALID_TEST ${value}
    "#
    .to_string()]));
    flow_info.config.tasks.insert("increment".to_string(), task);

    assert!(envmnt::is_equal("CM_RUN_TASK_VALID_TEST", "0"));

    execute(
        &vec![r#"
    cm_run_task increment
    cm_run_task increment
    cm_run_task increment
    "#
        .to_string()],
        &vec![],
        Some(&flow_info),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();

    assert!(envmnt::is_equal("CM_RUN_TASK_VALID_TEST", "3"));
}

#[test]
#[should_panic]
fn cm_run_task_error() {
    let flow_info = test::create_empty_flow_info();

    execute(
        &vec![r#"
    cm_run_task increment
    cm_run_task increment
    cm_run_task increment
    "#
        .to_string()],
        &vec![],
        Some(&flow_info),
        Some(Rc::new(RefCell::new(FlowState::new()))),
        true,
    )
    .unwrap();
}