Tests #1499
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: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
schedule: | |
- cron: '0 0 * * 0' | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }} | |
cancel-in-progress: true | |
env: | |
PYPROJ_FULL_COVERAGE: YES | |
DEBIAN_FRONTEND: noninteractive | |
jobs: | |
linting: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- uses: pre-commit/action@v3.0.1 | |
- name: Install mypy | |
run: | | |
python -m pip install mypy types-certifi | |
- name: mypy | |
run: | | |
mypy pyproj | |
docker_tests: | |
needs: linting | |
runs-on: ubuntu-latest | |
name: Docker | python=${{ matrix.python-version }} | PROJ=${{ matrix.proj-version }} | |
container: ghcr.io/osgeo/proj:${{ matrix.proj-version }} | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: ['3.10', '3.11', '3.12'] | |
proj-version: ['9.4.0'] | |
include: | |
- python-version: '3.10' | |
proj-version: '9.3.1' | |
- python-version: '3.10' | |
proj-version: '9.2.1' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Update | |
run: | | |
apt-get update | |
apt-get -y install software-properties-common | |
add-apt-repository -y ppa:deadsnakes/ppa | |
apt-get update | |
- name: Set up Python ${{ matrix.python-version }} | |
run: | | |
apt-get install -y --no-install-recommends \ | |
python${{ matrix.python-version }} \ | |
python${{ matrix.python-version }}-dev \ | |
python${{ matrix.python-version }}-venv \ | |
python3-pip \ | |
g++ | |
- name: Install dependencies | |
run: | | |
python${{ matrix.python-version }} -m venv testenv | |
. testenv/bin/activate | |
python -m pip install --upgrade pip | |
python -m pip install -r requirements-dev.txt | |
python -m pip install -e . | |
python -m pip install -r requirements-test.txt | |
- name: Test | |
shell: bash | |
run: | | |
. testenv/bin/activate | |
python -m pytest --cov-report term-missing --cov=pyproj --cov-report xml | |
- name: Test Network | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
run: | | |
. testenv/bin/activate | |
python -m pytest | |
- name: Test Grids | |
shell: bash | |
run: | | |
. testenv/bin/activate | |
projsync --quiet --bbox -175,0,-50,85 | |
python -m pytest | |
conda_tests: | |
needs: linting | |
name: Conda ${{ matrix.os }} | ${{ matrix.python-implementation }}=${{ matrix.python-version }} | PROJ=${{ matrix.proj-version }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: true | |
matrix: | |
os: [ubuntu-latest, macos-latest, windows-latest] | |
python-version: ['3.10', '3.11', '3.12'] | |
python-implementation: [python] | |
proj-version: ['*'] | |
# DISABLED UNTIL CONDA-FORGE PYPY SUPPORTS PYTHON 3.10+ | |
# include: | |
# - os: ubuntu-latest | |
# python-version: '*' | |
# python-implementation: pypy | |
# proj-version: '*' | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Conda | |
uses: mamba-org/setup-micromamba@v1 | |
with: | |
init-shell: bash | |
environment-name: test | |
create-args: >- | |
${{ matrix.python-implementation }}=${{ matrix.python-version }} | |
cython | |
proj=${{ matrix.proj-version }} | |
numpy | |
shapely | |
xarray | |
pandas | |
- name: Install Env | |
shell: bash | |
run: | | |
if [ "${{ matrix.python-implementation }}" = "pypy" ]; then | |
sed -i.bak '/xarray/d' requirements-test.txt; | |
sed -i.bak '/pandas/d' requirements-test.txt; | |
fi; | |
micromamba run -n test python -m pip install -e . | |
micromamba run -n test python -m pip install -r requirements-test.txt | |
- name: Check and Log Environment | |
shell: bash | |
run: | | |
micromamba run -n test python -V | |
micromamba run -n test pyproj -v | |
micromamba info | |
- name: Install pylint | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
micromamba run -n test python -m pip install pylint | |
- name: pylint | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
micromamba run -n test python -m pylint pyproj | |
- name: Test with Coverage | |
shell: bash | |
if: matrix.python-implementation == 'python' | |
run: | | |
micromamba run -n test python -m pytest --cov-report term-missing --cov=pyproj --cov-report xml | |
- name: Test | |
shell: bash | |
if: matrix.python-implementation == 'pypy' | |
env: | |
PROJ_NETWORK: OFF | |
run: | | |
micromamba run -n test python -m pytest | |
- name: Test Network | |
shell: bash | |
env: | |
PROJ_NETWORK: ON | |
run: | | |
micromamba run -n test python -m pytest | |
- name: Test Grids | |
shell: bash | |
env: | |
PROJ_NETWORK: OFF | |
run: | | |
micromamba run -n test projsync --quiet --bbox -175,0,-50,85 | |
micromamba run -n test python -m pytest | |
- name: Test Build docs | |
shell: bash | |
if: contains(matrix.os, 'ubuntu') && matrix.python-implementation == 'python' | |
run: | | |
micromamba run -n test python -m pip install -r requirements-docs.txt | |
micromamba run -n test sphinx-build -b html docs/ docs/_build/ | |
micromamba run -n test sphinx-build -b man docs/ docs/_build/ | |
- uses: codecov/codecov-action@v4 |