|
36 | 36 | run: poetry install --no-interaction --no-ansi |
37 | 37 | - name: Run pre-commit on all files |
38 | 38 | run: poetry run pre-commit run --all-files |
39 | | - tests: |
40 | | - name: pytest |
41 | | - runs-on: ubuntu-latest |
42 | | - needs: lint |
43 | | - |
44 | | - steps: |
45 | | - - name: Checkout |
46 | | - uses: actions/checkout@v4 |
47 | | - |
48 | | - - name: Set up Python ${{ matrix.python-version }} |
49 | | - uses: actions/setup-python@v5 |
50 | | - with: |
51 | | - python-version: '3.13' |
52 | | - cache: 'pip' |
53 | | - - name: Install NetCDF |
54 | | - run: sudo apt-get update && sudo apt-get install -y libnetcdf-dev libnetcdff-dev |
55 | | - - name: Install ESMF |
56 | | - uses: esmf-org/install-esmf-action@v1 |
57 | | - env: |
58 | | - ESMF_NETCDF: nc-config |
59 | | - ESMF_INSTALL_PREFIX: $HOME/ESMF |
60 | | - with: |
61 | | - version: latest |
62 | | - esmpy: false |
63 | | - - name: Pin esmpy to ESMF tag |
64 | | - run: | |
65 | | - set -euo pipefail |
66 | | - MK="$HOME/ESMF/lib/esmf.mk" |
67 | | - VER=$(awk -F= '/^ESMF_VERSION_STRING[[:space:]]*=/{gsub(/[[:space:]]*/,"",$2); print $2}' "$MK") |
68 | | - # Normalize to plain semver if needed (drop anything after first non-semver char) |
69 | | - VER_CLEAN=$(python - "$VER" <<'PY' |
70 | | -import re, sys |
71 | | -v=sys.argv[1] |
72 | | -m=re.match(r'^(\d+\.\d+\.\d+)', v) |
73 | | -print(m.group(1) if m else v) |
74 | | -PY |
75 | | -) |
76 | | - TAG="v${VER_CLEAN}" |
77 | | - echo "Detected ESMF ${VER} -> using ESMPy tag ${TAG}" |
78 | | - |
79 | | - # remove any existing esmpy dep and add the exact git subdir tag |
80 | | - poetry remove esmpy || true |
81 | | - poetry add --lock --no-interaction \ |
82 | | - "esmpy@git+https://github.com/esmf-org/esmf.git@${TAG}#subdirectory=src/addon/esmpy" |
83 | | - |
84 | | - - name: Install Poetry |
85 | | - run: | |
86 | | - python -m pip install --upgrade pip pipx |
87 | | - pipx install poetry |
88 | | - poetry --version |
89 | | - poetry config virtualenvs.in-project true |
90 | | - poetry env use "$(python -c 'import sys; print(sys.executable)')" |
91 | | - poetry install --no-interaction --no-ansi |
92 | | - poetry run python -c "import esmpy; print('ESMPy:', esmpy.__version__)" |
93 | | - - name: Cache virtualenv |
94 | | - uses: actions/cache@v4 |
95 | | - with: |
96 | | - path: .venv |
97 | | - key: venv-${{ runner.os }}-py${{ matrix.python-version }}-${{ hashFiles('**/poetry.lock') }} |
98 | | - restore-keys: | |
99 | | - venv-${{ runner.os }}-py${{ matrix.python-version }}- |
100 | | - venv-${{ runner.os }}- |
101 | | -
|
102 | | - - name: Run pytest |
103 | | - env: |
104 | | - ESMFMKFILE: ${{ env.ESMFMKFILE }} |
105 | | - LD_LIBRARY_PATH: ${{ env.ESMF_INSTALL_PREFIX }}/lib:${{ env.LD_LIBRARY_PATH }} |
106 | | - run: poetry run pytest -q |
107 | 39 | # the following can be used by developers to login to the github server in case of errors |
108 | 40 | # see https://github.com/marketplace/actions/debugging-with-tmate for further details |
109 | 41 | # - name: Setup tmate session |
|
0 commit comments