mirror of
https://github.com/OMGeeky/flucto-heisskleber.git
synced 2026-01-07 04:01:32 +01:00
Remove nox, switch to simpler test workflow.
This commit is contained in:
160
.github/workflows/tests.yml
vendored
160
.github/workflows/tests.yml
vendored
@@ -6,143 +6,47 @@ on:
|
||||
|
||||
jobs:
|
||||
tests:
|
||||
name: ${{ matrix.session }} ${{matrix.python }} / ${{ matrix.os }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- { python: "3.10", os: "ubuntu-latest", session: "pre-commit" }
|
||||
# - { python: "3.10", os: "ubuntu-latest", session: "mypy" }
|
||||
- { python: "3.10", os: "ubuntu-latest", session: "tests" }
|
||||
- { python: "3.9", os: "ubuntu-latest", session: "tests" }
|
||||
- { python: "3.10", os: "windows-latest", session: "tests" }
|
||||
- { python: "3.10", os: "macos-latest", session: "tests" }
|
||||
# - { python: "3.10", os: "ubuntu-latest", session: "typeguard" }
|
||||
# - { python: "3.10", os: "ubuntu-latest", session: "xdoctest" }
|
||||
# - { python: "3.10", os: "ubuntu-latest", session: "docs-build" }
|
||||
|
||||
env:
|
||||
NOXSESSION: ${{ matrix.session }}
|
||||
FORCE_COLOR: "1"
|
||||
PRE_COMMIT_COLOR: "always"
|
||||
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python ${{ matrix.python }}
|
||||
uses: actions/setup-python@v4.6.1
|
||||
with:
|
||||
python-version: ${{ matrix.python }}
|
||||
|
||||
- name: Upgrade pip
|
||||
run: |
|
||||
pip install --constraint=.github/workflows/constraints.txt pip
|
||||
pip --version
|
||||
|
||||
- name: Upgrade pip in virtual environments
|
||||
shell: python
|
||||
run: |
|
||||
import os
|
||||
import pip
|
||||
|
||||
with open(os.environ["GITHUB_ENV"], mode="a") as io:
|
||||
print(f"VIRTUALENV_PIP={pip.__version__}", file=io)
|
||||
|
||||
- name: Install Poetry
|
||||
run: |
|
||||
pipx install --pip-args=--constraint=.github/workflows/constraints.txt poetry
|
||||
poetry --version
|
||||
|
||||
- name: Install Nox
|
||||
run: |
|
||||
pipx install --pip-args=--constraint=.github/workflows/constraints.txt nox
|
||||
pipx inject --pip-args=--constraint=.github/workflows/constraints.txt nox nox-poetry
|
||||
nox --version
|
||||
|
||||
- name: Compute pre-commit cache key
|
||||
if: matrix.session == 'pre-commit'
|
||||
id: pre-commit-cache
|
||||
shell: python
|
||||
run: |
|
||||
import hashlib
|
||||
import sys
|
||||
|
||||
python = "py{}.{}".format(*sys.version_info[:2])
|
||||
payload = sys.version.encode() + sys.executable.encode()
|
||||
digest = hashlib.sha256(payload).hexdigest()
|
||||
result = {{ '"${{ runner.os }}-{}-{}-pre-commit".format(python, digest[:8])' }}
|
||||
|
||||
print("::set-output name=result::{}".format(result))
|
||||
|
||||
- name: Restore pre-commit cache
|
||||
uses: actions/cache@v3
|
||||
if: matrix.session == 'pre-commit'
|
||||
with:
|
||||
path: ~/.cache/pre-commit
|
||||
key: ${{ steps.pre-commit-cache.outputs.result }}-${{ hashFiles('.pre-commit-config.yaml') }}
|
||||
restore-keys: |
|
||||
${{ steps.pre-commit-cache.outputs.result }}
|
||||
|
||||
- name: Run Nox
|
||||
run: |
|
||||
nox --python=${{ matrix.python }}
|
||||
|
||||
- name: Upload coverage data
|
||||
if: always() && matrix.session == 'tests'
|
||||
uses: "actions/upload-artifact@v3"
|
||||
with:
|
||||
name: coverage-data
|
||||
path: ".coverage.*"
|
||||
|
||||
- name: Upload documentation
|
||||
if: matrix.session == 'docs-build'
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: docs
|
||||
path: docs/_build
|
||||
|
||||
coverage:
|
||||
runs-on: ubuntu-latest
|
||||
needs: tests
|
||||
steps:
|
||||
- name: Check out the repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Python
|
||||
- name: Set up Python 3.10
|
||||
uses: actions/setup-python@v4.6.1
|
||||
with:
|
||||
python-version: "3.10"
|
||||
python-version: 3.10
|
||||
|
||||
- name: Upgrade pip
|
||||
run: |
|
||||
pip install --constraint=.github/workflows/constraints.txt pip
|
||||
pip --version
|
||||
|
||||
- name: Install Poetry
|
||||
run: |
|
||||
pipx install --pip-args=--constraint=.github/workflows/constraints.txt poetry
|
||||
poetry --version
|
||||
|
||||
- name: Install Nox
|
||||
run: |
|
||||
pipx install --pip-args=--constraint=.github/workflows/constraints.txt nox
|
||||
pipx inject --pip-args=--constraint=.github/workflows/constraints.txt nox nox-poetry
|
||||
nox --version
|
||||
|
||||
- name: Download coverage data
|
||||
uses: actions/download-artifact@v3
|
||||
- name: Cache poetry install
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
name: coverage-data
|
||||
path: ~/.local
|
||||
key: poetry-1.7.1-0
|
||||
|
||||
- name: Combine coverage data and display human readable report
|
||||
run: |
|
||||
nox --session=coverage
|
||||
|
||||
- name: Create coverage report
|
||||
run: |
|
||||
nox --session=coverage -- xml
|
||||
- name: Install poetry
|
||||
uses: snok/install-poetry@v1
|
||||
with:
|
||||
version: 1.7.1
|
||||
virtualenvs-create: true
|
||||
virtualenvs-in-project: true
|
||||
|
||||
- name: Upload coverage report
|
||||
uses: codecov/codecov-action@v3.1.4
|
||||
- name: cache deps
|
||||
id: cache-deps
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: .venv
|
||||
key: pydeps-${{ hashFiles('**/poetry.lock') }}
|
||||
|
||||
- run: poetry install --no-interaction --no-root
|
||||
if: steps.cache-deps.outputs.cache-hit != 'true'
|
||||
|
||||
|
||||
# Now install _your_ project. This isn't necessary for many types of projects -- particularly
|
||||
# things like Django apps don't need this. But it's a good idea since it fully-exercises the
|
||||
# pyproject.toml and makes that if you add things like console-scripts at some point that
|
||||
# they'll be installed and working.
|
||||
- run: poetry install --no-interaction
|
||||
|
||||
# And finally run tests. I'm using pytest and all my pytest config is in my `pyproject.toml`
|
||||
# so this line is super-simple. But it could be as complex as you need.
|
||||
- run: poetry run pytest
|
||||
|
||||
Reference in New Issue
Block a user