From dd24cc2aec9ece8214ec1a4eff4abd26d00ea083 Mon Sep 17 00:00:00 2001 From: Jonas Maier Date: Sat, 9 May 2026 11:30:28 +0200 Subject: simple script file test --- tests/common.rs | 19 +++++++++++++++++++ tests/scripts.rs | 8 ++++++++ 2 files changed, 27 insertions(+) create mode 100644 tests/common.rs create mode 100644 tests/scripts.rs (limited to 'tests') diff --git a/tests/common.rs b/tests/common.rs new file mode 100644 index 0000000..210b92a --- /dev/null +++ b/tests/common.rs @@ -0,0 +1,19 @@ +#[cfg(test)] +pub fn test_case(_name: &str, script: &[u8], expected_output: &[u8]) { + use pish::parse::Parse; + use pish::rw::*; + use std::io::Read; + use std::sync::{Arc, Mutex}; + + let session = Arc::new(Mutex::new(pish::Session::new_noninteractive())); + let script = pish::parse::Script::parse_from_bytes(script).unwrap(); + let (stdin, _c1) = InputReader::new(Input::Null); + let (mut pr, pw) = std::io::pipe().unwrap(); + let (stdout, _c2) = OutputWriter::new(Output::Pipe(pw)); + let mut exec = pish::run::Executor::new(session.clone()); + let mut spawned = exec.execute_script(script, stdin, stdout); + let _res = spawned.join_timeout(1000); + let mut actual_output = Vec::new(); + pr.read_to_end(&mut actual_output).unwrap(); + assert_eq!(expected_output, actual_output); +} diff --git a/tests/scripts.rs b/tests/scripts.rs new file mode 100644 index 0000000..9b82ed1 --- /dev/null +++ b/tests/scripts.rs @@ -0,0 +1,8 @@ +//! This file is generated by running `bash test-cases/generate.sh` - do not manually adjust. +mod common; + +#[test] +fn fun0() { + common::test_case("fun0", include_bytes!("../test-cases/fun0/script.sh"), include_bytes!("../test-cases/fun0/stdout.txt")); +} + -- cgit v1.2.3