Skip to content

Tests

Tests #1239

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
jobs:
linting:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: 3.9
- uses: pre-commit/[email protected]
- 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.9', '3.10', '3.11']
proj-version: ['9.2.0']
include:
- python-version: '3.9'
proj-version: '9.1.1'
- python-version: '3.9'
proj-version: '9.1.0'
- python-version: '3.9'
proj-version: '9.0.1'
steps:
- uses: actions/checkout@v3
- 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 Global Context
shell: bash
env:
PYPROJ_GLOBAL_CONTEXT: ON
run: |
. testenv/bin/activate
python -m pytest
- name: Test Network & Global Context
shell: bash
env:
PROJ_NETWORK: ON
PYPROJ_GLOBAL_CONTEXT: 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.9', '3.10', '3.11']
python-implementation: [python]
proj-version: ['*']
include:
- os: ubuntu-latest
python-version: '*'
python-implementation: pypy
proj-version: '*'
- os: ubuntu-latest
python-version: '*'
python-implementation: python
proj-version: '9.1.1'
steps:
- uses: actions/checkout@v3
- name: Setup Conda
uses: s-weigand/setup-conda@v1
with:
conda-channels: conda-forge
- name: Install Env
shell: bash
run: |
conda config --prepend channels conda-forge
conda config --set channel_priority strict
export INSTALL_DEPS='${{ matrix.python-implementation }}=${{ matrix.python-version }} cython proj=${{ matrix.proj-version }} numpy'
if [ "${{ matrix.os }}" = "macos-latest" -a "${{ matrix.python-version }}" = "3.10" ]; then
sed -i.bak '/shapely/d' requirements-test.txt;
else
export INSTALL_DEPS="${INSTALL_DEPS} shapely";
fi;
if [ "${{ matrix.python-implementation }}" = "pypy" ]; then
sed -i.bak '/xarray/d' requirements-test.txt;
sed -i.bak '/pandas/d' requirements-test.txt;
else
export INSTALL_DEPS="${INSTALL_DEPS} xarray pandas";
fi;
conda create -n test $INSTALL_DEPS
source activate test
python -m pip install -e .
python -m pip install -r requirements-test.txt
- name: Check and Log Environment
shell: bash
run: |
source activate test
python -V
pyproj -v
conda info
- name: Install pylint
shell: bash
if: matrix.python-implementation == 'python'
run: |
source activate test
python -m pip install pylint
- name: pylint
shell: bash
if: matrix.python-implementation == 'python'
run: |
source activate test
pylint pyproj
- name: Test with Coverage
shell: bash
if: matrix.python-implementation == 'python'
run: |
source activate 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: |
source activate test
python -m pytest
- name: Test Network
shell: bash
env:
PROJ_NETWORK: ON
run: |
source activate test
python -m pytest
- name: Test Global Context
shell: bash
env:
PROJ_NETWORK: OFF
PYPROJ_GLOBAL_CONTEXT: ON
run: |
source activate test
python -m pytest
- name: Test Network & Global Context
shell: bash
env:
PROJ_NETWORK: ON
PYPROJ_GLOBAL_CONTEXT: ON
run: |
source activate test
python -m pytest
- name: Test Grids
shell: bash
env:
PROJ_NETWORK: OFF
run: |
source activate test
projsync --quiet --bbox -175,0,-50,85
python -m pytest
- name: Test Build docs
shell: bash
if: contains(matrix.os, 'ubuntu') && matrix.python-implementation == 'python'
run: |
source activate test
python -m pip install -r requirements-docs.txt
sphinx-build -b html docs/ docs/_build/
sphinx-build -b man docs/ docs/_build/
- uses: codecov/codecov-action@v3