fabro/crates/attractor/tests/cli.rs
Bryan Helmkamp 3a70e6711c serve
2026-02-23 12:20:48 -05:00

119 lines
2.7 KiB
Rust

use assert_cmd::Command;
use predicates::prelude::*;
#[allow(deprecated)]
fn attractor() -> Command {
Command::cargo_bin("attractor").unwrap()
}
// -- validate ----------------------------------------------------------------
#[test]
fn validate_simple() {
attractor()
.args(["validate", "../../test/simple.dot"])
.assert()
.success()
.stderr(predicate::str::contains("Validation: OK"));
}
#[test]
fn validate_branching() {
attractor()
.args(["validate", "../../test/branching.dot"])
.assert()
.success()
.stderr(predicate::str::contains("Validation: OK"));
}
#[test]
fn validate_conditions() {
attractor()
.args(["validate", "../../test/conditions.dot"])
.assert()
.success()
.stderr(predicate::str::contains("Validation: OK"));
}
#[test]
fn validate_parallel() {
attractor()
.args(["validate", "../../test/parallel.dot"])
.assert()
.success()
.stderr(predicate::str::contains("Validation: OK"));
}
#[test]
fn validate_styled() {
attractor()
.args(["validate", "../../test/styled.dot"])
.assert()
.success()
.stderr(predicate::str::contains("Validation: OK"));
}
#[test]
fn validate_invalid() {
attractor()
.args(["validate", "../../test/invalid.dot"])
.assert()
.failure();
}
// -- serve -------------------------------------------------------------------
#[test]
fn serve_help() {
attractor()
.args(["serve", "--help"])
.assert()
.success()
.stdout(predicate::str::contains("--port"))
.stdout(predicate::str::contains("--host"))
.stdout(predicate::str::contains("--dry-run"))
.stdout(predicate::str::contains("--model"))
.stdout(predicate::str::contains("--provider"));
}
// -- run --dry-run -----------------------------------------------------------
#[test]
fn dry_run_simple() {
attractor()
.args(["run", "--dry-run", "--auto-approve", "../../test/simple.dot"])
.assert()
.success();
}
#[test]
fn dry_run_branching() {
attractor()
.args(["run", "--dry-run", "--auto-approve", "../../test/branching.dot"])
.assert()
.success();
}
#[test]
fn dry_run_conditions() {
attractor()
.args(["run", "--dry-run", "--auto-approve", "../../test/conditions.dot"])
.assert()
.success();
}
#[test]
fn dry_run_parallel() {
attractor()
.args(["run", "--dry-run", "--auto-approve", "../../test/parallel.dot"])
.assert()
.success();
}
#[test]
fn dry_run_styled() {
attractor()
.args(["run", "--dry-run", "--auto-approve", "../../test/styled.dot"])
.assert()
.success();
}