Run tests #407
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: Run tests | |
on: | |
push: | |
branches: | |
- main | |
- '*.x' | |
pull_request: | |
# Run weekly on Monday at 1:23 UTC | |
schedule: | |
- cron: '23 1 * * 1' | |
workflow_dispatch: | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
# Disable scheduled CI runs on forks | |
if: github.event_name != 'schedule' || github.repository_owner == 'ipython' | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, windows-latest] | |
python-version: ["3.10", "3.11", "3.12"] | |
deps: [test_extra] | |
# Test all on ubuntu, test ends on macos | |
include: | |
- os: macos-latest | |
python-version: "3.10" | |
deps: test_extra | |
- os: macos-latest | |
python-version: "3.11" | |
deps: test_extra | |
# Tests minimal dependencies set | |
- os: ubuntu-latest | |
python-version: "3.11" | |
deps: test | |
# Tests latest development Python version | |
- os: ubuntu-latest | |
python-version: "3.13-dev" | |
deps: test | |
# Installing optional dependencies stuff takes ages on PyPy | |
- os: ubuntu-latest | |
python-version: "pypy-3.10" | |
deps: test | |
- os: windows-latest | |
python-version: "pypy-3.10" | |
deps: test | |
- os: macos-latest | |
python-version: "pypy-3.10" | |
deps: test | |
# Temporary CI run to use entry point compatible code in matplotlib-inline. | |
- os: ubuntu-latest | |
python-version: "3.12" | |
deps: test_extra | |
want-latest-entry-point-code: true | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
cache: pip | |
cache-dependency-path: | | |
pyproject.toml | |
- name: Install latex | |
if: runner.os == 'Linux' && matrix.deps == 'test_extra' | |
run: echo "disable latex for now, issues in mirros" #sudo apt-get -yq -o Acquire::Retries=3 --no-install-suggests --no-install-recommends install texlive dvipng | |
- name: Install and update Python dependencies (binary only) | |
if: ${{ ! contains( matrix.python-version, 'dev' ) }} | |
run: | | |
python -m pip install --only-binary ':all:' --upgrade pip setuptools wheel build | |
python -m pip install --only-binary ':all:' --no-binary curio --upgrade -e .[${{ matrix.deps }}] | |
python -m pip install --only-binary ':all:' --upgrade check-manifest pytest-cov pytest-json-report 'pytest<8' | |
- name: Install and update Python dependencies (dev?) | |
if: ${{ contains( matrix.python-version, 'dev' ) }} | |
run: | | |
python -m pip install --pre --upgrade pip setuptools wheel build | |
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple --no-binary curio --upgrade -e .[${{ matrix.deps }}] | |
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple --upgrade check-manifest pytest-cov pytest-json-report | |
python -m pip install --pre --extra-index-url https://pypi.anaconda.org/scientific-python-nightly-wheels/simple git+https://github.com/alexmojaki/executing.git@3.13 | |
- name: Try building with Python build | |
if: runner.os != 'Windows' # setup.py does not support sdist on Windows | |
run: | | |
python -m build | |
shasum -a 256 dist/* | |
- name: Check manifest | |
if: runner.os != 'Windows' # setup.py does not support sdist on Windows | |
run: check-manifest | |
- name: Install entry point compatible code (TEMPORARY) | |
if: matrix.want-latest-entry-point-code | |
run: | | |
python -m pip list | |
# Not installing matplotlib's entry point code as building matplotlib from source is complex. | |
# Rely upon matplotlib to test all the latest entry point branches together. | |
python -m pip install --upgrade git+https://github.com/ipython/matplotlib-inline.git@main | |
python -m pip list | |
- name: pytest | |
env: | |
COLUMNS: 120 | |
run: | | |
pytest --color=yes -raXxs ${{ startsWith(matrix.python-version, 'pypy') && ' ' || '--cov --cov-report=xml' }} --json-report --json-report-file=./report-${{ matrix.python-version }}-${{runner.os}}.json --maxfail=15 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: upload pytest timing reports as json | |
path: | | |
./report-*.json | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v3 | |
with: | |
name: Test | |
files: /home/runner/work/ipython/ipython/coverage.xml |