Radish alpha
r
rad:z39mP9rQAaGmERfUMPULfPUi473tY
Radicle terminal user interface
Radicle
Git
bin: Add CLI testing infrastructure
Erik Kundt committed 1 year ago
commit 8d693a6a64e131ac673c45a2c4564a79b5f76c32
parent 120cb6c
4 files changed +114 -4
modified Cargo.lock
@@ -212,6 +212,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16"

[[package]]
+
name = "assert_cmd"
+
version = "2.0.16"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "dc1835b7f27878de8525dc71410b5a31cdcc5f230aed5ba5df968e09c201b23d"
+
dependencies = [
+
 "anstyle",
+
 "bstr",
+
 "doc-comment",
+
 "libc",
+
 "predicates",
+
 "predicates-core",
+
 "predicates-tree",
+
 "wait-timeout",
+
]
+

+
[[package]]
name = "autocfg"
version = "1.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -314,6 +330,17 @@ dependencies = [
]

[[package]]
+
name = "bstr"
+
version = "1.11.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "531a9155a481e2ee699d4f98f43c0ca4ff8ee1bfd55c31e9e98fb29d2b176fe0"
+
dependencies = [
+
 "memchr",
+
 "regex-automata",
+
 "serde",
+
]
+

+
[[package]]
name = "bumpalo"
version = "3.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -681,6 +708,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8"

[[package]]
+
name = "difflib"
+
version = "0.4.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8"
+

+
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -693,6 +726,12 @@ dependencies = [
]

[[package]]
+
name = "doc-comment"
+
version = "0.3.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10"
+

+
[[package]]
name = "dyn-clone"
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -823,6 +862,15 @@ dependencies = [
]

[[package]]
+
name = "float-cmp"
+
version = "0.10.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "b09cf3155332e944990140d967ff5eceb70df778b34f77d8075db46e4704e6d8"
+
dependencies = [
+
 "num-traits",
+
]
+

+
[[package]]
name = "fnv"
version = "1.0.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1643,6 +1691,36 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"

[[package]]
+
name = "predicates"
+
version = "3.1.3"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573"
+
dependencies = [
+
 "anstyle",
+
 "difflib",
+
 "float-cmp",
+
 "normalize-line-endings",
+
 "predicates-core",
+
 "regex",
+
]
+

+
[[package]]
+
name = "predicates-core"
+
version = "1.0.9"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa"
+

+
[[package]]
+
name = "predicates-tree"
+
version = "1.0.12"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c"
+
dependencies = [
+
 "predicates-core",
+
 "termtree",
+
]
+

+
[[package]]
name = "pretty_assertions"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1940,6 +2018,7 @@ version = "0.5.1"
dependencies = [
 "ansi-to-tui",
 "anyhow",
+
 "assert_cmd",
 "fuzzy-matcher",
 "git2",
 "homedir",
@@ -1949,6 +2028,7 @@ dependencies = [
 "libc",
 "log",
 "nom",
+
 "predicates",
 "pretty_assertions",
 "radicle",
 "radicle-cli",
@@ -2603,6 +2683,12 @@ dependencies = [
]

[[package]]
+
name = "termtree"
+
version = "0.5.1"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683"
+

+
[[package]]
name = "textwrap"
version = "0.16.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -3036,6 +3122,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"

[[package]]
+
name = "wait-timeout"
+
version = "0.2.0"
+
source = "registry+https://github.com/rust-lang/crates.io-index"
+
checksum = "9f200f5b12eb75f8c1ed65abd4b2db8a6e1b138a20de009dacee265a2498f3f6"
+
dependencies = [
+
 "libc",
+
]
+

+
[[package]]
name = "wasi"
version = "0.10.0+wasi-snapshot-preview1"
source = "registry+https://github.com/rust-lang/crates.io-index"
modified Cargo.toml
@@ -53,6 +53,8 @@ tui-textarea = { version = "0.7.0", default-features = false, features = ["termi
tui-tree-widget = { version = "0.23.0" }

[dev-dependencies]
+
assert_cmd = "2.0.14"
+
predicates = "3.1.0"
pretty_assertions = "^1.4.1"
radicle = { version = "0.14.0", features = ["test"]}
radicle-git-ext = { version = "0.8.0", features = ["serde"] }
modified bin/main.rs
@@ -180,8 +180,21 @@ fn run_other(command: &str, args: &[OsString]) -> Result<(), Option<anyhow::Erro
                args.to_vec(),
            );
        }
-
        command => {
-
            term::run_rad(command, &args)
-
        }
+
        command => term::run_rad(command, &args),
+
    }
+
}
+

+
#[cfg(test)]
+
mod cli {
+
    use assert_cmd::prelude::*;
+
    use std::process::Command;
+

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

+
        cmd.assert().success();
+

+
        Ok(())
    }
}
modified bin/terminal.rs
@@ -32,7 +32,7 @@ fn _run_rad(args: &[OsString]) -> Result<(), Option<anyhow::Error>> {

pub fn run_rad(command: &str, args: &[OsString]) -> Result<(), Option<anyhow::Error>> {
    let args = [vec![command.into()], args.to_vec()].concat();
-
    
+

    _run_rad(&args)
}