prevent test extras install from overriding dependency versions specified in environment.yaml
#163
Workflow file for this run
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: | |
pull_request: | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
defaults: | |
run: | |
shell: micromamba-shell {0} | |
env: | |
PYSYN_CDBS: /tmp/trds | |
jref: https://ssb.stsci.edu/trds_open/jref | |
lref: https://ssb.stsci.edu/cdbs/lref | |
CRDS_PATH: /tmp/crds_cache | |
CRDS_CLIENT_RETRY_COUNT: 3 | |
CRDS_CLIENT_RETRY_DELAY_SECONDS: 20 | |
LD_LIBRARY_PATH: /usr/local/lib | |
jobs: | |
build: | |
uses: ./.github/workflows/build.yaml | |
test_installed: | |
needs: [ build, crds_contexts ] | |
strategy: | |
fail-fast: false | |
matrix: | |
package: [ acstools, asdf, ccdproc, costools, jwst, reftools, synphot, wfpc2tools ] | |
# the macOS 13 runner is on Intel hardware | |
runs-on: [ ubuntu-latest, macos-13, macos-latest ] | |
python-version: [ '3.10', '3.11', '3.12' ] | |
include: | |
- package: acstools | |
test-dependencies: >- | |
matplotlib | |
scipy | |
scikit-image | |
stsci.tools | |
stsci.imagestats | |
photutils | |
dask | |
pytest | |
pytest-astropy-header | |
pytest-remotedata | |
ci-watson | |
pytest-args: --remote-data -v | |
- package: asdf | |
test-dependencies: >- | |
"lz4>=0.10" | |
"fsspec[http]>=2022.8.2" | |
"lz4>=0.10" | |
psutil | |
"pytest>=8" | |
pytest-remotedata | |
pytest-args: --remote-data --durations=10 | |
- package: ccdproc | |
test-dependencies: >- | |
pytest-astropy>=0.10.0 | |
memory_profiler | |
pytest-args: -W ignore | |
- package: costools | |
test-dependencies: >- | |
pytest | |
pytest-cov | |
- package: jwst | |
test-dependencies: >- | |
"ci-watson>=0.5.0" | |
"colorama>=0.4.1" | |
"readchar>=3.0" | |
ruff | |
"pytest>=6.0.0" | |
"pytest-cov>=2.9.0" | |
"pytest-doctestplus>=0.10.0" | |
"requests_mock>=1.0" | |
crds-observatory: jwst | |
- package: pysynphot | |
test-dependencies: >- | |
pytest | |
pytest-remotedata | |
- package: reftools | |
test-dependencies: >- | |
pytest-remotedata | |
pytest-astropy-header | |
- package: synphot | |
test-dependencies: >- | |
pytest-astropy | |
- package: wfpc2tools | |
exclude: | |
- runs-on: macos-13 | |
python-version: '3.10' | |
- runs-on: macos-13 | |
python-version: '3.11' | |
- runs-on: macos-latest | |
python-version: '3.10' | |
- runs-on: macos-latest | |
python-version: '3.11' | |
runs-on: ${{ matrix.runs-on }} | |
name: "`pytest --pyargs ${{ matrix.package }} -n auto ${{ matrix.pytest-args }}` (${{ matrix.runs-on }}, py${{ matrix.python-version }})" | |
steps: | |
- if: matrix.crds-observatory != '' | |
run: | | |
echo CRDS_OBSERVATORY=${{ matrix.crds-observatory }} >> $GITHUB_ENV | |
echo CRDS_SERVER_URL=https://${{ matrix.crds-observatory }}-crds.stsci.edu >> $GITHUB_ENV | |
echo CRDS_CONTEXT=${{ matrix.crds-observatory == 'hst' && needs.crds_contexts.outputs.hst || matrix.crds-observatory == 'jwst' && needs.crds_contexts.outputs.jwst || matrix.crds-observatory == 'roman' && needs.crds_contexts.outputs.roman || '' }} >> $GITHUB_ENV | |
shell: bash | |
- if: env.CRDS_CONTEXT != '' | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CRDS_PATH }} | |
key: crds-${{ matrix.package }}-${{ env.CRDS_CONTEXT }} | |
- uses: actions/checkout@v4 | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: stenv-${{ runner.os }}-py${{ matrix.python-version }} | |
environment-file: environment.yaml | |
create-args: >- | |
python=${{ matrix.python-version }} | |
cache-downloads: true | |
cache-downloads-key: downloads-${{ needs.build.outputs.date }} | |
cache-environment: true | |
cache-environment-key: environment-${{ needs.build.outputs.date }} | |
init-shell: none | |
generate-run-shell: true | |
- run: pip install ${{ matrix.test-dependencies }} pytest pytest-xdist | |
- run: pip list | |
- run: pytest --pyargs ${{ matrix.package }} ${{ matrix.pytest-args }} -n auto | |
test_from_source: | |
needs: [ build, crds_contexts ] | |
strategy: | |
matrix: | |
package: [ hstcal, calcos ] | |
# the macOS 13 runner is on Intel hardware | |
runs-on: [ ubuntu-latest, macos-13, macos-latest ] | |
python-version: [ '3.10', '3.11', '3.12' ] | |
include: | |
- package: calcos | |
repository: spacetelescope/calcos | |
test-dependencies: >- | |
ci-watson | |
pytest | |
pytest-cov | |
pytest-args: --slow | |
- package: drizzlepac | |
repository: spacetelescope/drizzlepac | |
test-dependencies: >- | |
ci_watson | |
crds | |
pytest | |
pytest-remotedata | |
- package: hstcal | |
repository: spacetelescope/hstcal | |
test-dependencies: >- | |
crds | |
ci_watson | |
pytest-args: --slow | |
test-directory: tests | |
crds-observatory: hst | |
- package: stistools | |
repository: spacetelescope/stistools | |
- package: stsynphot | |
repository: spacetelescope/stsynphot_refactor | |
test-dependencies: >- | |
pytest-astropy | |
ci-watson | |
exclude: | |
- runs-on: macos-13 | |
python-version: '3.10' | |
- runs-on: macos-13 | |
python-version: '3.11' | |
- runs-on: macos-latest | |
python-version: '3.10' | |
- runs-on: macos-latest | |
python-version: '3.11' | |
fail-fast: false | |
runs-on: ${{ matrix.runs-on }} | |
name: "`pytest ${{ matrix.package }}/${{ matrix.test-directory }} ${{ matrix.pytest-args }} -n auto` (${{ matrix.runs-on }}, py${{ matrix.python-version }})" | |
steps: | |
- if: matrix.crds-observatory != '' | |
run: | | |
echo CRDS_OBSERVATORY=${{ matrix.crds-observatory }} >> $GITHUB_ENV | |
echo CRDS_SERVER_URL=${{ matrix.crds-observatory }}-crds.stsci.edu >> $GITHUB_ENV | |
echo CRDS_CONTEXT=${{ matrix.crds-observatory == 'hst' && needs.crds_contexts.outputs.hst || matrix.crds-observatory == 'jwst' && needs.crds_contexts.outputs.jwst || matrix.crds-observatory == 'roman' && needs.crds_contexts.outputs.roman || '' }} >> $GITHUB_ENV | |
shell: bash | |
- if: env.CRDS_CONTEXT != '' | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CRDS_PATH }} | |
key: crds-${{ matrix.package }}-${{ env.CRDS_CONTEXT }} | |
- uses: actions/checkout@v4 | |
with: | |
path: stenv | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: stenv-${{ runner.os }}-py${{ matrix.python-version }} | |
environment-file: stenv/environment.yaml | |
create-args: >- | |
python=${{ matrix.python-version }} | |
cache-downloads: true | |
cache-downloads-key: downloads-${{ needs.build.outputs.date }} | |
cache-environment: true | |
cache-environment-key: environment-${{ needs.build.outputs.date }} | |
init-shell: none | |
generate-run-shell: true | |
- run: echo "version=$(pip list | awk '$1 == "${{ matrix.package }}" {print $2}')" >> $GITHUB_OUTPUT | |
id: package_version | |
# TODO: figure out a better way to use package version when checking out a Git ref | |
- uses: actions/checkout@v4 | |
with: | |
path: ${{ matrix.package }} | |
repository: ${{ matrix.repository }} | |
ref: ${{ steps.package_version.outputs.version }} | |
fetch-depth: 0 | |
- run: pip install ${{ matrix.test-dependencies }} pytest pytest-xdist | |
- run: pip list | |
- if: matrix.pre_command != '' | |
run: ${{ matrix.pre_command }} | |
working-directory: ${{ matrix.package }} | |
- run: pytest ${{ matrix.test-directory }} ${{ matrix.pytest-args }} -n auto | |
working-directory: ${{ matrix.package }} | |
crds_contexts: | |
uses: spacetelescope/crds/.github/workflows/contexts.yml@master | |
crds_test_cache: | |
uses: spacetelescope/crds/.github/workflows/cache.yml@master | |
test_crds_with_data: | |
needs: [ build, crds_test_cache ] | |
strategy: | |
fail-fast: false | |
matrix: | |
package: [ crds ] | |
# the macOS 13 runner is on Intel hardware | |
runs-on: [ ubuntu-latest, macos-13, macos-latest ] | |
python-version: [ '3.10', '3.11', '3.12' ] | |
include: | |
- package: crds | |
repository: spacetelescope/crds | |
exclude: | |
- runs-on: macos-13 | |
python-version: '3.10' | |
- runs-on: macos-13 | |
python-version: '3.11' | |
- runs-on: macos-latest | |
python-version: '3.10' | |
- runs-on: macos-latest | |
python-version: '3.11' | |
runs-on: ${{ matrix.runs-on }} | |
name: "`crds` `./runtests --cover` (${{ matrix.runs-on }}, py${{ matrix.python-version }})" | |
env: | |
CRDS_PATH: /tmp/crds-cache-default-test | |
CRDS_TEST_ROOT: /tmp | |
CRDS_TESTING_CACHE: /tmp/crds-cache-test | |
CRDS_SERVER_URL: https://hst-crds.stsci.edu | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
path: stenv | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: stenv-${{ runner.os }}-py${{ matrix.python-version }} | |
environment-file: stenv/environment.yaml | |
create-args: >- | |
python=${{ matrix.python-version }} | |
cache-downloads: true | |
cache-downloads-key: downloads-${{ needs.build.outputs.date }} | |
cache-environment: true | |
cache-environment-key: environment-${{ needs.build.outputs.date }} | |
init-shell: none | |
generate-run-shell: true | |
- run: micromamba install -y filelock requests | |
- run: pip install parsely roman-datamodels git+https://github.com/spacetelescope/jwst | |
- run: pip list | |
- run: echo "version=$(pip list | awk '$1 == "${{ matrix.package }}" {print $2}')" >> $GITHUB_OUTPUT | |
id: package_version | |
# TODO: figure out a better way to use package version when checking out a Git ref | |
- uses: actions/checkout@v4 | |
with: | |
path: ${{ matrix.package }} | |
repository: ${{ matrix.repository }} | |
ref: ${{ steps.package_version.outputs.version }} | |
fetch-depth: 0 | |
- run: pip uninstall --yes crds && ./install && pip install .[submission,test,docs,synphot] | |
working-directory: ${{ matrix.package }} | |
- uses: actions/cache@v4 | |
with: | |
path: | | |
${{ needs.crds_test_cache.outputs.path }} | |
${{ needs.crds_test_cache.outputs.testing_cache }} | |
key: ${{ needs.crds_test_cache.outputs.key }} | |
- run: ./runtests --cover | |
working-directory: ${{ matrix.package }} | |
test_for_smoke: | |
needs: [ build ] | |
strategy: | |
matrix: | |
package: [ calcos, drizzlepac ] | |
# the macOS 13 runner is on Intel hardware | |
runs-on: [ ubuntu-latest, macos-13, macos-latest ] | |
python-version: [ '3.10', '3.11', '3.12' ] | |
include: | |
- package: calcos | |
run: calcos la8n01qkq_rawtag_a.fits | |
crds-observatory: hst | |
jref: hst/references/hst | |
- package: drizzlepac | |
run: pytest -n auto tests/test_drizzlepac.py | |
crds-observatory: hst | |
jref: hst/references/hst | |
exclude: | |
- runs-on: macos-13 | |
python-version: '3.10' | |
- runs-on: macos-13 | |
python-version: '3.11' | |
- runs-on: macos-latest | |
python-version: '3.10' | |
- runs-on: macos-latest | |
python-version: '3.11' | |
fail-fast: false | |
runs-on: ${{ matrix.runs-on }} | |
name: "`${{ matrix.run }}` (${{ matrix.runs-on }}, py${{ matrix.python-version }})" | |
env: | |
jref: /tmp/crds_cache/${{ matrix.jref }} | |
steps: | |
- if: matrix.crds-observatory != '' | |
run: | | |
echo CRDS_OBSERVATORY=${{ matrix.crds-observatory }} >> $GITHUB_ENV | |
echo CRDS_SERVER_URL=${{ matrix.crds-observatory }}-crds.stsci.edu >> $GITHUB_ENV | |
echo CRDS_CONTEXT=${{ matrix.crds-observatory == 'hst' && needs.crds_contexts.outputs.hst || matrix.crds-observatory == 'jwst' && needs.crds_contexts.outputs.jwst || matrix.crds-observatory == 'roman' && needs.crds_contexts.outputs.roman || '' }} >> $GITHUB_ENV | |
shell: bash | |
- if: env.CRDS_CONTEXT != '' | |
uses: actions/cache@v4 | |
with: | |
path: ${{ env.CRDS_PATH }} | |
key: crds-${{ matrix.package }}-${{ env.CRDS_CONTEXT }} | |
- uses: actions/checkout@v4 | |
with: | |
lfs: true | |
- uses: mamba-org/setup-micromamba@v1 | |
with: | |
environment-name: stenv-${{ runner.os }}-py${{ matrix.python-version }} | |
environment-file: environment.yaml | |
create-args: >- | |
python=${{ matrix.python-version }} | |
cache-downloads: true | |
cache-downloads-key: downloads-${{ needs.build.outputs.date }} | |
cache-environment: true | |
cache-environment-key: environment-${{ needs.build.outputs.date }} | |
init-shell: none | |
generate-run-shell: true | |
- run: pip install pytest-xdist | |
- if: matrix.test-dependencies != '' | |
run: pip install ${{ matrix.test-dependencies }} | |
- run: pip list | |
- uses: actions/cache@v4 | |
with: | |
path: tests/data/ | |
key: data-${{ hashFiles('tests/data/*') }} | |
- run: ${{ matrix.run }} |