eb2d7a0f37
CI was running only test_plugin_contract.py and test_version_consistency.py (2 of 84 test files), masking 13 rotted tests across 4 clusters. The suite is fully offline-safe (1402 tests in ~7s without network), so the narrow scope wasn't gating integration flakiness; it was just stale. validate.yml now runs `uv run pytest` against the full suite. Engine fix: store.findings_from_report is rerank-first. ranked_candidates is the primary persistence path; hackernews/polymarket are unconditionally supplemented from items_by_source because they rank poorly but matter for watchlists. When ranked_candidates was empty (rerank failed or skipped), reddit, x, and every other source were silently dropped. The supplement loop now falls back to all sources only when ranked_candidates is empty; the normal path is unchanged. Test repairs: - test_store.py (6) + test_watchlist_commands.py (2): cascade from the engine fix - test_get_new_findings_filters_by_date (latent): local-time vs SQLite UTC flake — switched to datetime.now(timezone.utc) - TestPollDeviceAuth (3): mock_time.time side_effect lists too short after impl added a last_reminder call — padded timeout test, pinned others to return_value=0 (loops terminate via urlopen, not the clock) - test_bare_run_emits_web_promo: engine reads ~/.config/last30days/.env, so a contributor's saved EXA/PARALLEL key made grounding "available" and suppressed the web promo. Also missing X made the "x" promo preempt "web". Set LAST30DAYS_CONFIG_DIR="", subprocess cwd=tmpdir, XAI_API_KEY stub.
27 lines
397 B
YAML
27 lines
397 B
YAML
name: Validate
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- main
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
tests:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install uv
|
|
uses: astral-sh/setup-uv@v5
|
|
|
|
- name: Set up Python
|
|
run: uv python install 3.12
|
|
|
|
- name: Run test suite
|
|
run: uv run pytest
|