KeiSeiKit-1.0/_primitives/_rust/kei-agent-runtime/tests/command_verify_smoke.rs
Parfii-bot 0be354a920 KeiSeiKit-public — clean state
Single-commit clean baseline after security scrub of niche-tells,
project codenames, internal jargon, and contributor-email leaks.

Contents:
- 100 Rust crates (_primitives/_rust/)
- 37 agent manifests (_manifests/) + generated specs (_generated/)
- 67 user-invocable skills (skills/)
- 33 hooks (hooks/)
- Composition blocks (_blocks/)
- Documentation (docs/, README.md)
- TS adapter packages (_ts_packages/)
- Assembler (_assembler/)
- Roles (_roles/)
- Templates (_templates/)
- Forgejo CI (.forgejo/)

Author: Denis Parfionovich <info@greendragon.info>

License: see LICENSE.
2026-05-01 12:09:03 +08:00

131 lines
3.7 KiB
Rust

//! Smoke tests for the generic `CommandVerify` (Layer D convergence).
//!
//! Covers default exit-code mapper (pass + fail), custom runner path,
//! and WorkDir resolution.
use kei_agent_runtime::capability::{Capability, RunMode, TaskSpec, VerifyContext, VerifyResult};
use kei_agent_runtime::verifies::command_verify::{CommandVerify, WorkDir};
use std::path::Path;
use tempfile::TempDir;
fn vctx<'a>(task: &'a TaskSpec, worktree: &'a Path, agent_id: &'a str) -> VerifyContext<'a> {
VerifyContext {
agent_id,
task,
worktree_path: worktree,
main_repo: worktree,
run_mode: RunMode::Worktree,
simulated_merge_path: None,
}
}
const TRUE_VERIFY: CommandVerify = CommandVerify {
name: "test::true",
program: "true",
base_args: &[],
work_dir: WorkDir::RunDir,
expected_exit: 0,
fail_reason: "true somehow failed",
custom_runner: None,
arg_builder: None,
result_mapper: None,
};
const FALSE_VERIFY: CommandVerify = CommandVerify {
name: "test::false",
program: "false",
base_args: &[],
work_dir: WorkDir::RunDir,
expected_exit: 0,
fail_reason: "false returned non-zero",
custom_runner: None,
arg_builder: None,
result_mapper: None,
};
#[test]
fn default_runner_passes_on_zero_exit() {
let tmp = TempDir::new().unwrap();
let task = TaskSpec::default();
let ctx = vctx(&task, tmp.path(), "t");
assert_eq!(TRUE_VERIFY.verify(&ctx), VerifyResult::Pass);
}
#[test]
fn default_runner_fails_on_nonzero_exit() {
let tmp = TempDir::new().unwrap();
let task = TaskSpec::default();
let ctx = vctx(&task, tmp.path(), "t");
match FALSE_VERIFY.verify(&ctx) {
VerifyResult::Fail { .. } => {}
other => panic!("expected Fail, got {other:?}"),
}
}
#[test]
fn custom_runner_is_invoked() {
const MARKER_VERIFY: CommandVerify = CommandVerify {
name: "test::custom",
program: "/does/not/matter",
base_args: &[],
work_dir: WorkDir::RunDir,
expected_exit: 0,
fail_reason: "",
custom_runner: Some(|_cv, _ctx| VerifyResult::Pass),
arg_builder: None,
result_mapper: None,
};
let tmp = TempDir::new().unwrap();
let task = TaskSpec::default();
let ctx = vctx(&task, tmp.path(), "t");
assert_eq!(MARKER_VERIFY.verify(&ctx), VerifyResult::Pass);
}
#[test]
fn workspace_root_resolves_to_primitives_rust_when_present() {
let tmp = TempDir::new().unwrap();
let prims = tmp.path().join("_primitives/_rust");
std::fs::create_dir_all(&prims).unwrap();
let cv = CommandVerify {
name: "test::dir",
program: "true",
base_args: &[],
work_dir: WorkDir::WorkspaceRoot,
expected_exit: 0,
fail_reason: "",
custom_runner: None,
arg_builder: None,
result_mapper: None,
};
let task = TaskSpec::default();
let ctx = vctx(&task, tmp.path(), "t");
let resolved = cv.resolve_dir(&ctx);
assert_eq!(resolved, prims);
}
#[test]
fn workspace_root_falls_back_to_run_dir() {
let tmp = TempDir::new().unwrap();
let cv = CommandVerify {
name: "test::dir-fallback",
program: "true",
base_args: &[],
work_dir: WorkDir::WorkspaceRoot,
expected_exit: 0,
fail_reason: "",
custom_runner: None,
arg_builder: None,
result_mapper: None,
};
let task = TaskSpec::default();
let ctx = vctx(&task, tmp.path(), "t");
let resolved = cv.resolve_dir(&ctx);
assert_eq!(resolved, tmp.path().to_path_buf());
}
#[test]
fn cargo_check_green_const_is_registered() {
use kei_agent_runtime::registry;
let c = registry::get_verify("quality::cargo-check-green").unwrap();
assert_eq!(c.name(), "quality::cargo-check-green");
}