Tox #36
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: Tox | |
on: | |
push: | |
branches: [ master, main, 'maint/*' ] | |
tags: [ '*' ] | |
pull_request: | |
branches: [ master, main, 'maint/*' ] | |
schedule: | |
- cron: '0 0 * * *' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read | |
env: | |
# Force tox and pytest to use color | |
FORCE_COLOR: true | |
TEST_DATA_HOME: /home/runner/testdata/nitransforms-tests | |
jobs: | |
cache-test-data: | |
if: "!contains(github.event.head_commit.message, '[skip ci]')" | |
runs-on: ubuntu-latest | |
outputs: | |
SHA: ${{ steps.test-head.outputs.SHA }} | |
steps: | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v3 | |
- name: Git settings (pacify DataLad) | |
run: | | |
git config --global user.name 'NiPreps Bot' | |
git config --global user.email '[email protected]' | |
- name: Install DataLad | |
run: | | |
$CONDA/bin/conda install -c conda-forge git-annex | |
uv tool install --with=datalad-next --with=datalad-osf datalad | |
- name: Check remote HEAD | |
id: test-head | |
run: | | |
git ls-remote https://gin.g-node.org/oesteban/nitransforms-tests \ | |
| awk '/HEAD/{ print "SHA=" $1 }' >> $GITHUB_OUTPUT | |
- uses: actions/cache@v4 | |
with: | |
path: ${{ env.TEST_DATA_HOME }} | |
key: data-cache-v2-${{ steps.test-head.outputs.SHA }} | |
restore-keys: | | |
data-cache-v2-${{ steps.test-head.outputs.SHA }} | |
data-cache-v2 | |
- name: Install test data | |
run: | | |
export PATH=$CONDA/bin:$PATH | |
mkdir -p /home/runner/testdata | |
datalad install -s https://gin.g-node.org/oesteban/nitransforms-tests $TEST_DATA_HOME | |
datalad update --merge -d $TEST_DATA_HOME | |
datalad get -J 2 -d $TEST_DATA_HOME | |
test: | |
runs-on: ubuntu-latest | |
needs: [cache-test-data] | |
strategy: | |
matrix: | |
python-version: ["3.9", "3.10", "3.11", "3.12", "3.13"] | |
dependencies: [latest, pre] | |
include: | |
- python-version: "3.9" | |
dependencies: min | |
exclude: | |
# Do not test pre-releases for versions out of SPEC0 | |
- python-version: "3.9" | |
dependencies: pre | |
- python-version: "3.10" | |
dependencies: pre | |
env: | |
DEPENDS: ${{ matrix.dependencies }} | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
fetch-depth: 0 | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v3 | |
- uses: actions/cache/restore@v4 | |
with: | |
path: ${{ env.TEST_DATA_HOME }} | |
key: data-cache-v2-${{ needs.cache-test-data.outputs.SHA }} | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Display Python version | |
run: python -c "import sys; print(sys.version)" | |
- name: Install tox | |
run: | | |
uv tool install tox --with=tox-uv --with=tox-gh-actions | |
- name: Show tox config | |
run: tox c | |
- name: Run tox | |
run: tox -v --exit-and-dump-after 1200 | |
- uses: codecov/codecov-action@v4 | |
with: | |
file: coverage.xml | |
token: ${{ secrets.CODECOV_TOKEN }} | |
if: ${{ always() }} | |
checks: | |
runs-on: 'ubuntu-latest' | |
continue-on-error: true | |
strategy: | |
matrix: | |
check: ['style'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install the latest version of uv | |
uses: astral-sh/setup-uv@v3 | |
- name: Show tox config | |
run: uvx tox c | |
- name: Show tox config (this call) | |
run: uvx tox c -e ${{ matrix.check }} | |
- name: Run check | |
run: uvx tox -e ${{ matrix.check }} |