deps: metadata: require valid PEP508 Dependency Specifiers #768
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: CI | |
on: | |
push: | |
branches: [ main ] | |
pull_request: | |
branches: [ main ] | |
workflow_dispatch: | |
branches: [ main ] | |
schedule: | |
- cron: '0 7 * * 1-5' | |
jobs: | |
validate_pyproject: | |
name: Validate pyproject.toml | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
python --version | |
python -m pip install --upgrade pip | |
python -m pip install validate-pyproject[all] | |
- name: Validate pyproject.toml | |
run: | | |
python -m validate_pyproject -vv pyproject.toml | |
lint: | |
name: Lint code base | |
needs: [validate_pyproject] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install dependencies | |
run: | | |
python --version | |
python -m pip install --upgrade pip | |
python -m pip install \ | |
pylint \ | |
black \ | |
pytest \ | |
- name: Pylint | |
run: | | |
python -m pylint -v --rcfile=pyproject.toml . | |
- name: Black | |
run: | | |
python -m black -v --check --diff . | |
unit_tests: | |
name: Run unit tests | |
needs: [lint] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install dependencies and project | |
run: | | |
python --version | |
python -m pip install --upgrade pip | |
python -m pip install \ | |
pytest \ | |
pytest-mock \ | |
pytest-cov \ | |
python -m pip install . | |
- name: Unit tests with coverage | |
run: | | |
export COVERAGE_PROCESS_START="$(pwd)/pyproject.toml" | |
pytest -vra --cov --cov-config=pyproject.toml tests/unit | |
unit_tests_self_run: | |
name: Run unit tests via pyproject_installer | |
needs: [lint] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install dependencies and project | |
run: | | |
python --version | |
python -m pip install --upgrade pip | |
python -m pip install \ | |
pytest \ | |
pytest-mock \ | |
python -m pip install . | |
- name: Unit tests with self run | |
run: | | |
python -m pyproject_installer -v build | |
python -m pyproject_installer -v run -- pytest -vra tests/unit | |
integration_tests: | |
name: Run integration tests | |
needs: [lint] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
python-version: ['3.9', '3.10', '3.11', '3.12', '3.13'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
allow-prereleases: true | |
- name: Install dependencies and project | |
run: | | |
python --version | |
python -m pip install --upgrade pip | |
python -m pip install pytest | |
python -m pip install . | |
- name: integration tests | |
run: | | |
pytest -vra tests/integration |