rash_core 2.17.5

Declarative shell scripting using Rust native bindings
Documentation
use crate::cli::modules::{run_test, run_tests};

use std::collections::HashMap;

#[test]
fn test_include_not_exists() {
    let script_text = r#"
#!/usr/bin/env rash
- name: File not exists
  include: file_not_exists.rh
        "#;

    let (stdout, stderr) = run_test(script_text, &[]);

    assert!(stdout.contains("- 1 to go - "));
    assert!(stderr.contains("[ERROR] Error reading file: Os { code: 2, kind: NotFound, message: \"No such file or directory\" }\n"));
}

#[test]
fn test_include() {
    let script_content = r#"#!/usr/bin/env rash
- assert:
    that:
      - rash.path == "{{ rash.dir }}/script.rh"

- name: Add lib
  include: "{{ rash.dir }}/lib.rh"

- assert:
    that:
      - rash.path == "{{ rash.dir }}/script.rh"
    "#;

    let lib_content = r#"
- assert:
    that:
      - rash.path == "{{ rash.dir }}/lib.rh"
    "#;

    let scripts = HashMap::from([("script.rh", script_content), ("lib.rh", lib_content)]);
    let (stdout, stderr) = run_tests(scripts, "script.rh", &[]);

    assert!(stdout.contains("script.rh:assert] - 3 to go - "));
    assert!(stdout.contains("lib.rh:assert] - 1 to go - "));
    assert!(stderr.is_empty());
}