Tests #431
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: Tests | |
on: | |
push: | |
branches: [main, "version-*"] | |
pull_request: | |
branches: [main, "version-*"] | |
release: | |
types: | |
- published | |
schedule: | |
# Run nightly to check that tests are working with latest dependencies | |
- cron: "0 0 * * *" | |
jobs: | |
test: | |
runs-on: ${{ matrix.os }} | |
timeout-minutes: 15 | |
strategy: | |
matrix: | |
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"] | |
os: [ubuntu-latest] | |
include: | |
- os: macos-latest | |
python-version: "3.10" | |
- os: macos-latest | |
python-version: 3.12 | |
- os: windows-latest | |
python-version: 3.8 | |
- os: windows-latest | |
python-version: 3.12 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Fix macos HDF5 library for pytables install (works for python >= 3.10) | |
if: ${{ matrix.os == 'macos-latest' }} | |
run: | | |
brew update | |
brew install hdf5 | |
- name: Setup xtgeo | |
env: | |
# relevant for macos builds only | |
HDF5_DIR: /opt/homebrew | |
uses: "./.github/actions/setup_xtgeo" | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Run tests (Linux/macOS) | |
if: ${{ matrix.os != 'windows-latest' }} | |
run: pytest -n 4 tests --disable-warnings --generate-plots | |
- name: Run tests (Windows, skip plotting due to random TCL/TK issues) | |
if: ${{ matrix.os == 'windows-latest' }} | |
run: pytest -n 4 tests --disable-warnings | |
hypothesis: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup xtgeo | |
uses: "./.github/actions/setup_xtgeo" | |
with: | |
python-version: 3.9 | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Run just hypothesis tests with more examples | |
run: pytest -n 4 tests --disable-warnings -m hypothesis --generate-plots | |
rms: | |
name: ${{ matrix.config.name }} | |
runs-on: ${{ matrix.config.os }} | |
timeout-minutes: 15 | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- { | |
name: "RMS 12.1.4, 13.0.3, 13.1.0, 14.1.1", | |
os: ubuntu-20.04, | |
python: 3.8.6, | |
pip: 23.2.1, | |
wheel: 0.37.1, | |
setuptools: 63.4.3, | |
matplotlib: 3.3.2, | |
numpy: 1.19.2, | |
pandas: 1.1.3, | |
scipy: 1.5.3, | |
} | |
- { | |
name: "RMS 14.2", | |
os: ubuntu-latest, | |
python: 3.11.3, | |
pip: 23.3.1, | |
wheel: 0.37.1, | |
setuptools: 63.4.3, | |
matplotlib: 3.7.1, | |
numpy: 1.24.3, | |
pandas: 2.0.2, | |
scipy: 1.10.1, | |
} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.config.python }} | |
- name: Build and install xtgeo | |
run: | | |
pip install pip==${{ matrix.config.pip }} | |
pip install \ | |
wheel==${{ matrix.config.wheel }} \ | |
setuptools==${{ matrix.config.setuptools }} \ | |
matplotlib==${{ matrix.config.matplotlib }} \ | |
numpy==${{ matrix.config.numpy }} \ | |
pandas==${{ matrix.config.pandas }} \ | |
scipy==${{ matrix.config.scipy }} | |
pip install ".[dev]" | |
- name: List dependencies | |
run: pip freeze | |
- name: Run tests | |
run: pytest -n 4 tests --disable-warnings --generate-plots | |
big: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup xtgeo | |
uses: "./.github/actions/setup_xtgeo" | |
with: | |
python-version: 3.9 | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Run just tests marked big | |
run: XTG_BIGTEST=1 pytest -n 4 tests --disable-warnings -m bigtest --generate-plots | |
codecov: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup xtgeo | |
uses: "./.github/actions/setup_xtgeo" | |
with: | |
python-version: 3.9 | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Generate coverage report | |
run: pytest -n 4 tests --doctest-modules --generate-plots --disable-warnings --cov=xtgeo --cov-report=xml:xtgeocoverage.xml; | |
- name: Upload coverage to Codecov | |
uses: codecov/codecov-action@v4 | |
with: | |
files: xtgeocoverage.xml | |
opm-integration: | |
runs-on: ubuntu-latest | |
timeout-minutes: 15 | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: "./.github/actions/setup_xtgeo" | |
with: | |
python-version: 3.9 | |
- name: Setup testdata | |
uses: "./.github/actions/setup_testdata" | |
- name: Set up OPM | |
run: | | |
sudo apt install software-properties-common && | |
sudo apt-add-repository ppa:opm/ppa && | |
sudo apt install mpi-default-bin libopm-simulators-bin | |
- name: Integration test | |
run: HAS_OPM=1 python -m pytest -m requires_opm --disable-warnings |