feat: update AI automation agents, add reviewer agent, fix leaks, enhance CI
CI / build-and-test (push) Successful in 53s
CI / sanitizer (push) Successful in 1m2s
CI / clang-tidy (push) Successful in 34s
CI / build-and-test (pull_request) Successful in 53s
CI / sanitizer (pull_request) Successful in 1m2s
CI / clang-tidy (pull_request) Successful in 35s
CI / build-and-test (push) Successful in 53s
CI / sanitizer (push) Successful in 1m2s
CI / clang-tidy (push) Successful in 34s
CI / build-and-test (pull_request) Successful in 53s
CI / sanitizer (pull_request) Successful in 1m2s
CI / clang-tidy (pull_request) Successful in 35s
Agents: - cmake-expert: fix stale CMake version (4.1 -> 3.22), add OpenSSL/xxHash deps - integrator: fix stale test.py references to tests/integration/, update CI docs - test-writer: update integration test patterns for modular test structure - reviewer: new comprehensive PR reviewer (code, build, CI, docs, quality) Bug fixes: - delta.c: set instructions[i].type = DELTA_INSTR_LITERAL in deserialize - scanner.c: free ArrayList when directory_scanner_next returns NULL CI: - Add sanitizer job (ASan + UBSan) with LSAN suppressions for pre-existing leaks - Add clang-tidy job with proper warning/error detection - Remove || true masking (fixes now make sanitizer useful) Cleanup: - gitignore build-asan/ - .lsan-suppressions.txt for known CLI config leaks
This commit is contained in:
@@ -165,34 +165,28 @@ int main() {
|
||||
|
||||
## Integration Test Patterns
|
||||
|
||||
When writing integration tests (Python-based), follow the pattern in `test.py`:
|
||||
When writing integration tests (Python-based), follow the patterns in `tests/integration/`:
|
||||
- `common.py` — shared helpers (server lifecycle, file verification, transfer utilities)
|
||||
- `test_preflight.py` — preflight checks and configuration validation
|
||||
- `test_tcp.py` — TCP transport tests
|
||||
- `test_ssh.py` — SSH transport tests
|
||||
- `test_tls.py` — TLS transport tests
|
||||
- `test_features.py` — feature-specific tests (delete, exclude, incremental, etc.)
|
||||
|
||||
Use `conftest.py` fixtures for server setup/teardown.
|
||||
|
||||
### Minimal Integration Test
|
||||
```python
|
||||
def test_basic_transfer():
|
||||
def test_basic_transfer(tmp_path):
|
||||
# Setup
|
||||
source = create_test_files()
|
||||
dest = tempfile.mkdtemp()
|
||||
|
||||
# Start server
|
||||
server = subprocess.Popen(["./build/server"], ...)
|
||||
time.sleep(0.5)
|
||||
|
||||
# Run client
|
||||
result = subprocess.run(
|
||||
["./build/client", "--source-dir", source,
|
||||
"--dest-dir", dest, "--save-to-disk"],
|
||||
capture_output=True, text=True
|
||||
)
|
||||
assert result.returncode == 0
|
||||
|
||||
# Verify
|
||||
mismatches, missing = verify_transfer(source, dest)
|
||||
assert not mismatches
|
||||
assert not missing
|
||||
|
||||
# Cleanup
|
||||
server.terminate()
|
||||
source = tmp_path / "src"
|
||||
dest = tmp_path / "dst"
|
||||
source.mkdir()
|
||||
dest.mkdir()
|
||||
(source / "file.txt").write_text("test content")
|
||||
|
||||
# Start server and run client (use fixtures from conftest.py)
|
||||
# Verify with helper from common.py
|
||||
```
|
||||
|
||||
### Edge Case Tests to Write
|
||||
|
||||
Reference in New Issue
Block a user