From 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sat, 4 May 2024 14:41:41 +0200 Subject: Merging upstream version 1.70.0+dfsg2. Signed-off-by: Daniel Baumann --- vendor/gix-command/tests/command.rs | 116 ++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 vendor/gix-command/tests/command.rs (limited to 'vendor/gix-command/tests') diff --git a/vendor/gix-command/tests/command.rs b/vendor/gix-command/tests/command.rs new file mode 100644 index 000000000..cc1f5bda9 --- /dev/null +++ b/vendor/gix-command/tests/command.rs @@ -0,0 +1,116 @@ +use gix_testtools::Result; + +mod prepare { + fn quoted(input: &[&str]) -> String { + input.iter().map(|s| format!("\"{s}\"")).collect::>().join(" ") + } + #[test] + fn single_and_multiple_arguments() { + let cmd = std::process::Command::from(gix_command::prepare("ls").arg("first").args(["second", "third"])); + assert_eq!(format!("{cmd:?}"), quoted(&["ls", "first", "second", "third"])); + } +} + +mod spawn { + #[cfg(unix)] + use bstr::ByteSlice; + + #[test] + #[cfg(unix)] + fn environment_variables_are_passed_one_by_one() -> crate::Result { + let out = gix_command::prepare("echo $FIRST $SECOND") + .env("FIRST", "first") + .env("SECOND", "second") + .with_shell() + .spawn()? + .wait_with_output()?; + assert_eq!(out.stdout.as_bstr(), "first second\n"); + Ok(()) + } + + #[test] + #[cfg(unix)] + fn disallow_shell() -> crate::Result { + let out = gix_command::prepare("echo hi") + .with_shell() + .spawn()? + .wait_with_output()?; + assert_eq!(out.stdout.as_bstr(), "hi\n"); + assert!( + gix_command::prepare("echo hi") + .with_shell() + .without_shell() + .spawn() + .is_err(), + "no command named 'echo hi' exists" + ); + Ok(()) + } + + #[test] + fn direct_command_execution_searches_in_path() -> crate::Result { + assert!(gix_command::prepare(if cfg!(unix) { "ls" } else { "dir.exe" }) + .spawn()? + .wait()? + .success()); + Ok(()) + } + + #[cfg(unix)] + #[test] + fn direct_command_with_absolute_command_path() -> crate::Result { + assert!(gix_command::prepare("/bin/ls").spawn()?.wait()?.success()); + Ok(()) + } + + mod with_shell { + use gix_testtools::bstr::ByteSlice; + + #[test] + fn command_in_path_with_args() -> crate::Result { + assert!(gix_command::prepare(if cfg!(unix) { "ls -l" } else { "dir.exe -a" }) + .with_shell() + .spawn()? + .wait()? + .success()); + Ok(()) + } + + #[test] + fn sh_shell_specific_script_code() -> crate::Result { + assert!(gix_command::prepare(":;:;:").with_shell().spawn()?.wait()?.success()); + Ok(()) + } + + #[test] + fn sh_shell_specific_script_code_with_single_extra_arg() -> crate::Result { + let out = gix_command::prepare("echo") + .with_shell() + .arg("1") + .spawn()? + .wait_with_output()?; + assert!(out.status.success()); + #[cfg(not(windows))] + assert_eq!(out.stdout.as_bstr(), "1\n"); + #[cfg(windows)] + assert_eq!(out.stdout.as_bstr(), "1\r\n"); + Ok(()) + } + + #[test] + fn sh_shell_specific_script_code_with_multiple_extra_args() -> crate::Result { + let out = gix_command::prepare("echo") + .with_shell() + .arg("1") + .arg("2") + .spawn()? + .wait_with_output()?; + assert!(out.status.success()); + #[cfg(not(windows))] + assert_eq!(out.stdout.as_bstr(), "1 2\n"); + #[cfg(windows)] + assert_eq!(out.stdout.as_bstr(), "1 2\r\n"); + Ok(()) + } + } +} -- cgit v1.2.3