Skip to content

Merge #2176 (Marie-Terrell) - Release 4.17.0 #1037

Merge #2176 (Marie-Terrell) - Release 4.17.0

Merge #2176 (Marie-Terrell) - Release 4.17.0 #1037

name: Conda CI
on:
push:
branches:
- main
tags:
- '*'
pull_request:
#Reduces GH Action duplication:
# Cancels the previous pipeline for this ref it is still running
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
env:
xspec_channel: "https://cxc.cfa.harvard.edu/conda/xspec"
CONDA_BUILD_SYSROOT: ${{ github.workspace }}/11.0SDK/MacOSX11.0.sdk
jobs:
tests:
defaults:
run:
shell: bash
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
include:
- name: MacOS Full Build
os: macos-12
python-version: "3.10"
install-type: develop
fits: astropy
test-data: submodule
matplotlib-version: 3
xspec-version: 12.14.0i
- name: Linux Minimum Setup (Python 3.10)
os: ubuntu-latest
python-version: "3.10"
numpy-version: "1.24"
install-type: develop
test-data: none
- name: Linux Minimum Setup (Python 3.11)
os: ubuntu-latest
python-version: "3.11"
numpy-version: "1.24"
install-type: develop
test-data: none
- name: Linux Full Build (Python 3.12)
os: ubuntu-latest
python-version: "3.12"
install-type: develop
fits: astropy
test-data: submodule
matplotlib-version: 3
bokeh-version: 3
xspec-version: 12.14.0i
- name: Linux Full Build (Python 3.11)
os: ubuntu-latest
python-version: "3.11"
install-type: develop
fits: astropy
test-data: submodule
matplotlib-version: 3
bokeh-version: 3
xspec-version: 12.14.0i
- name: Linux Full Build (Python 3.10)
os: ubuntu-latest
python-version: "3.10"
install-type: develop
fits: astropy
test-data: submodule
matplotlib-version: 3
xspec-version: 12.13.1
- name: Linux Build (w/o Astropy or Xspec)
os: ubuntu-latest
python-version: "3.11"
install-type: install
test-data: package
matplotlib-version: 3
- name: Linux Build (w/o Matplotlib, Xspec, or test data)
os: ubuntu-latest
python-version: "3.12"
numpy-version: "1.26"
install-type: develop
fits: astropy
test-data: none
steps:
- name: Checkout Code
uses: actions/[email protected]
with:
submodules: 'True'
# https://stackoverflow.com/questions/63648591/how-to-install-x11-before-testing-with-github-actions-for-macos
- name: Install XQuartz on macOS
if: runner.os == 'macOS'
run: |
brew install --cask xquartz
- name: Conda Setup
env:
PYTHONVER: ${{ matrix.python-version }}
NUMPYVER: ${{ matrix.numpy-version }}
FITSBUILD: ${{ matrix.fits }}
MATPLOTLIBVER: ${{ matrix.matplotlib-version }}
BOKEHVER: ${{ matrix.bokeh-version }}
XSPECVER: ${{ matrix.xspec-version }}
run: |
source .github/scripts/setup_conda.sh
- name: Conda Setup (Xspec and DS9)
if: matrix.xspec-version != ''
env:
XSPECVER: ${{ matrix.xspec-version }}
run: |
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
if [ "$RUNNER_OS" != "macOS" ]; then
source .github/scripts/setup_ds9.sh
# We need xvfb to run the tests so ensure it's installed
pip install pytest-xvfb
fi
source .github/scripts/setup_xspec.sh
- name: Build Sherpa (install)
if: matrix.install-type == 'install'
env:
PYTHON_LDFLAGS: " "
run: |
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
pip install .[test] --verbose
- name: Build Sherpa (develop)
if: matrix.install-type == 'develop'
env:
PYTHON_LDFLAGS: " "
run: |
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
pip install -e .[test] --verbose
- name: Install the test data?
if: matrix.test-data == 'package'
run: |
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
pip install ./sherpa-test-data
- name: Remove submodule
if: matrix.test-data == 'none' || matrix.test-data == 'package'
run: |
git submodule deinit -f .
# run the smoke test first as it's small/quick to do
- name: Smoke Tests
env:
XSPECVER: ${{ matrix.xspec-version }}
FITS: ${{ matrix.fits }}
run: |
if [ -n "${XSPECVER}" ]; then XSPECTEST="-x -d"; fi
if [ -n "${FITS}" ] ; then FITSTEST="-f ${FITS}"; fi
smokevars="${XSPECTEST} ${FITSTEST} -v 3"
# special case the macOS build as we currently do not
# include DS9; as we know the XSPECVER/FITS sittings for
# this it is hard-coded
if [ "$RUNNER_OS" == "macOS" ]; then
smokevars="-x -f ${FITS} -v 3"
fi
echo "** smoke test: ${smokevars}"
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
cd /home
sherpa_smoke ${smokevars}
- name: Internal check
if: matrix.test-data == 'submodule' && matrix.install-type != 'develop'
env:
INSTALLTYPE: ${{ matrix.install-type }}
run: |
# This may not be relevant any more but left in as a
# warning note. We could change this to say something
# like the following, but with a way of pointing to
# the test-data directory
#
# cd $HOME
# pytest --pyargs sherpa --cov sherpa --cov-report xml:${{ github.workspace }}/coverage.xml
#
# but is it worth it?
#
echo "ERROR: submodule test can not be run with install-type=${INSTALLTYPE}"
exit 1
- name: Submodule Tests
if: matrix.test-data == 'submodule'
env:
INSTALLTYPE: ${{ matrix.install-type }}
run: |
if [ "$RUNNER_OS" == "macOS" ]; then
# make sure pytext-xvfb can find Xvfb
# Note that it looks like macOS does not install DS9 at the
# moment, but leave this in
export PATH="${PATH}:/opt/X11/bin"
fi
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
conda install -yq pytest-cov
pytest --pyargs sherpa --cov sherpa --cov-report xml:${{ github.workspace }}/coverage.xml
- name: sherpa_test Tests
if: matrix.test-data == 'package' || matrix.test-data == 'none'
run: |
source ${CONDA}/etc/profile.d/conda.sh
conda activate build
conda install -yq pytest-cov
cd $HOME
sherpa_test --cov sherpa --cov-report xml:${{ github.workspace }}/coverage.xml
- name: upload coverage
uses: codecov/codecov-action@v4
with:
token: ${{ secrets.CODECOV_TOKEN }}
files: ${{ github.workspace }}/coverage.xml
verbose: true