Skip to content

Integration tests

Integration tests #981

Workflow file for this run

name: Integration tests
on:
workflow_dispatch:
schedule:
- cron: '10 0 * * *'
push:
branches:
- '*'
pull_request:
branches:
- '*'
jobs:
integration_test:
name: rs_${{ matrix.RSIO_VERSION }}-hs_${{ matrix.HYPERSPY_VERSION }}-ext_${{ matrix.EXTENSION_VERSION }}${{ matrix.LABEL }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
HYPERSPY_VERSION: ['release', 'RnPatch', 'RnMinor', 'RnMajor']
# When RostteSciIO is released, extent build matrix with released version
RSIO_VERSION: ['release']
EXTENSION_VERSION: ['release', 'dev']
DEPENDENCIES_DEV: [false]
DEPENDENCIES_PRE_RELEASE: [false]
DEPENDENCIES_NUMBA_DEV: [false]
USE_MAMBA: [true]
PYTHON_VERSION: ['3.10']
include:
# test against upstream dev
- DEPENDENCIES_DEV: true
# Install dev version from https://anaconda.org/scientific-python-nightly-wheels/
LABEL: -dependencies_dev
HYPERSPY_VERSION: 'RnMinor'
RSIO_VERSION: 'dev'
EXTENSION_VERSION: 'dev'
# numba dev version is installed separately from numba/label/dev channel
# others are installed as wheels from
# https://anaconda.org/scientific-python-nightly-wheels/
# see https://scientific-python.org/specs/spec-0004/
DEPENDENCIES: matplotlib scipy scikit-image scikit-learn
USE_MAMBA: false
- DEPENDENCIES_DEV: true
# Install dev version from https://anaconda.org/scientific-python-nightly-wheels/
LABEL: -dependencies_dev
HYPERSPY_VERSION: 'RnMajor'
RSIO_VERSION: 'dev'
EXTENSION_VERSION: 'dev'
DEPENDENCIES: matplotlib scipy scikit-image scikit-learn
USE_MAMBA: false
- DEPENDENCIES_PRE_RELEASE: true
# Install RC version available on pypi
LABEL: -dependencies_pre_release
HYPERSPY_VERSION: 'RnMinor'
RSIO_VERSION: 'dev'
EXTENSION_VERSION: 'dev'
DEPENDENCIES: matplotlib scipy scikit-learn sympy h5py scikit-image numba
USE_MAMBA: false
PYTHON_VERSION: '3.11'
- DEPENDENCIES_NUMBA_DEV: true
# Install dev version from numba/label/dev channel using mamba
LABEL: -dependencies_numba_dev
RSIO_VERSION: 'dev'
HYPERSPY_VERSION: 'RnMajor'
EXTENSION_VERSION: 'dev'
DEPENDENCIES: numba
USE_MAMBA: true
PYTHON_VERSION: '3.11'
exclude:
# Don't test RELEASE_next_major with released version of extension as
# they don't support the hyperspy 2.0 API changes
- HYPERSPY_VERSION: 'RnMajor'
EXTENSION_VERSION: 'release'
env:
EXTENSION: hyperspy-gui-ipywidgets hyperspy-gui-traitsui kikuchipy lumispy pyxem
TEST_DEPS: pytest pytest-xdist pytest-rerunfailures pytest-mpl
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@main
with:
miniforge-variant: Mambaforge
miniforge-version: latest
python-version: ${{ matrix.PYTHON_VERSION }}
# use base environment, so that when using pip, this is from the
# mambaforge distribution
# auto-activate-base: true
activate-environment: "test"
- name: Install pip pyqt and Test dependencies
run: |
mamba install pip pyqt ${{ env.TEST_DEPS }}
- name: Conda info
run: |
conda info
conda list
- name: Install numba development version
if: ${{ matrix.DEPENDENCIES_NUMBA_DEV }}
run: |
# Install numba dev version
mamba install -c numba/label/dev ${{ matrix.DEPENDENCIES }}
- name: Install dependencies development version
if: ${{ matrix.DEPENDENCIES_DEV }}
run: |
pip install --upgrade --pre --extra-index-url \
https://pypi.anaconda.org/scientific-python-nightly-wheels/simple \
${{ matrix.DEPENDENCIES }}
- name: Install dependencies pre release version
if: ${{ matrix.DEPENDENCIES_PRE_RELEASE }}
run: |
pip install --upgrade --pre ${{ matrix.DEPENDENCIES }}
- name: Conda list
run: |
conda list
- name: Install RosettaSciIO release
if: contains(matrix.RSIO_VERSION, 'release')
run: |
# Use mamba when package is available on conda-forge
pip install rosettasciio[all]
- name: Install RosettaSciIO dev
if: contains(matrix.RSIO_VERSION, 'dev')
run: |
pip install "rosettasciio[all] @ https://github.com/hyperspy/rosettasciio/archive/main.zip"
- name: Install HyperSpy release
if: contains(matrix.HYPERSPY_VERSION, 'release')
run: |
mamba install hyperspy-base
- name: Install HyperSpy RnPatch
if: contains(matrix.HYPERSPY_VERSION, 'RnPatch')
run: |
pip install "hyperspy[all] @ https://github.com/hyperspy/hyperspy/archive/RELEASE_next_patch.zip"
- name: Install HyperSpy RnMinor
if: contains(matrix.HYPERSPY_VERSION, 'RnMinor')
run: |
pip install "hyperspy[all] @ https://github.com/hyperspy/hyperspy/archive/RELEASE_next_minor.zip"
- name: Install HyperSpy RnMajor
if: contains(matrix.HYPERSPY_VERSION, 'RnMajor')
run: |
pip install "hyperspy[all] @ https://github.com/hyperspy/hyperspy/archive/RELEASE_next_major.zip"
- name: Install Extension Release
if: contains(matrix.EXTENSION_VERSION, 'release')
run: |
mamba install ${{ env.EXTENSION }}
- name: Install Extension Dev
if: contains(matrix.EXTENSION_VERSION, 'dev')
run: |
pip install https://github.com/lumispy/lumispy/archive/main.zip
pip install https://github.com/pyxem/kikuchipy/archive/develop.zip
pip install https://github.com/pyxem/pyxem/archive/main.zip
pip install https://github.com/hyperspy/hyperspy_gui_ipywidgets/archive/main.zip
pip install https://github.com/hyperspy/hyperspy_gui_traitsui/archive/main.zip
- name: Clear conda and pip cache
run: |
conda clean --all
pip cache purge
- name: Conda list
run: |
conda list
- name: Run HyperSpy Test Suite
run: |
# Need to fix packaging to remove skipping the
python -m pytest --pyargs hyperspy --reruns 3 -n 2 -k "not test_model_backcompatibility"
- name: Run RosettaScio Test Suite
if: contains(matrix.HYPERSPY_VERSION, 'RnMajor')
run: |
# Not possible to use "-n 2" because downloading test files will be ignored
# Test fixed in dev branch but not release yet
python -m pytest --pyargs rsciio -k "not (TestSpec and test_metadata)"
- name: Run hyperspy_gui_ipywidgets Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs hyperspy_gui_ipywidgets -k "not test_spikes_removal_tool and not test_eels_table_tool"
- name: Run hyperspy_gui_traitsui Test Suite
if: ${{ always() }}
# run the tests headlessly
run: |
xvfb-run python -m pytest --pyargs hyperspy_gui_traitsui
# - name: Run kikuchipy Test Suite
# if: ${{ contains(matrix.HYPERSPY_VERSION, 'RnMajor') == false }}
# run: |
# python -m pytest --pyargs kikuchipy
- name: Run LumiSpy Test Suite
if: ${{ always() }}
#if: contains(matrix.EXTENSION_VERSION, 'dev') # Tests only against development version, if a fix is not released yet.
run: |
python -m pytest --pyargs lumispy
- name: Run Pyxem Test Suite
if: ${{ always() }}
run: |
# Failure most likely related to numpy 1.25
python -m pytest --pyargs pyxem -k "not (TestMake4dPeakArrayTestData and test_rotation)"