rash_core 2.20.0

Declarative shell scripting using Rust native bindings
Documentation
#[cfg(target_os = "linux")]
use crate::cli::modules::run_test;

#[cfg(target_os = "linux")]
#[test]
fn test_pids_pattern() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Find processes by pattern
  pids:
    pattern: ".*"
  register: result

- name: Verify pids is a list
  assert:
    that:
      - result.extra.pids is sequence
      - result.extra.pids | length > 0
        "#;

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

    assert!(stderr.is_empty());
    assert!(stdout.contains("ok"));
}

#[cfg(target_os = "linux")]
#[test]
fn test_pids_with_exclude() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Find all processes excluding rash
  pids:
    pattern: ".*"
    exclude:
      - rash
      - cargo
  register: result

- name: Verify processes were found
  assert:
    that:
      - result.extra.pids is sequence
        "#;

    let args: &[&str] = &[];
    let (_stdout, stderr) = run_test(script_text, args);

    assert!(stderr.is_empty());
}

#[cfg(target_os = "linux")]
#[test]
fn test_pids_user_filter() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Find processes by user
  pids:
    user: root
  register: result

- name: Verify result contains pids
  assert:
    that:
      - result.extra.pids is sequence
      - result.extra.processes is sequence
        "#;

    let args: &[&str] = &[];
    let (_stdout, stderr) = run_test(script_text, args);

    assert!(stderr.is_empty());
}

#[cfg(target_os = "linux")]
#[test]
fn test_pids_returns_process_info() {
    let script_text = r#"
#!/usr/bin/env rash
- name: Find processes and check details
  pids:
    pattern: ".*"
  register: result

- name: Verify process details
  assert:
    that:
      - result.extra.processes[0].pid is number
      - result.extra.processes[0].name is string
      - result.extra.processes[0].user is string
      - result.extra.processes[0].command is string
        "#;

    let args: &[&str] = &[];
    let (_stdout, stderr) = run_test(script_text, args);

    assert!(stderr.is_empty());
}