Radish alpha
r
rad:z39mP9rQAaGmERfUMPULfPUi473tY
Radicle terminal user interface
Radicle
Git
bin: Add more CLI tests
Erik Kundt committed 1 year ago
commit 0c7868c523b173b39098776406fe1c9d1455f839
parent 4b05911
1 file changed +85 -1
modified bin/main.rs
@@ -193,14 +193,98 @@ fn run_other(command: &str, args: &[OsString]) -> Result<(), Option<anyhow::Erro
#[cfg(test)]
mod cli {
    use assert_cmd::prelude::*;
+
    use predicates::prelude::*;
    use std::process::Command;

    #[test]
-
    fn smoke() -> Result<(), Box<dyn std::error::Error>> {
+
    fn can_be_executed() -> Result<(), Box<dyn std::error::Error>> {
        let mut cmd = Command::cargo_bin("rad-tui")?;

        cmd.assert().success();

        Ok(())
    }
+

+
    #[test]
+
    fn empty_command_is_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::contains("Radicle CLI Manual"));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn empty_command_is_not_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("--no-forward");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::contains("Radicle terminal interfaces"));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn version_command_is_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("version");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::starts_with("rad "));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn version_command_is_not_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("version").arg("--no-forward");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::starts_with("rad-tui "));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn version_command_prints_json() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("version").arg("--no-forward").arg("--json");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::contains("\"name\":\"rad-tui\""));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn help_command_is_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("help");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::contains("Radicle CLI Manual"));
+

+
        Ok(())
+
    }
+

+
    #[test]
+
    fn help_command_is_not_forwarded() -> Result<(), Box<dyn std::error::Error>> {
+
        let mut cmd = Command::cargo_bin("rad-tui")?;
+

+
        cmd.arg("help").arg("--no-forward");
+
        cmd.assert()
+
            .success()
+
            .stdout(predicate::str::contains("Radicle terminal interfaces"));
+

+
        Ok(())
+
    }
}