baa1f58ad0
Stabilize node status, cluster-wide Ceph OSD ids, and QEMU cpu utilization so status/list no longer 500 on model strings; align pulumi defaults to pve1; add bilingual testing docs with the 2026-07-18 ci-all + pulumi-tests pass.
2.1 KiB
2.1 KiB
Language / Язык: English | Русский
Testing
How the repository is tested and where each suite lives.
Layout
| Location | Role |
|---|---|
tests/unit/ |
Offline unit tests (handlers, contracts, seed, workers, …) |
tests/integration/ |
PostgreSQL-backed tests (migrations, durable task leases) |
tests/compatibility/ |
Surface probe, group smoke, proxmoxer HTTPS, verified-surface ledgers |
pulumi-tests/ |
Pulumi surface matrix (majors 6–9) + pulumi-proxmoxve lifecycle; HTML report |
Seed used by most suites: app/simulation/seed.py (lab for in-process surface CI, small for Compose / Pulumi).
Make targets
make test-unit # pytest: unit only
make test-integration # pytest -m integration (needs Postgres)
make test-surface # every declared method on majors 6–9
make test-compatibility # proxmoxer smoke (Compose --profile tls)
make ci # ruff + mypy + offline pytest + surface
make ci-all # ci + remaining integration + proxmoxer
make pulumi-tests # Pulumi surface + lifecycle; writes HTML report
GitHub Actions on push/PR to main runs make ci plus Compose/Helm validation.
Run make ci-all and make pulumi-tests locally before larger API changes.
Pulumi report (after a suite run):
pulumi-tests/pulumi/reports/report.html — see pulumi-tests/README.md.
Latest local results (2026-07-18)
Full unrestricted run on this checkout:
| Gate | Result |
|---|---|
make ci-all |
PASS (exit 0) |
| — unit (offline pytest) | 193 passed |
| — surface probe (majors 6–9) | PASS |
| — integration | 12 passed |
| — proxmoxer compatibility | PASS |
make pulumi-tests |
PASS (exit 0), suite ~28s |
— lifecycle (pulumi-proxmoxve) |
PASS |
| — surface PVE 6.4-15 / 7.4-16 / 8.4.5 / 9.2.3 | PASS, critical=0 |
| — coverage | 2324 / 2324 methods across majors 6–9 |
Report artifact: pulumi-tests/pulumi/reports/report.html (also results.json, junit.xml).