Skip to content

Run dataset tests on Woodpecker with full data access #3044

Run dataset tests on Woodpecker with full data access

Run dataset tests on Woodpecker with full data access #3044

Workflow file for this run

name: Test suite
on:
push:
branches:
- main
- future/*
- series/*
pull_request:
concurrency:
group: test-${{github.ref}}
cancel-in-progress: true
jobs:
vanilla:
name: Vanilla Python ${{matrix.python}} on ${{matrix.platform}}
runs-on: ${{matrix.platform}}
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
python:
- "3.12.5"
- "3.13"
- "3.14"
- "3.14t"
platform:
- ubuntu-latest
- ubuntu-24.04-arm
- macos-latest
- windows-latest
steps:
- name: πŸ›’ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: jdx/mise-action@v4
with:
cache: false
install: true
- name: πŸ•ΆοΈ Install uv
uses: astral-sh/setup-uv@v8.0.0
with:
python-version: ${{ matrix.python }}
activate-environment: true
cache-suffix: "-20260407"
- name: πŸ“¦ Set up Python dependencies (Unix)
if: runner.os != 'Windows'
run: |
uv_extra=
if [[ "${{matrix.python}}" = *t ]]; then
uv_extra="--no-extra ray --no-extra tune"
fi
uv sync --all-extras $uv_extra --no-default-groups --group test
env:
# disable MARCH for hpfrec wheels
DONT_SET_MARCH: 1
- name: πŸ“¦ Set up Python dependencies (Windows)
if: runner.os == 'Windows'
run: |
uv sync --no-default-groups --group test
env:
# disable MARCH for hpfrec wheels
DONT_SET_MARCH: 1
- name: πŸ” Inspect environment
run: |
coverage run -m lenskit doctor --full
- name: πŸƒπŸ»β€βž‘οΈ Test LKPY
run: |
python -m pytest --verbose --log-file=test.log --durations=25 --cov=src/lenskit --cov-append tests
- name: πŸ•ΊπŸ» Test LensKit CLI
if: runner.os != 'Windows'
run: |
mise run test-cli -- --coverage --cov-append
shell: bash -e {0}
env:
MERMAID_DOCKER: 1
- name: πŸ“€ Upload coverage to CodeCov
uses: codecov/codecov-action@v7.0.0
rust-cover:
name: Rust test coverage
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: πŸ›’ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set Mise environment
run: |
echo 'env = ["extra"]' >.miserc.toml
- name: Install mise-en-place
uses: jdx/mise-action@v4
with:
cache: false
- name: πŸ“¦ Set up Python dependencies
run: |
uv sync -p 3.14
- name: πŸƒπŸ»β€βž‘οΈ Test LKPY
run: |
mise run test -- --coverage --accel-coverage -- --log-file=test.log
- name: πŸ“€ Upload coverage to CodeCov
uses: codecov/codecov-action@v7.0.0
mindep-all:
name: Minimal dependency tests (all options)
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: πŸ›’ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: πŸ•ΆοΈ Install uv
uses: astral-sh/setup-uv@v8.0.0
with:
python-version: "3.12.5"
activate-environment: true
cache-suffix: "-20260407"
- name: πŸ“¦ Set up Python dependencies
run: |
uv pip install --resolution=lowest-direct --group=test '.[sklearn,hpf,implicit,funksvd]'
env:
CC: gcc
DONT_SET_MARCH: 1
- name: πŸ” Inspect environment
run: |
lenskit doctor --full
- name: πŸƒπŸ»β€βž‘οΈ Test LKPY
run: |
python -m pytest --verbose --log-file=test.log --durations=25 --cov=src/lenskit tests
- name: πŸ“€ Upload coverage to CodeCov
uses: codecov/codecov-action@v7.0.0
mindep:
name: Minimal dependency tests
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- name: πŸ›’ Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: jdx/mise-action@v4
with:
install: false
- name: πŸ•ΆοΈ Install uv
uses: astral-sh/setup-uv@v8.0.0
with:
python-version: "3.12.5"
activate-environment: true
cache-suffix: "-20260407"
- name: πŸ“¦ Set up Python dependencies
run: |
uv pip install --resolution=lowest-direct --group=test .
- name: πŸ” Inspect environment
run: |
lenskit doctor --full
- name: πŸƒπŸ»β€βž‘οΈ Test LKPY
run: |
python -m pytest -vs tests/test_env.py
python -m pytest --verbose --log-file=test.log --durations=25 --cov=src/lenskit tests
- name: πŸ•ΊπŸ» Test LensKit CLI
run: |
mise run test-cli -- --coverage --cov-append
shell: bash -e {0}
- name: πŸ“€ Upload coverage to CodeCov
uses: codecov/codecov-action@v7.0.0