...
This commit is contained in:
parent
efd29eeb99
commit
a3c6322b49
@ -10,8 +10,10 @@
|
|||||||
//!
|
//!
|
||||||
//! This module is designed to work consistently across Windows, macOS, and Linux.
|
//! This module is designed to work consistently across Windows, macOS, and Linux.
|
||||||
|
|
||||||
pub mod run;
|
mod run;
|
||||||
pub mod mgmt;
|
mod mgmt;
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests;
|
||||||
|
|
||||||
use run::*;
|
pub use run::*;
|
||||||
use mgmt::*;
|
pub use mgmt::*;
|
92
src/process/tests.rs
Normal file
92
src/process/tests.rs
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use crate::process::run::{run, run_silent, run_script, run_command};
|
||||||
|
use crate::text::dedent;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_command() {
|
||||||
|
// Test running a simple echo command
|
||||||
|
let result = run_command("echo hello").unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert_eq!(result.code, 0);
|
||||||
|
assert!(result.stdout.trim().contains("hello"));
|
||||||
|
assert_eq!(result.stderr, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_silent_command() {
|
||||||
|
// Test running a command silently
|
||||||
|
let result = run_silent("echo silent test").unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert_eq!(result.code, 0);
|
||||||
|
assert!(result.stdout.trim().contains("silent test"));
|
||||||
|
assert_eq!(result.stderr, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_script() {
|
||||||
|
// Test running a multi-line script
|
||||||
|
let script = r#"
|
||||||
|
echo "line 1"
|
||||||
|
echo "line 2"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
let result = run_script(script).unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert_eq!(result.code, 0);
|
||||||
|
assert!(result.stdout.contains("line 1"));
|
||||||
|
assert!(result.stdout.contains("line 2"));
|
||||||
|
assert_eq!(result.stderr, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_with_dedent() {
|
||||||
|
// Test that run properly dedents scripts
|
||||||
|
let script = r#"
|
||||||
|
echo "This has 12 spaces of indentation"
|
||||||
|
echo "This has 16 spaces (4 more than the common indentation)"
|
||||||
|
"#;
|
||||||
|
|
||||||
|
// The dedent function should remove the common 12 spaces
|
||||||
|
let dedented = dedent(script);
|
||||||
|
assert!(dedented.contains("echo \"This has 12 spaces of indentation\""));
|
||||||
|
assert!(dedented.contains(" echo \"This has 16 spaces (4 more than the common indentation)\""));
|
||||||
|
|
||||||
|
// Running the script should work with the dedented content
|
||||||
|
let result = run(script).unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert_eq!(result.code, 0);
|
||||||
|
assert!(result.stdout.contains("This has 12 spaces of indentation"));
|
||||||
|
assert!(result.stdout.contains("This has 16 spaces (4 more than the common indentation)"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_detects_script_vs_command() {
|
||||||
|
// Test that run correctly identifies scripts vs commands
|
||||||
|
|
||||||
|
// One-liner should be treated as a command
|
||||||
|
let one_liner = "echo one-liner test";
|
||||||
|
let result = run(one_liner).unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert!(result.stdout.contains("one-liner test"));
|
||||||
|
|
||||||
|
// Multi-line input should be treated as a script
|
||||||
|
let multi_line = "echo first line\necho second line";
|
||||||
|
let result = run(multi_line).unwrap();
|
||||||
|
assert!(result.success);
|
||||||
|
assert!(result.stdout.contains("first line"));
|
||||||
|
assert!(result.stdout.contains("second line"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_run_empty_command() {
|
||||||
|
// Test handling of empty commands
|
||||||
|
let result = run("");
|
||||||
|
assert!(result.is_err());
|
||||||
|
// The specific error should be EmptyCommand
|
||||||
|
match result {
|
||||||
|
Err(crate::process::run::RunError::EmptyCommand) => (),
|
||||||
|
_ => panic!("Expected EmptyCommand error"),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user