Skip to content

add pytests to CI

add pytests to CI #2

Workflow file for this run

name: CI
on:
push:
branches:
- "*"
- "!v[0-9]+.[0-9]+.[0-9]+*"
pull_request:
branches:
- "*"
- "!v[0-9]+.[0-9]+.[0-9]+*"
workflow_dispatch:
inputs:
debug_enabled:
type: boolean
description: 'Run the build with tmate debugging enabled (https://github.com/marketplace/actions/debugging-with-tmate)'
required: false
default: false
jobs:
pyprms_setup:
name: standard installation
runs-on: ubuntu-latest
strategy:
fail-fast: false
defaults:
run:
shell: bash
steps:
- name: Checkout repo
uses: actions/checkout@v4
- name: Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- name: Upgrade pip and install build and twine
run: |
python -m pip install --upgrade pip
pip install wheel build 'twine<5.0.0' 'importlib_metadata<=7.0.1' 'setuptools<=72.2.0' 'numpy<2.0'
- name: Base installation
run: |
pip --verbose install .
- name: Print pyPRMS version
run: |
python -c "import pyPRMS; print(pyPRMS.__version__)"
- name: Build pyPRMS, check dist outputs
run: |
python -m build
twine check --strict dist/*
# pyws_lint:
# name: linting
# runs-on: ubuntu-latest
# strategy:
# fail-fast: false
# defaults:
# run:
# shell: bash
# steps:
# - name: Checkout repo
# uses: actions/checkout@v4
# - name: Setup Python
# uses: actions/setup-python@v5
# with:
# python-version: "3.10"
# - name: Install dependencies
# run: |
# pip install wheel
# pip install .
# pip install ".[lint]"
# - name: Version info
# run: |
# pip -V
# pip list
# - name: Lint
# run: ruff check .
# - name: Format
# run: ruff format --check .
test:
name: ${{ matrix.os }} py${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
os: [ "ubuntu-latest", "macos-latest", "windows-latest" ]
python-version: ["3.10", "3.11"]
steps:
- name: Free Disk Space (Ubuntu)
if: runner.os == 'Linux'
uses: jlumbroso/free-disk-space@main
with:
tool-cache: false
android: true
dotnet: true
haskell: true
large-packages: true
docker-images: true
swap-storage: true
- name: Checkout repo
uses: actions/checkout@v4
- name: Install pytest
run: |
pip install pytest
- name: Install pyPRMS
run: |
pip install .
- name: Version info
run: |
pip -V
pip list
- name: Test suite
working-directory: tests
run: pytest -v --cov --cov-report=html:coverage_re
# - name: Upload test results
# if: always()
# uses: actions/upload-artifact@v4
# with:
# name: Test results for ${{ runner.os }}-${{ matrix.python-version }}
# path: |
# ./autotest/pytest_hru_1_nhm.xml
# ./autotest/pytest_drb_2yr_nhm.xml
# ./autotest/pytest_drb_2yr_no_dprst.xml
# ./autotest/pytest_ucb_2yr_nhm.xml
# - name: Upload code coverage to Codecov
# uses: codecov/codecov-action@v3
# with:
# file: ./autotest/coverage.xml # should be just the ucb result
# # flags: unittests
# env_vars: RUNNER_OS,PYTHON_VERSION
# # name: codecov-umbrella
# fail_ci_if_error: false
# version: "v0.1.15"