use super::fixtures::*;
use crate::prompt::run;
use std::ffi::OsStr;
#[test]
fn run_under_adapter_override_skips_version_guard_and_uses_the_override() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let harness = scaffold_harness_root_with_adapter("/opt/alt-bz");
let adapter = StubAdapter::scripted([StubAdapter::reply_ok(&happy_response_bytes())]);
let git = StubGit::ok();
let (clock, id) = (FixedClock::default(), FixedIdGen);
let (sleeper, tool_executor) = (StubSleeper::default(), StubToolExecutor::ok());
run(
repo.path(),
"hi",
None,
None,
None,
crate::prompt::PinnedDocs::none(),
&valid_deps(
&adapter,
&sleeper,
&git,
&clock,
&id,
&tool_executor,
harness.path(),
),
)
.unwrap();
let invocations = adapter.observed.borrow().clone();
assert_eq!(invocations.len(), 1);
assert_eq!(invocations[0].0, OsStr::new("/opt/alt-bz"));
assert_eq!(invocations[0].1, vec!["--json", "--provider", "anthropic"]);
}
#[test]
fn run_under_injected_adapter_target_skips_version_guard_and_uses_the_target() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let harness = scaffold_harness_root();
let adapter = StubAdapter::scripted([StubAdapter::reply_ok(&happy_response_bytes())]);
let git = StubGit::ok();
let (clock, id) = (FixedClock::default(), FixedIdGen);
let (sleeper, tool_executor) = (StubSleeper::default(), StubToolExecutor::ok());
let injected = std::path::PathBuf::from("/opt/host-bz");
let mut deps = valid_deps(
&adapter,
&sleeper,
&git,
&clock,
&id,
&tool_executor,
harness.path(),
);
deps.adapter_target = Some(&injected);
run(
repo.path(),
"hi",
None,
None,
None,
crate::prompt::PinnedDocs::none(),
&deps,
)
.unwrap();
let invocations = adapter.observed.borrow().clone();
assert_eq!(invocations.len(), 1);
assert_eq!(invocations[0].0, OsStr::new("/opt/host-bz"));
assert_eq!(invocations[0].1, vec!["--json", "--provider", "anthropic"]);
}