mirror of
https://github.com/jupyterhub/the-littlest-jupyterhub.git
synced 2025-12-18 21:54:05 +08:00
102 lines
3.3 KiB
YAML
102 lines
3.3 KiB
YAML
# This is a GitHub workflow defining a set of jobs with a set of steps.
|
|
# ref: https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions
|
|
#
|
|
name: Unit tests
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
- "**.rst"
|
|
- ".github/workflows/*"
|
|
- "!.github/workflows/unit-test.yaml"
|
|
push:
|
|
paths-ignore:
|
|
- "docs/**"
|
|
- "**.md"
|
|
- "**.rst"
|
|
- ".github/workflows/*"
|
|
- "!.github/workflows/unit-test.yaml"
|
|
branches-ignore:
|
|
- "dependabot/**"
|
|
- "pre-commit-ci-update-config"
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
unit-tests:
|
|
name: ${{ matrix.name }}
|
|
|
|
# runs-on can only be configured to the LTS releases of ubuntu (18.04,
|
|
# 20.04, ...), so if we want to test against the latest non-LTS release, we
|
|
# must compromise when configuring runs-on and configure runs-on to be the
|
|
# latest LTS release instead.
|
|
#
|
|
# This can have consequences because actions like actions/setup-python will
|
|
# mount cached installations associated with the chosen runs-on environment.
|
|
#
|
|
runs-on: ${{ format('ubuntu-{0}', matrix.runs_on || matrix.ubuntu_version) }}
|
|
container: ubuntu:${{ matrix.ubuntu_version }}
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- name: "Unit tests: Ubuntu 20.04, Py 3.9"
|
|
ubuntu_version: "20.04"
|
|
python_version: "3.9"
|
|
- name: "Unit tests: Ubuntu 22.04, Py 3.10"
|
|
ubuntu_version: "22.04"
|
|
python_version: "3.10"
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- uses: actions/setup-python@v4
|
|
with:
|
|
python-version: "${{ matrix.python_version }}"
|
|
|
|
- name: Install venv, git and setup venv
|
|
run: |
|
|
export DEBIAN_FRONTEND=noninteractive
|
|
apt-get update
|
|
apt-get install --yes \
|
|
python3-venv \
|
|
git
|
|
|
|
python3 -m venv /srv/venv
|
|
echo '/srv/venv/bin' >> $GITHUB_PATH
|
|
|
|
# WARNING: This action loads a cache of pip dependencies based on the
|
|
# declared key, and it will save a cache for that key on job
|
|
# completion. Make sure to update the key to bust the cache
|
|
# properly if you make a change that should influence it.
|
|
- name: Load cached Python dependencies
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: /srv/venv/
|
|
key: >-
|
|
pip-
|
|
${{ matrix.runs_on }}-
|
|
${{ matrix.ubuntu_version }}-
|
|
${{ matrix.python_version }}-
|
|
${{ hashFiles('setup.py', 'dev-requirements.txt', '.github/workflows/unit-test.yaml') }}
|
|
|
|
- name: Install Python dependencies
|
|
# Keep pip version pinning in sync with the one in bootstrap.py!
|
|
# See changelog at https://pip.pypa.io/en/latest/news/#changelog
|
|
run: |
|
|
python3 -m pip install -U "pip==21.3.*"
|
|
python3 -m pip install -r dev-requirements.txt
|
|
python3 -m pip install -e .
|
|
pip freeze
|
|
|
|
# We abort pytest after two failures as a compromise between wanting to
|
|
# avoid a flood of logs while still understanding if multiple tests would
|
|
# fail.
|
|
- name: Run unit tests
|
|
run: pytest --verbose --maxfail=2 --color=yes --durations=10 --cov=tljh tests/
|
|
timeout-minutes: 15
|
|
|
|
- name: Upload code coverage stats
|
|
run: codecov
|