use super::errors_disk::{DISPATCH_ADD_INDEX, NAME_SETTLE_INDEX, WORKTREE_ADD_INDEX};
use super::fixtures::*;
use crate::prompt::Error;
#[test]
fn run_surfaces_a_fork_point_query_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(repo.path(), "hi", &adapter, &StubGit::failing_at(0)).unwrap_err();
assert!(matches!(err, Error::ForkPoint(_)), "got {err:?}");
}
#[test]
fn run_surfaces_governing_config_read_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(repo.path(), "hi", &adapter, &StubGit::failing_at(1)).unwrap_err();
assert!(
matches!(
err,
Error::Git {
op: "governing config",
..
}
),
"got {err:?}"
);
}
#[test]
fn run_surfaces_control_rm_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(
repo.path(),
"hi",
&adapter,
&StubGit::failing_at(WORKTREE_ADD_INDEX + 1),
)
.unwrap_err();
assert!(
matches!(
err,
Error::Git {
op: "rm control files",
..
}
),
"got {err:?}"
);
}
#[test]
fn run_surfaces_worktree_add_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(
repo.path(),
"hi",
&adapter,
&StubGit::failing_at(WORKTREE_ADD_INDEX),
)
.unwrap_err();
assert!(
matches!(
err,
Error::Git {
op: "worktree add",
..
}
),
"got {err:?}"
);
}
#[test]
fn run_surfaces_dispatch_add_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(
repo.path(),
"hi",
&adapter,
&StubGit::failing_at(DISPATCH_ADD_INDEX),
)
.unwrap_err();
assert!(matches!(err, Error::Git { op: "add", .. }));
}
#[test]
fn run_surfaces_dispatch_commit_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(
repo.path(),
"hi",
&adapter,
&StubGit::failing_at(DISPATCH_ADD_INDEX + 1),
)
.unwrap_err();
assert!(matches!(err, Error::Git { op: "commit", .. }));
}
#[test]
fn run_surfaces_name_settle_failure() {
let repo = scaffold_repo(VALID_PER_REPO_PROVIDERS_YAML, Some("body"));
let adapter = StubAdapter::happy(&happy_response_bytes());
let err = run_with_stubs(
repo.path(),
"hi",
&adapter,
&StubGit::failing_at(NAME_SETTLE_INDEX),
)
.unwrap_err();
assert!(matches!(
err,
Error::Git {
op: "settle the agent name",
..
}
));
}