continue
This commit is contained in:
@@ -16,13 +16,17 @@ from cross_eval.agent import (
|
||||
)
|
||||
from cross_eval.models import AgentConfig, AgentResult, ExecutionConfig, PipelineConfig, StepConfig
|
||||
from cross_eval.pipeline import (
|
||||
_apply_worktree_inputs_to_base,
|
||||
_commit_base_repo_paths,
|
||||
_copy_inputs_to_worktree,
|
||||
_commit_iteration,
|
||||
_execute_parallel_batch,
|
||||
_execute_step,
|
||||
_finalize_worktree,
|
||||
_format_runtime_error_markdown,
|
||||
_load_inputs,
|
||||
_maybe_save_step_transcript,
|
||||
_refresh_inputs,
|
||||
_snapshot_repo_state,
|
||||
)
|
||||
from cross_eval.runtime_env import (
|
||||
@@ -155,6 +159,110 @@ class TestWorktreeInputMapping(unittest.TestCase):
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
def test_plan_review_docs_ref_maps_to_worktree_and_refreshes_docs(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
repo = Path(tmpdir) / "repo"
|
||||
repo.mkdir()
|
||||
_init_git_repo(repo)
|
||||
docs_dir = repo / "plans"
|
||||
docs_dir.mkdir()
|
||||
(docs_dir / "A.md").write_text("A v1\n", encoding="utf-8")
|
||||
subprocess.run(["git", "add", "."], cwd=repo, capture_output=True, check=True)
|
||||
subprocess.run(
|
||||
["git", "commit", "-m", "add docs"],
|
||||
cwd=repo,
|
||||
capture_output=True,
|
||||
check=True,
|
||||
)
|
||||
|
||||
config = PipelineConfig(
|
||||
inputs={
|
||||
"docs": "stale snapshot",
|
||||
"docs_ref": docs_dir,
|
||||
},
|
||||
preset_name="plan-review",
|
||||
)
|
||||
input_contents = _load_inputs(config)
|
||||
self.assertIn("A.md", input_contents["docs"])
|
||||
|
||||
worktree_dir = Path(tmpdir) / "wt"
|
||||
branch = "cross-eval/test-docs-ref"
|
||||
worktree_path, _ = create_worktree(repo, worktree_dir, branch)
|
||||
try:
|
||||
_copy_inputs_to_worktree(config, worktree_path, base_cwd=repo)
|
||||
self.assertEqual(config.inputs["docs_ref"], worktree_path / "plans")
|
||||
|
||||
updated = worktree_path / "plans" / "A.md"
|
||||
updated.write_text("A v2\n", encoding="utf-8")
|
||||
_refresh_inputs(config, input_contents)
|
||||
self.assertIn("A.md", input_contents["docs"])
|
||||
self.assertIn("A v2", input_contents["docs"])
|
||||
finally:
|
||||
remove_worktree(base_cwd=repo, work_dir=worktree_path)
|
||||
subprocess.run(
|
||||
["git", "branch", "-D", branch],
|
||||
cwd=repo,
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
def test_worktree_doc_changes_apply_back_and_commit_in_base_repo(self) -> None:
|
||||
with tempfile.TemporaryDirectory() as tmpdir:
|
||||
repo = Path(tmpdir) / "repo"
|
||||
repo.mkdir()
|
||||
_init_git_repo(repo)
|
||||
docs_dir = repo / "plans"
|
||||
docs_dir.mkdir()
|
||||
doc_path = docs_dir / "A.md"
|
||||
doc_path.write_text("A v1\n", encoding="utf-8")
|
||||
subprocess.run(["git", "add", "."], cwd=repo, capture_output=True, check=True)
|
||||
subprocess.run(
|
||||
["git", "commit", "-m", "add docs"],
|
||||
cwd=repo,
|
||||
capture_output=True,
|
||||
check=True,
|
||||
)
|
||||
|
||||
config = PipelineConfig(
|
||||
inputs={"docs_ref": docs_dir},
|
||||
preset_name="plan-review",
|
||||
)
|
||||
original_inputs = {"docs_ref": docs_dir}
|
||||
|
||||
worktree_dir = Path(tmpdir) / "wt"
|
||||
branch = "cross-eval/test-apply-back"
|
||||
worktree_path, _ = create_worktree(repo, worktree_dir, branch)
|
||||
try:
|
||||
_copy_inputs_to_worktree(config, worktree_path, base_cwd=repo)
|
||||
worktree_doc = config.inputs["docs_ref"] / "A.md"
|
||||
worktree_doc.write_text("A v2\n", encoding="utf-8")
|
||||
|
||||
restored = _apply_worktree_inputs_to_base(
|
||||
config, original_inputs, cwd=repo,
|
||||
)
|
||||
self.assertEqual(restored, [docs_dir])
|
||||
self.assertEqual(doc_path.read_text(encoding="utf-8"), "A v2\n")
|
||||
|
||||
committed = _commit_base_repo_paths(
|
||||
repo, restored, "cross-eval: plan-review (FAIL)",
|
||||
)
|
||||
self.assertTrue(committed)
|
||||
|
||||
log = subprocess.run(
|
||||
["git", "log", "-1", "--pretty=%s"],
|
||||
cwd=repo,
|
||||
capture_output=True,
|
||||
text=True,
|
||||
check=True,
|
||||
)
|
||||
self.assertEqual(log.stdout.strip(), "cross-eval: plan-review (FAIL)")
|
||||
finally:
|
||||
remove_worktree(base_cwd=repo, work_dir=worktree_path)
|
||||
subprocess.run(
|
||||
["git", "branch", "-D", branch],
|
||||
cwd=repo,
|
||||
capture_output=True,
|
||||
)
|
||||
|
||||
def test_classify_unknown_failure(self) -> None:
|
||||
failure_type, suggested_action = _classify_agent_failure("weird crash")
|
||||
self.assertEqual(failure_type, "UNKNOWN")
|
||||
|
||||
Reference in New Issue
Block a user