Skip to content

New Feature: Auto-generation of test code #68

New Feature: Auto-generation of test code

New Feature: Auto-generation of test code #68

# This is a GitHub workflow defining a set of jobs with a set of steps.
# ref: https://docs.github.com/en/free-pro-team@latest/actions/reference/workflow-syntax-for-github-actions
#
name: Test python-doc
on:
pull_request:
branches: ["**"]
push:
branches: [main, master]
tags: ["**"]
defaults:
run:
shell: bash
jobs:
test_nbgrader:
runs-on: ${{ matrix.os }}
timeout-minutes: 45
env:
# NOTE: UTF-8 content may be interpreted as ascii and causes errors
# without this.
LANG: C.UTF-8
MOZ_HEADLESS: 1
strategy:
fail-fast: false
matrix:
os: [windows-latest, ubuntu-22.04]
group: ["docs", "python"]
python: ["3.8", "3.9", "3.10", "3.11"]
exclude:
- os: windows-latest
group: docs
- python: "3.8"
group: docs
- python: "3.9"
group: docs
- python: "3.10"
group: docs
steps:
# This is how you set an environment variable in a GitHub workflow that
# will be available in following steps as if you would used `export
# MY_ENV=my-value`.
- name: Configure environment variables from job flags
run: |
if [ "${{ matrix.group }}" == "docs" ]; then
echo "GROUP=docs" >> $GITHUB_ENV
echo "TIMEOUT_MINUTES=15" >> $GITHUB_ENV
fi
if [ "${{ matrix.group }}" == "python" ]; then
echo "GROUP=python" >> $GITHUB_ENV
echo "TIMEOUT_MINUTES=20" >> $GITHUB_ENV
fi
- uses: actions/checkout@v3
- name: Install node
uses: actions/setup-node@v3
with:
node-version: '18.x'
# NOTE: actions/setup-python@v2 can make use of a cache within the GitHub
# Action virtual environment and setup extremely fast. 3.9 isn't
# available in this cache as of November 2020.
- name: Install Python ${{ matrix.python }}
uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python }}
- name: Run pre-commit
if: matrix.group == 'docs'
run: |
sudo apt-get install pandoc
# Remove node
sudo rm -rf $(which node)
sudo rm -rf $(which node)
- name: Install Python dependencies
run: |
python -m pip install --upgrade pip wheel setuptools
python tasks.py install --group="$GROUP"
pip freeze
- name: Install Playwright
if: matrix.group != 'docs'
run: |
npx playwright install
- name: Run pytest
timeout-minutes: ${{ fromJSON(env.TIMEOUT_MINUTES) }}
run: |
python tasks.py tests --group="$GROUP"
# - name: Submit codecov report
# run: |
# codecov
make_sdist:
name: Make SDist
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v2
- 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
- name: Remove node
run: |
sudo rm -rf $(which node)
sudo rm -rf $(which node)
- uses: jupyterlab/maintainer-tools/.github/actions/test-sdist@v1
with:
package_spec: '--editable ."[tests]"'
test_command: python -m pytest -vv nbgrader/tests/api || python -m pytest -vv nbgrader/tests/api --lf