Tests #2118
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
schedule: | |
- cron: "0 8 * * *" | |
concurrency: | |
group: tests-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -eux {0} | |
jobs: | |
run-tests: | |
runs-on: ${{ matrix.os }} | |
env: | |
NBFORMAT_VALIDATOR: jsonschema | |
strategy: | |
matrix: | |
os: ["ubuntu-20.04", "macos-latest", "windows-latest"] | |
python-version: ["3.8", "3.12"] | |
include: | |
- os: "windows-latest" | |
python-version: "3.9" | |
- os: "macos-latest" | |
python-version: "3.10" | |
- os: "ubuntu-20.04" | |
python-version: "3.11" | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Install Linux dependencies | |
if: startsWith(runner.os, 'Linux') | |
run: | | |
sudo apt-get update | |
sudo apt-get install texlive-plain-generic inkscape texlive-xetex latexmk | |
sudo apt-get install xvfb x11-utils libxkbcommon-x11-0 libxcb-xinerama0 python3-pyqt5 | |
# pandoc is not up to date in the ubuntu repos, so we install directly | |
wget https://github.com/jgm/pandoc/releases/download/3.1.2/pandoc-3.1.2-1-amd64.deb && sudo dpkg -i pandoc-3.1.2-1-amd64.deb | |
- name: Run tests on Linux | |
if: ${{ startsWith(runner.os, 'linux') }} | |
run: | | |
xvfb-run --auto-servernum hatch run cov:test | |
- name: Run tests on other platforms | |
if: ${{ !startsWith(runner.os, 'linux') }} | |
run: | | |
hatch run cov:nowarn | |
- uses: jupyterlab/maintainer-tools/.github/actions/upload-coverage@v1 | |
coverage: | |
runs-on: ubuntu-latest | |
needs: | |
- run-tests | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/report-coverage@v1 | |
test_lint: | |
name: Test Lint | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Run Linters | |
run: | | |
hatch run typing:test | |
hatch run lint:build | |
pipx run interrogate -v . | |
pipx run doc8 --max-line-length=200 --ignore-path=docs/source/other/full-config.rst | |
check_release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- run: pip install -e . | |
- uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2 | |
with: | |
version_spec: 10.10.10 | |
token: ${{ secrets.GITHUB_TOKEN }} | |
check_links: | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 | |
with: | |
ignore_links: "https://ipywidgets.readthedocs.io/en/latest/examples/Output" | |
test_minimum_versions: | |
name: Test Minimum Versions | |
timeout-minutes: 20 | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
with: | |
dependency_type: minimum | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install texlive-plain-generic inkscape texlive-xetex latexmk | |
sudo apt-get install xvfb x11-utils libxkbcommon-x11-0 libxcb-xinerama0 python3-pyqt5 | |
# pandoc is not up to date in the ubuntu repos, so we install directly | |
wget https://github.com/jgm/pandoc/releases/download/2.9.2.1/pandoc-2.9.2.1-1-amd64.deb && sudo dpkg -i pandoc-2.9.2.1-1-amd64.deb | |
- name: Run tests | |
run: | | |
# Attempt to work around https://github.com/pypa/pip/issues/12781 | |
PIP_CONSTRAINT= hatch env run -e test -- pip install 'pip>=24.2' | |
xvfb-run --auto-servernum hatch run test:nowarn || xvfb-run --auto-servernum hatch run test:nowarn --lf | |
test_prereleases: | |
name: Test Prereleases | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
with: | |
dependency_type: pre | |
- name: Run the tests | |
run: | | |
export NBFORMAT_VALIDATOR=jsonschema | |
hatch run test:nowarn || hatch run test:nowarn --lf | |
make_sdist: | |
name: Make SDist | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/make-sdist@v1 | |
test_sdist: | |
runs-on: ubuntu-latest | |
needs: [make_sdist] | |
name: Install from SDist and Test | |
timeout-minutes: 20 | |
steps: | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/test-sdist@v1 | |
tests_check: # This job does nothing and is only used for the branch protection | |
if: always() | |
needs: | |
- coverage | |
- test_lint | |
- test_minimum_versions | |
- test_prereleases | |
- check_links | |
- check_release | |
- test_sdist | |
runs-on: ubuntu-latest | |
steps: | |
- name: Decide whether the needed jobs succeeded or failed | |
uses: re-actors/alls-green@release/v1 | |
with: | |
jobs: ${{ toJSON(needs) }} |