Skip to content

docs: Update switcher.json for 2.4.1 release (#1153) #1749

docs: Update switcher.json for 2.4.1 release (#1153)

docs: Update switcher.json for 2.4.1 release (#1153) #1749

Workflow file for this run

name: tests
on:
push:
branches:
- main
pull_request:
branches:
- "*"
workflow_dispatch:
inputs:
target:
description: "How much of the test suite to run"
type: choice
default: default
options:
- default
- full
- downstream
cache:
description: "Use cache"
type: boolean
default: true
schedule:
- cron: "0 13 * * SUN"
permissions: {}
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash -e {0}
env:
DISPLAY: ":99.0"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
COV: "--cov=./param --cov-report=xml"
jobs:
pre_commit:
name: Run pre-commit
runs-on: "ubuntu-latest"
steps:
- uses: holoviz-dev/holoviz_tasks/pre-commit@ffddda04b2894fea39b407f64d3622d2f19e5a9f # v1
setup:
name: Setup workflow
runs-on: ubuntu-latest
outputs:
matrix: ${{ env.MATRIX }}
steps:
- name: Set matrix option
env:
GITHUB_EVENT_INPUTS_TARGET: ${{ github.event.inputs.target }}
run: |
if [[ "${GITHUB_EVENT_NAME}" == 'workflow_dispatch' ]]; then
OPTION=${GITHUB_EVENT_INPUTS_TARGET}
elif [[ "${GITHUB_EVENT_NAME}" == 'schedule' ]]; then
OPTION="full"
elif [[ "${GITHUB_EVENT_NAME}" == 'push' && "${GITHUB_REF_TYPE}" == 'tag' ]]; then
OPTION="full"
else
OPTION="default"
fi
echo "MATRIX_OPTION=$OPTION" >> $GITHUB_ENV
- name: Set test matrix with 'default' option
if: env.MATRIX_OPTION == 'default'
run: |
MATRIX=$(jq -nsc '{
"os": ["ubuntu-latest", "macos-latest", "windows-latest"],
"environment": ["test-310", "test-314"]
}')
echo "MATRIX=$MATRIX" >> $GITHUB_ENV
- name: Set test matrix with 'full' option
if: env.MATRIX_OPTION == 'full'
run: |
MATRIX=$(jq -nsc '{
"os": ["ubuntu-latest", "macos-latest", "windows-latest"],
"environment": ["test-310", "test-311", "test-312", "test-313", "test-314"]
}')
echo "MATRIX=$MATRIX" >> $GITHUB_ENV
- name: Set test matrix with 'downstream' option
if: env.MATRIX_OPTION == 'downstream'
run: |
MATRIX=$(jq -nsc '{
"os": ["ubuntu-latest"],
"environment": ["test-312"]
}')
echo "MATRIX=$MATRIX" >> $GITHUB_ENV
pixi_lock:
name: Pixi lock
runs-on: ubuntu-latest
steps:
- uses: holoviz-dev/holoviz_tasks/pixi-lock@ffddda04b2894fea39b407f64d3622d2f19e5a9f # v1
with:
cache: ${{ github.event.inputs.cache == 'true' || github.event.inputs.cache == '' }}
unit_test_suite:
name: unit:${{ matrix.environment }}:${{ matrix.os }}
needs: [pre_commit, setup, pixi_lock]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.setup.outputs.matrix) }}
timeout-minutes: 30
env:
ENV: ${{ matrix.environment }}
steps:
- uses: holoviz-dev/holoviz_tasks/pixi-install@ffddda04b2894fea39b407f64d3622d2f19e5a9f # v1
with:
environments: ${{ matrix.environment }}
- name: Test Unit
run: |
pixi run -e "${ENV}" test-unit $COV
- name: Test Examples
run: |
pixi run -e "${ENV}" test-example
- uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6
with:
token: ${{ secrets.CODECOV_TOKEN }}
core_test_suite:
name: core:${{ matrix.environment }}:${{ matrix.os }}
needs: [pre_commit, pixi_lock]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest"]
environment: ["test-core", "test-314t"]
timeout-minutes: 30
env:
ENV: ${{ matrix.environment }}
steps:
- uses: holoviz-dev/holoviz_tasks/pixi-install@ffddda04b2894fea39b407f64d3622d2f19e5a9f # v1
with:
environments: ${{ matrix.environment }}
- name: Test Unit
run: |
pixi run -e "${ENV}" test-unit
type_suite:
name: type:ubuntu-latest
needs: [pre_commit, pixi_lock]
runs-on: ubuntu-latest
timeout-minutes: 30
steps:
- uses: holoviz-dev/holoviz_tasks/pixi-install@ffddda04b2894fea39b407f64d3622d2f19e5a9f # v1
with:
environments: type
- name: TY
id: ty
continue-on-error: true
run: pixi run -e type type-ty
- name: mypy
id: mypy
continue-on-error: true
run: pixi run -e type type-mypy
- name: Pyrefly
id: pyrefly
continue-on-error: true
run: pixi run -e type type-pyrefly
- name: Pyright
id: pyright
continue-on-error: true
run: pixi run -e type type-pyright
- name: Asserts
id: asserts
continue-on-error: true
run: pixi run -e type type-asserts
- name: Error if any check failed
if: steps.ty.outcome != 'success' || steps.mypy.outcome != 'success' || steps.pyrefly.outcome != 'success' || steps.pyright.outcome != 'success' || steps.asserts.outcome != 'success'
env:
TY_OUTCOME: ${{ steps.ty.outcome }}
MYPY_OUTCOME: ${{ steps.mypy.outcome }}
PYREFLY_OUTCOME: ${{ steps.pyrefly.outcome }}
PYRIGHT_OUTCOME: ${{ steps.pyright.outcome }}
ASSERTS_OUTCOME: ${{ steps.asserts.outcome }}
run: |
echo "TY: ${TY_OUTCOME}"
echo "mypy: ${MYPY_OUTCOME}"
echo "Pyrefly: ${PYREFLY_OUTCOME}"
echo "Pyright: ${PYRIGHT_OUTCOME}"
echo "Asserts: ${ASSERTS_OUTCOME}"
exit 1
pypy_test_suite:
name: core:${{ matrix.python-version }}:${{ matrix.os }}
needs: [pre_commit]
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: ["ubuntu-latest", "windows-latest"]
python-version: ["pypy3.11"]
timeout-minutes: 30
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
fetch-depth: "100"
persist-credentials: false
- name: Fetch
run: git fetch --prune --tags -f
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: ${{ matrix.python-version }}
- name: Install the latest version of uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
- name: Create virtual environment
run: uv venv --python ${{ matrix.python-version }}
- name: Install project dependencies
run: uv pip install -e ."[tests,tests-pypy]"
- name: List installed packages
run: uv pip list
- name: Run tests (Linux)
if: matrix.os != 'windows-latest'
run: |
source .venv/bin/activate
pytest tests
- name: Run tests (Windows)
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
.venv\Scripts\Activate.ps1
pytest tests
result_test_suite:
name: result:test
needs: [unit_test_suite, core_test_suite, pypy_test_suite, type_suite]
if: always()
runs-on: ubuntu-latest
steps:
- name: check for failures
if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled')
run: echo job failed && exit 1