krait-cli 0.1.2

Code intelligence CLI for AI agents
Documentation
use assert_cmd::cargo::cargo_bin_cmd;
use predicates::prelude::*;

fn krait() -> assert_cmd::Command {
    cargo_bin_cmd!("krait")
}

#[test]
fn krait_help_shows_all_commands() {
    krait()
        .arg("--help")
        .assert()
        .success()
        .stdout(predicate::str::contains("find"))
        .stdout(predicate::str::contains("read"))
        .stdout(predicate::str::contains("edit"))
        .stdout(predicate::str::contains("status"))
        .stdout(predicate::str::contains("daemon"))
        .stdout(predicate::str::contains("init"))
        .stdout(predicate::str::contains("check"))
        .stdout(predicate::str::contains("list"));
}

#[test]
fn krait_version() {
    krait()
        .arg("--version")
        .assert()
        .success()
        .stdout(predicate::str::contains("krait"));
}

#[test]
fn krait_find_subcommands_in_help() {
    krait()
        .args(["find", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("symbol"))
        .stdout(predicate::str::contains("refs"));
}

#[test]
fn krait_read_subcommands_in_help() {
    krait()
        .args(["read", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("file"))
        .stdout(predicate::str::contains("symbol"));
}

#[test]
fn krait_edit_subcommands_in_help() {
    krait()
        .args(["edit", "--help"])
        .assert()
        .success()
        .stdout(predicate::str::contains("replace"))
        .stdout(predicate::str::contains("insert-after"))
        .stdout(predicate::str::contains("insert-before"));
}

#[test]
fn krait_unknown_command_fails() {
    krait().arg("nonexistent").assert().failure();
}