forked from cleveragents/cleveragents-core
72e0db2592
All 8 nox-running CI jobs in .forgejo/workflows/ci.yml now capture
stdout+stderr to build/nox-<job>-output.log via `2>&1 | tee` and upload
the log as a named Forgejo artifact (if: always(), retention-days: 30).
Artifact names follow the pattern ci-logs-<job>:
ci-logs-lint, ci-logs-typecheck, ci-logs-security, ci-logs-quality,
ci-logs-unit-tests, ci-logs-integration-tests, ci-logs-e2e-tests,
ci-logs-coverage
Seven agent definitions updated with a CI Log Artifacts section:
ca-pr-checker.md: artifact table + curl download instructions; Step 2
now downloads the relevant artifact before dispatching fix subagents.
ca-lint-fixer.md, ca-typecheck-fixer.md, ca-unit-test-runner.md,
ca-integration-test-runner.md, ca-coverage-checker.md,
ca-pr-self-reviewer.md: each receives a section explaining which
artifact corresponds to its domain and how to use it.
Design notes:
- tee (not redirect) preserves output in CI job logs AND captures to file
- if: always() ensures artifacts are available even when the job fails
- Multi-session jobs (lint, security) use tee -a to append to one file
- Existing coverage-reports artifact preserved alongside ci-logs-coverage
ISSUES CLOSED: #2750
108 lines
3.4 KiB
Markdown
108 lines
3.4 KiB
Markdown
---
|
|
description: >
|
|
Runs nox -e unit_tests (Behave) across the entire codebase and fixes any
|
|
test failures. Distinguishes between obsolete tests and genuine bugs.
|
|
Iterates until all unit tests pass. Reads project rules via ca-ref-reader
|
|
before starting.
|
|
mode: subagent
|
|
hidden: true
|
|
temperature: 0.2
|
|
model: anthropic/claude-sonnet-4-6
|
|
color: warning
|
|
permission:
|
|
edit: allow
|
|
bash:
|
|
"*": allow
|
|
task:
|
|
"*": deny
|
|
"ca-ref-reader": allow
|
|
---
|
|
|
|
# CleverAgents Unit Test Runner
|
|
|
|
You run the Behave unit test suite and fix any failures.
|
|
|
|
## Setup
|
|
|
|
You will be given:
|
|
- A **working directory** path
|
|
- Optionally, **context about recent changes** (what was implemented/modified)
|
|
|
|
All file operations and bash commands MUST execute in the given working
|
|
directory.
|
|
|
|
## Required Reading
|
|
|
|
All work must strictly adhere to **`CONTRIBUTING.md`**, the definitive guide
|
|
for coding standards, testing requirements, and quality gates. Key rules:
|
|
- All unit tests use **Behave BDD** (never pytest/xUnit).
|
|
- Run via `nox -s unit_tests` — never invoke behave directly.
|
|
- Test failures are **blocking** — resolve before proceeding.
|
|
- Follow the **BDD Test Organization Guidelines** for step file structure.
|
|
- Follow the **TDD Issue Test Tags** system for bug-related tests.
|
|
|
|
## CI Log Artifacts
|
|
|
|
When invoked after a CI failure, you may be provided with the contents of
|
|
the `ci-logs-unit-tests` artifact (log file: `build/nox-unit-tests-output.log`).
|
|
This artifact contains the complete stdout/stderr output from the `unit_tests`
|
|
nox session (Behave) as it ran in CI.
|
|
|
|
**If artifact log content is provided:** Read it first to identify the
|
|
failing scenarios, step definitions, and error messages before running nox
|
|
locally. This avoids a redundant nox run and gives you precise failure context.
|
|
|
|
**If no artifact content is provided:** Proceed directly to Step 1 below.
|
|
|
|
## Process
|
|
|
|
### Step 1: Run Unit Tests
|
|
```bash
|
|
nox -e unit_tests
|
|
```
|
|
|
|
### Step 2: If Tests Fail
|
|
|
|
For each failing test, determine the cause:
|
|
|
|
**Case A: Obsolete Test (Intentional Behavior Change)**
|
|
The system is being redesigned substantially. If a test fails because the
|
|
behavior has **intentionally changed** per the specification:
|
|
- Update the test to match the new correct behavior, OR
|
|
- Remove the test if it is completely irrelevant.
|
|
|
|
**Case B: Genuine Bug**
|
|
If the test is still valid and tests behavior that should still work:
|
|
- Fix the **implementation code**, not the test.
|
|
- The test is correct; the code has a bug.
|
|
|
|
**How to decide**: Read `docs/specification.md` for the expected behavior. If
|
|
the spec says the behavior should differ from what the test expects, update
|
|
the test. If the spec agrees with the test, fix the code.
|
|
|
|
3. **Re-run unit tests**:
|
|
```bash
|
|
nox -e unit_tests
|
|
```
|
|
4. **Repeat** until all unit tests pass.
|
|
|
|
### Step 3: If Tests Pass
|
|
Report success.
|
|
|
|
## Important Rules
|
|
|
|
- Fix ALL test failures, even those unrelated to your current work.
|
|
**Always assume nox was completely passing before your changes.**
|
|
- All unit tests use Behave under `features/`. NEVER write pytest-style tests.
|
|
- Mocking code belongs ONLY in `features/mocks/`.
|
|
- Ensure test fixes do not reduce coverage below 97%.
|
|
|
|
## Return Value
|
|
|
|
Report back with:
|
|
- Whether tests passed on the first run
|
|
- Number of failures found and fixed
|
|
- For each failure: whether it was an obsolete test or a genuine bug
|
|
- Files modified (tests and/or implementation code)
|
|
- Final test results
|