summaryrefslogtreecommitdiff
path: root/tests/cli.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/cli.rs')
-rw-r--r--tests/cli.rs26
1 files changed, 22 insertions, 4 deletions
diff --git a/tests/cli.rs b/tests/cli.rs
index 18d815e..a4d368f 100644
--- a/tests/cli.rs
+++ b/tests/cli.rs
@@ -1,7 +1,25 @@
-use assert_cmd::Command;
+use assert_cmd::cargo::cargo_bin;
+use rexpect::{session::PtySession, spawn};
+use std::error::Error;
+
+fn spawn_interactive_process() -> Result<PtySession, Box<dyn Error>> {
+ let path = cargo_bin(env!("CARGO_PKG_NAME"));
+ let process = spawn(&path.display().to_string(), Some(3000))?;
+ Ok(process)
+}
+
+#[test]
+fn shows_a_prompt() -> Result<(), Box<dyn Error>> {
+ let mut p = spawn_interactive_process()?;
+ p.exp_string("> ")?;
+ Ok(())
+}
#[test]
-fn shows_a_prompt() {
- let mut cmd = Command::cargo_bin("shackle").unwrap();
- cmd.assert().success().stdout(">");
+fn does_nothing_after_receiving_whitespace_input() -> Result<(), Box<dyn Error>> {
+ let mut p = spawn_interactive_process()?;
+ p.exp_string("> ")?;
+ p.send_line("")?;
+ p.exp_string("> ")?;
+ Ok(())
}