Skip to content

Merge pull request #1164 from pmgbergen/main #1181

Merge pull request #1164 from pmgbergen/main

Merge pull request #1164 from pmgbergen/main #1181

# Run unit, integration, and functional tests.
name: Pytest
# Controls when the action will run. Triggers the workflow on push or pull request
# events for the main and develop branches
on:
workflow_dispatch:
# run jobs manually
push:
branches:
- develop
- main
pull_request:
branches:
- develop
- main
schedule:
# Do a nightly run of the tests
- cron: '0 1 * * *'
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
jobs:
# This workflow contains a single job called "build"
build:
name: Check tutorials
# The type of runner that the job will run on
runs-on: ubuntu-latest
# https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#specifying-a-python-version
strategy:
matrix:
# Only check the latest version of
python-version: ["3.11", "3.12"]
# Complete all versions in matrix even if one fails.
fail-fast: false
# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- uses: actions/checkout@v3
- name: Setup Python ${{ matrix.python-version}}
uses: actions/setup-python@v3
with:
# Version range or exact version of a Python version to use, using SemVer's version range syntax.
python-version: ${{ matrix.python-version}}
architecture: x64
cache: 'pip'
# Cache pip dependencies
# Source: https://github.com/actions/cache/blob/main/examples.md#python---pip
- name: Cache dependencies
uses: actions/cache@v3
id: cache
with:
# Cache the full python environment, this is more efficient than just caching pip
# https://blog.allenai.org/python-caching-in-github-actions-e9452698e98d
path: ${{ env.pythonLocation }}
# Hash both ordinary requirements and those specific for developmnet.
key: ${{ env.pythonLocation }}-${{ hashFiles('setup.py') }}-${{ hashFiles('**/requirements.txt', '**/requirements-dev.txt') }}
- name: Install external libraries
run: |
# Various packages that must be installed
# Install libffi v7. This was (seemed to be) necessary in Nov 2022. The reason could be that
# ubuntu-latest was updated, libffi was removed, and scipy complained.
sudo apt-get install libglu1-mesa libgeos-dev libffi7
export LD_LIBRARY_PATH=/usr/local/lib64/:$LD_LIBRARY_PATH
- name: Install requirements
run: |
pip install -U pip
# Install requirements, using eager updates to avoid stalled dependencies due to caching
# https://blog.allenai.org/python-caching-in-github-actions-e9452698e98d
pip install --upgrade --upgrade-strategy eager -r requirements.txt
- name: Install jupyter
run: |
pip install jupyter
- name: Install PorePy
run: |
pip install .
pip freeze
- name: Check tutorials
if: ${{always()}}
run: pytest tests -m tutorials