Skip to content

Tests

Tests #1499

Workflow file for this run

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