- Every PR: lint, unit tests across the runner's cores (pytest-xdist), 16 property walks from a seed that moves with the run number, integration tests, and the end-to-end smoke tests (the slice, a conversation filed as work, a question; `smoke` marker). - A PR labelled e2e:full, a push to main, or a manual run: all 48 walks and the whole end-to-end suite. Adding e2e:full to a PR runs it; any other label runs nothing. - A published release runs the full set before its image is built. - The walk's seeds come from NISSE_WALK_SEEDS / NISSE_WALK_FIRST (48 from 0 by default). Measured here: the unit tier on 2 workers took 3m49s against 6-8 minutes serially. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPQ14L3LikyefCMFBqEbKE
35 lines
950 B
TOML
35 lines
950 B
TOML
[tool.uv.workspace]
|
|
members = ["nisse-core", "nisse-dev", "nisse-ops"]
|
|
|
|
[dependency-groups]
|
|
dev = [
|
|
"pytest>=8",
|
|
"pytest-xdist>=3",
|
|
"ruff>=0.6",
|
|
]
|
|
|
|
[tool.pytest.ini_options]
|
|
testpaths = [
|
|
"nisse-core/tests",
|
|
"nisse-dev/tests",
|
|
"nisse-ops/tests",
|
|
"tests",
|
|
]
|
|
# The seed is a test project's own code, pushed to each run's repository.
|
|
addopts = "--strict-markers --ignore=tests/integration/seed"
|
|
markers = [
|
|
"integration: end-to-end tests that exercise installed entry points or external services",
|
|
"e2e: the whole agent against real services, run after each milestone (scripts/e2e.sh)",
|
|
"smoke: the end-to-end tests every PR runs; the rest on e2e:full and before a release",
|
|
]
|
|
|
|
[tool.ruff]
|
|
target-version = "py312"
|
|
extend-exclude = ["tests/integration/seed"] # a test project's own code
|
|
|
|
[tool.ruff.lint]
|
|
extend-select = ["I"]
|
|
|
|
[tool.ruff.lint.isort]
|
|
known-first-party = ["nisse_core", "nisse_dev", "nisse_ops"]
|