agentcarousel 0.2.2

Evaluate agents and skills with YAML fixtures, run cases (mock or live), and keep run rows in SQLite for reports and evidence export.
Documentation
use assert_cmd::Command;
use std::path::PathBuf;

fn workspace_root() -> PathBuf {
    PathBuf::from(env!("CARGO_MANIFEST_DIR"))
        .parent()
        .and_then(|path| path.parent())
        .map(PathBuf::from)
        .expect("workspace root")
}

#[test]
fn bundle_verify_ok_prints_for_bundle_directory() {
    let root = workspace_root();
    let assert = Command::cargo_bin("agentcarousel")
        .unwrap()
        .current_dir(&root)
        .args(["bundle", "verify", "fixtures/bundles/cmmc-assessor"])
        .assert()
        .success();
    let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
    assert!(
        stdout.contains("bundle verify: OK"),
        "expected success banner on stdout, got: {stdout:?}"
    );
}

#[test]
fn bundle_verify_ok_when_passing_bundle_manifest_json() {
    let root = workspace_root();
    let assert = Command::cargo_bin("agentcarousel")
        .unwrap()
        .current_dir(&root)
        .args([
            "bundle",
            "verify",
            "fixtures/bundles/cmmc-assessor/bundle.manifest.json",
        ])
        .assert()
        .success();
    let stdout = String::from_utf8_lossy(&assert.get_output().stdout);
    assert!(
        stdout.contains("bundle verify: OK"),
        "expected success banner on stdout, got: {stdout:?}"
    );
}

#[test]
fn agc_bundle_verify_matches_agentcarousel_binary() {
    let root = workspace_root();
    Command::cargo_bin("agc")
        .unwrap()
        .current_dir(&root)
        .args(["bundle", "verify", "fixtures/bundles/cmmc-assessor"])
        .assert()
        .success();
}