Skip to content

fix(testing): make equivocation head assertions scheme-independent (#… #3359

fix(testing): make equivocation head assertions scheme-independent (#…

fix(testing): make equivocation head assertions scheme-independent (#… #3359

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint and format checks - Python ${{ matrix.python-version }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.12", "3.13", "3.14"]
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Run all quality checks
run: just check
dead-code:
name: Dead code detection
runs-on: ubuntu-latest
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Detect dead code with vulture
run: just deadcode
test:
name: Tests - Python ${{ matrix.python-version }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
python-version: ["3.12", "3.13", "3.14"]
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Run tests
run: just test
# coverage-gate, fill-tests and interop-tests run on macOS because the
# SNARK-heavy fixture filler measured faster on macos-latest than on
# ubuntu-latest, even with RAYON_NUM_THREADS=1 pinned to avoid xdist x
# rayon oversubscription. The Tests matrix above already covers
# ubuntu-latest for cross-platform safety.
coverage-gate:
name: Coverage gate - Python 3.12
runs-on: macos-latest
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python 3.12
uses: actions/setup-python@v5
with:
python-version: "3.12"
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Run tests with coverage gate
run: just test-cov-gate
fill-tests:
name: Fill test fixtures - Python 3.14
runs-on: macos-latest
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Fill test fixtures
run: just fill-ci
interop-tests:
name: Interop tests - Multi-node consensus
runs-on: macos-latest
timeout-minutes: 10
steps:
- name: Checkout leanSpec
uses: actions/checkout@v4
- name: Set up Python 3.14
uses: actions/setup-python@v5
with:
python-version: "3.14"
- name: Install uv
uses: astral-sh/setup-uv@v4
with:
enable-cache: true
cache-dependency-glob: "pyproject.toml"
- name: Install just
uses: taiki-e/install-action@v2
with:
tool: just
- name: Run interop tests
run: just interop
env:
LEAN_ENV: test