Skip to content

Merge pull request #66 from ericpre/update_setup_miniconda_actions #1417

Merge pull request #66 from ericpre/update_setup_miniconda_actions

Merge pull request #66 from ericpre/update_setup_miniconda_actions #1417

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']
# 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.11']
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
PYTHON_VERSION: '3.11'
- 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
HYPERSPY_VERSION: 'RnMinor'
RSIO_VERSION: 'dev'
EXTENSION_VERSION: 'dev'
DEPENDENCIES: numba
USE_MAMBA: true
PYTHON_VERSION: '3.11'
env:
# EXTENSION: hyperspy-gui-ipywidgets hyperspy-gui-traitsui kikuchipy lumispy pyxem exspy holospy
EXTENSION: hyperspy-gui-ipywidgets hyperspy-gui-traitsui lumispy pyxem exspy holospy
TEST_DEPS: pytest pytest-xdist pytest-rerunfailures pytest-mpl filelock
defaults:
run:
shell: bash -l {0}
steps:
- uses: actions/checkout@v4
- uses: conda-incubator/setup-miniconda@v3
with:
miniforge-version: latest
python-version: ${{ matrix.PYTHON_VERSION }}
# use base environment, so that when using pip, this is from the
# miniforge 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: |
mamba install rosettasciio
- name: Install RosettaSciIO dev
if: contains(matrix.RSIO_VERSION, 'dev')
run: |
pip install "rosettasciio[all] @ git+https://github.com/hyperspy/rosettasciio.git"
- 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] @ git+https://github.com/hyperspy/hyperspy.git@RELEASE_next_patch"
- name: Install HyperSpy RnMinor
if: contains(matrix.HYPERSPY_VERSION, 'RnMinor')
run: |
pip install "hyperspy[all] @ git+https://github.com/hyperspy/hyperspy.git@RELEASE_next_minor"
- name: Install HyperSpy RnMajor
if: contains(matrix.HYPERSPY_VERSION, 'RnMajor')
run: |
pip install "hyperspy[all] @ git+https://github.com/hyperspy/hyperspy.git@RELEASE_next_major"
- 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 git+https://github.com/hyperspy/exspy.git
pip install git+https://github.com/hyperspy/holospy.git
pip install git+https://github.com/lumispy/lumispy.git
# uncomment when kikuchipy supports hyperspy 2
# pip install git+https://github.com/pyxem/kikuchipy.git
pip install git+https://github.com/pyxem/pyxem.git
pip install git+https://github.com/hyperspy/hyperspy_gui_ipywidgets.git
pip install git+https://github.com/hyperspy/hyperspy_gui_traitsui.git
- name: Clear conda and pip cache
run: |
conda clean --all
pip cache purge
- name: Conda list
run: |
conda list
- name: Run HyperSpy Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs hyperspy --reruns 3 -n 2
- name: Run RosettaScio Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs rsciio -n 2
- name: Run hyperspy_gui_ipywidgets Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs hyperspy_gui_ipywidgets
- 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 exspy Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs exspy
- name: Run holospy Test Suite
if: ${{ always() }}
run: |
python -m pytest --pyargs holospy
# - name: Run kikuchipy Test Suite
# 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: |
python -m pytest --pyargs pyxem