Skip to content

Move DISCO queue to core #303

Move DISCO queue to core

Move DISCO queue to core #303

Workflow file for this run

name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
jobs:
test-core:
name: Core Tests (No Optional Deps)
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install core dependencies only
run: |
pip install uv
uv sync --group dev
- name: Run core tests
run: uv run coverage run --parallel-mode -m pytest -m core -v
- name: Upload coverage data
if: matrix.python-version == '3.12'
uses: actions/upload-artifact@v4
with:
name: coverage-core
path: .coverage.*
include-hidden-files: true
test-benchmark:
name: Benchmark Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies
run: |
pip install uv
uv sync --all-extras --group dev
- name: Run benchmark tests
run: uv run coverage run --parallel-mode -m pytest -m "benchmark and not (slow or live)" -v
- name: Upload coverage data
if: matrix.python-version == '3.12'
uses: actions/upload-artifact@v4
with:
name: coverage-benchmark
path: .coverage.*
include-hidden-files: true
test-core-optional:
name: Core Tests (With Optional Deps)
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install all dependencies
run: |
pip install uv
uv sync --all-extras --group dev
- name: Run core tests with optional deps
run: uv run coverage run --parallel-mode -m pytest -m core -v
- name: Upload coverage data
if: matrix.python-version == '3.12'
uses: actions/upload-artifact@v4
with:
name: coverage-core-optional
path: .coverage.*
include-hidden-files: true
test-interface:
name: Interface Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install all dependencies
run: |
pip install uv
uv sync --all-extras --group dev
- name: Run interface tests
run: uv run coverage run --parallel-mode -m pytest -m interface -v
- name: Upload coverage data
if: matrix.python-version == '3.12'
uses: actions/upload-artifact@v4
with:
name: coverage-interface
path: .coverage.*
include-hidden-files: true
test-slow:
name: Slow Tests (Data Downloads + Integrity)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install dependencies
run: |
pip install uv
uv sync --all-extras --group dev
- name: Run slow and live tests
run: uv run coverage run --parallel-mode -m pytest -m "(slow or live) and not credentialed" -v
- name: Upload coverage data
uses: actions/upload-artifact@v4
with:
name: coverage-slow
path: .coverage.*
include-hidden-files: true
# test-credentialed:
# name: Credentialed Tests (Live API)
# runs-on: ubuntu-latest
# environment: credentialed-tests
# steps:
# - uses: actions/checkout@v3
# - name: Set up Python 3.12
# uses: actions/setup-python@v4
# with:
# python-version: "3.12"
# - name: Install dependencies
# run: |
# pip install uv
# uv sync --all-extras --group dev
# - name: Run credentialed tests
# env:
# OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
# ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
# GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
# run: |
# uv run pytest -m "credentialed and not smoke" -v
coverage:
name: Coverage Report
needs: [test-core, test-benchmark, test-core-optional, test-interface, test-slow]
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.12
uses: actions/setup-python@v4
with:
python-version: "3.12"
- name: Install dependencies
run: |
pip install uv
uv sync --group dev
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true
- name: Combine and report coverage
run: |
uv run coverage combine
uv run coverage xml
uv run coverage html
uv run coverage report
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
fail_ci_if_error: false
token: ${{ secrets.CODECOV_TOKEN }}
- name: Coverage comment
if: github.event_name == 'pull_request'
uses: py-cov-action/python-coverage-comment-action@v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
MINIMUM_GREEN: 85
MINIMUM_ORANGE: 70
- name: Store coverage report
uses: actions/upload-artifact@v4
with:
name: coverage-report
path: htmlcov/