Skip to content

Test

Test #1102

Workflow file for this run

name: Test
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
schedule:
- cron: "0 5 * * *"
# Cancel previous runs that have not completed
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true
env:
depth: 100
jobs:
pytest:
strategy:
matrix:
os:
- macos-latest
- ubuntu-latest
- windows-latest
python-version:
- "3.8" # Earliest version supported by ixmp
- "3.9"
- "3.10"
- "3.11" # Latest supported by ixmp
# commented: force a specific version of pandas, for e.g. pre-release
# testing
# pandas-version:
# - ""
# - "==2.0.0rc0"
exclude: [ ]
# # Specific version combinations that are invalid, e.g. pandas 2.0
# # requires Python >= 3.8
# - python-version: "3.7"
# pandas-version: "==2.0.0rc0"
fail-fast: false
runs-on: ${{ matrix.os }}
name: ${{ matrix.os }}-py${{ matrix.python-version }}
# commented: use with "pandas-version" in the matrix, above
# name: ${{ matrix.os }}-py${{ matrix.python-version }}-pandas${{ matrix.pandas-version }}
steps:
- uses: actions/checkout@v3
with:
fetch-depth: ${{ env.depth }}
- name: Fetch tags (for setuptools-scm)
run: git fetch --tags --depth=${{ env.depth }}
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
cache: pip
cache-dependency-path: "**/pyproject.toml"
- uses: ts-graphviz/[email protected]
with:
macos-skip-brew-update: true
- uses: r-lib/actions/setup-r@v2
id: setup-r
with:
r-version: '4.2.3'
- name: Cache GAMS installer and R packages
uses: actions/cache@v3
with:
path: |
gams
${{ env.R_LIBS_USER }}
key: ${{ matrix.os }}-R${{ steps.setup-r.outputs.installed-r-version }}
restore-keys: |
${{ matrix.os }}-
- uses: iiasa/actions/setup-gams@main
with:
version: 25.1.1
- name: Set RETICULATE_PYTHON
# Use the environment variable set by the setup-python action, above.
run: echo "RETICULATE_PYTHON=$pythonLocation" >> $GITHUB_ENV
shell: bash
- name: Install Python package and dependencies
# [docs] contains [tests], which contains [report,tutorial]
run: |
# Work around https://bugs.launchpad.net/lxml/+bug/2035206
pip install "lxml != 4.9.3"
pip install .[docs]
# commented: use with "pandas-version" in the matrix, above
# pip install --upgrade pandas${{ matrix.pandas-version }}
- name: TEMPORARY Work around iiasa/ixmp#463
if: matrix.python-version != '3.11'
run: pip install "JPype1 != 1.4.1"
- name: Install R dependencies and tutorial requirements
run: |
install.packages(c("remotes", "Rcpp"))
remotes::install_cran(
c("IRkernel", "reticulate"),
dependencies = TRUE,
# force = TRUE,
)
IRkernel::installspec()
# commented: for debugging
# print(reticulate::py_config())
# reticulate::py_run_string("import os; print(os.environ)")
shell: Rscript {0}
- name: Run test suite using pytest
run: pytest ixmp -m "not performance" --verbose -rA --cov-report=xml --color=yes
- name: Test documentation build using Sphinx
env:
# For pull_request triggers, GitHub creates a temporary merge commit
# with a hash that does not match the head of the branch. Tell it which
# branch to use.
SPHINXOPTS: -D linkcode_github_remote_head=${{ github.head_ref }}
run: make --directory=doc html
- name: Upload test coverage to Codecov.io
uses: codecov/codecov-action@v3
pre-commit:
name: Code quality
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
- name: Force recreation of pre-commit virtual environment for mypy
if: github.event_name == 'schedule'
run: gh cache list -L 999 | cut -f2 | grep pre-commit | xargs -I{} gh cache delete "{}" || true
env: { GH_TOKEN: "${{ github.token }}" }
- uses: pre-commit/[email protected]