Skip to content

Commit 71e7d0a

Browse files
committed
ci: auto-discover tests and add lint gate; make suite hermetic; streamline README
- CI now runs pytest against the whole tests/ directory, so a new test file can never be silently excluded by a stale hardcoded matrix - Add a ruff lint job (syntax errors, undefined names, unused code) with configuration in pyproject.toml - Add tests/conftest.py stubbing the Ollama setup path so the suite is fast and network-independent, and RA_SKIP_SETUP_CHECK so subprocess tests and CI containers can skip environment setup explicitly - Rewrite the README at a standard level: condensed configuration reference, single architecture diagram, troubleshooting trimmed to essentials, license section added
1 parent 4f0f171 commit 71e7d0a

6 files changed

Lines changed: 148 additions & 436 deletions

File tree

.github/workflows/ci.yml

Lines changed: 25 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -17,59 +17,30 @@ env:
1717
PIPENV_DONT_LOAD_ENV: "1"
1818

1919
jobs:
20-
test:
21-
name: Tests (${{ matrix.scope }})
20+
lint:
21+
name: Lint
2222
runs-on: ubuntu-latest
23-
timeout-minutes: 15
24-
25-
strategy:
26-
fail-fast: false
27-
matrix:
28-
include:
29-
- scope: core
30-
paths: >-
31-
tests/test_config_settings.py
32-
tests/test_pipeline_core.py
33-
tests/test_models.py
34-
tests/test_paper_adapters.py
35-
tests/test_memory.py
36-
tests/test_progress_reporter.py
37-
tests/test_message_formatting.py
23+
timeout-minutes: 5
3824

39-
- scope: retrieval
40-
paths: >-
41-
tests/test_retrieval_stage.py
42-
tests/test_export.py
43-
tests/test_reporting.py
44-
tests/test_embeddings.py
45-
tests/test_providers.py
25+
steps:
26+
- name: Checkout
27+
uses: actions/checkout@v4
4628

47-
- scope: research
48-
paths: >-
49-
tests/test_research_stages.py
50-
tests/test_research_quality.py
51-
tests/test_synthesis.py
52-
tests/test_resolve_llm_features.py
29+
- name: Setup Python
30+
uses: actions/setup-python@v5
31+
with:
32+
python-version: "3.13"
5333

54-
- scope: cli
55-
paths: >-
56-
tests/test_interactive_mode.py
57-
tests/test_input_handler.py
58-
tests/test_main_mode_detection.py
59-
tests/test_signal_handling.py
60-
tests/test_interactive_filters.py
61-
tests/test_complete_workflow.py
34+
- name: Install ruff
35+
run: pip install ruff
6236

63-
- scope: llm
64-
paths: >-
65-
tests/test_llm_providers.py
66-
tests/test_model_selection.py
67-
tests/test_graceful_response_handling.py
68-
tests/test_json_parsing_bug_exploration.py
69-
tests/test_json_parsing_preservation.py
37+
- name: Ruff check
38+
run: ruff check src tests setups
7039

71-
- scope: api
72-
paths: tests/test_phase3_extensibility.py
40+
test:
41+
name: Tests
42+
runs-on: ubuntu-latest
43+
timeout-minutes: 20
7344

7445
steps:
7546
- name: Checkout
@@ -78,20 +49,21 @@ jobs:
7849
- name: Setup Pipenv
7950
uses: ./.github/actions/setup-pipenv
8051

52+
# Auto-discovers every test file so new tests can never be silently skipped.
8153
- name: Run tests
82-
run: pipenv run pytest -m "not slow" --tb=short -q ${{ matrix.paths }}
54+
run: pipenv run pytest tests/ -m "not slow" --tb=short -q
8355

8456
ci-complete:
8557
name: CI complete
8658
runs-on: ubuntu-latest
87-
needs: test
59+
needs: [lint, test]
8860
if: always()
8961

9062
steps:
91-
- name: Verify all scopes passed
63+
- name: Verify all jobs passed
9264
run: |
93-
if [ "${{ needs.test.result }}" != "success" ]; then
94-
echo "One or more test scopes failed."
65+
if [ "${{ needs.lint.result }}" != "success" ] || [ "${{ needs.test.result }}" != "success" ]; then
66+
echo "One or more CI jobs failed."
9567
exit 1
9668
fi
97-
echo "All test scopes passed."
69+
echo "All CI jobs passed."

0 commit comments

Comments
 (0)