Improve robustness of subshell concurrency tests (#1285) #2620
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: ipykernel tests | |
on: | |
push: | |
branches: ["main"] | |
pull_request: | |
schedule: | |
- cron: "0 0 * * *" | |
concurrency: | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: bash -eux {0} | |
jobs: | |
build: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
python-version: ["3.9", "3.13"] | |
include: | |
- os: ubuntu-latest | |
python-version: "pypy-3.9" | |
- os: macos-latest | |
python-version: "3.10" | |
- os: ubuntu-latest | |
python-version: "3.11" | |
- os: ubuntu-latest | |
python-version: "3.12" | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Run the tests | |
timeout-minutes: 15 | |
if: ${{ !startsWith( matrix.python-version, 'pypy' ) && !startsWith(matrix.os, 'windows') }} | |
run: | | |
hatch run cov:test --cov-fail-under 50 || hatch run test:test --lf | |
- name: Run the tests on pypy | |
timeout-minutes: 15 | |
if: ${{ startsWith( matrix.python-version, 'pypy' ) }} | |
run: | | |
hatch run test:nowarn || hatch run test:nowarn --lf | |
- name: Run the tests on Windows | |
timeout-minutes: 15 | |
if: ${{ startsWith(matrix.os, 'windows') }} | |
run: | | |
hatch run cov:nowarn || hatch run test:nowarn --lf | |
- name: Check Launcher | |
run: | | |
pip install . | |
cd $HOME | |
python -m ipykernel_launcher --help | |
- uses: jupyterlab/maintainer-tools/.github/actions/upload-coverage@v1 | |
coverage: | |
runs-on: ubuntu-latest | |
needs: | |
- build | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/report-coverage@v1 | |
with: | |
fail_under: 80 | |
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 | |
pipx run interrogate -vv . --fail-under 90 | |
hatch run lint:build | |
pipx run doc8 --max-line-length=200 | |
check_release: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyter-server/jupyter_releaser/.github/actions/check-release@v2 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
test_docs: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Build API docs | |
run: | | |
hatch run docs:api | |
# If this fails run `hatch run docs:api` locally | |
# and commit. | |
git status --porcelain | |
git status -s | grep "A" && exit 1 | |
git status -s | grep "M" && exit 1 | |
echo "API docs done" | |
- run: hatch run docs:build | |
test_without_debugpy: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.9"] | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- name: Install the Python dependencies without debugpy | |
run: | | |
pip install .[test] | |
pip uninstall --yes debugpy | |
- name: List installed packages | |
run: | | |
pip freeze | |
- name: Run the tests | |
timeout-minutes: 15 | |
run: pytest -W default -vv || pytest --vv -W default --lf | |
test_miniumum_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 | |
python_version: "3.9" | |
- name: List installed packages | |
run: | | |
hatch -v run test:list | |
- name: Run the unit tests | |
run: | | |
hatch -v run test:nowarn || hatch run test:nowarn --lf | |
test_prereleases: | |
name: Test Prereleases | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Base Setup | |
uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
with: | |
dependency_type: pre | |
- name: Run the tests | |
run: | | |
hatch run test:nowarn || hatch run test:nowarn --lf | |
make_sdist: | |
name: Make SDist | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
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 | |
link_check: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: jupyterlab/maintainer-tools/.github/actions/base-setup@v1 | |
- uses: jupyterlab/maintainer-tools/.github/actions/check-links@v1 | |
tests_check: # This job does nothing and is only used for the branch protection | |
if: always() | |
needs: | |
- coverage | |
- test_docs | |
- test_without_debugpy | |
- test_miniumum_versions | |
- test_lint | |
- test_prereleases | |
- check_release | |
- link_check | |
- 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) }} |