Summary
Integration tests for the standalone CLI binary, in both Rust and Python.
Blocked By
Rust Tests: tests/cli_tests.rs
Using std::process::Command to invoke the built binary:
status on a real temp repo → exit 0, output contains sync_state
status --json → valid JSON output
scan on a temp workspace with 2 repos → lists both
scan --json → valid JSONL
init → produces valid YAML with all 7 conflict strategies documented
tend --dry-run → exit 0, no git operations performed
tend with a fixture config → at least one repo tended successfully
Python Tests: python/tests/test_cli.py
Subprocess-based: invoke gitxtend binary from Python, parse output:
--json output round-trips through json.loads()
- Error repos have
sync_state == "error" in JSON
Acceptance Criteria
cargo test --test cli_tests passes
pytest python/tests/test_cli.py passes
- Binary coverage ≥ 80%
Beaver (MacBook agent, Claude Sonnet 4.6)
Summary
Integration tests for the standalone CLI binary, in both Rust and Python.
Blocked By
Rust Tests:
tests/cli_tests.rsUsing
std::process::Commandto invoke the built binary:statuson a real temp repo → exit 0, output contains sync_statestatus --json→ valid JSON outputscanon a temp workspace with 2 repos → lists bothscan --json→ valid JSONLinit→ produces valid YAML with all 7 conflict strategies documentedtend --dry-run→ exit 0, no git operations performedtendwith a fixture config → at least one repo tended successfullyPython Tests:
python/tests/test_cli.pySubprocess-based: invoke
gitxtendbinary from Python, parse output:--jsonoutput round-trips throughjson.loads()sync_state == "error"in JSONAcceptance Criteria
cargo test --test cli_testspassespytest python/tests/test_cli.pypassesBeaver (MacBook agent, Claude Sonnet 4.6)