Skip to content

Refactor nox to separate integration tests #9282

Refactor nox to separate integration tests

Refactor nox to separate integration tests #9282

Workflow file for this run

name: 🔂 Unit tests
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
on:
push:
branches: [main]
pull_request:
branches: [main]
paths:
- "strawberry/**"
- "tests/**"
- "pyproject.toml"
- "poetry.lock"
- ".github/workflows/test.yml"
jobs:
generate-jobs-tests:
name: 💻 Generate test matrix
runs-on: ubuntu-latest
outputs:
sessions: ${{ steps.set-matrix.outputs.sessions }}
steps:
- uses: actions/checkout@v3
- uses: wntrblm/nox@main
- run: pipx install poetry
- run: pipx inject nox nox-poetry
- id: set-matrix
shell: bash
run: |
echo sessions=$(
nox --json -t tests -l |
jq 'map(
{
session,
name: "\( .name ) on \( .python )\( if .call_spec != {} then " (\(.call_spec | to_entries | map("\(.key)=\(.value)") | join(", ")))" else "" end )"
}
)'
) | tee --append $GITHUB_OUTPUT
unit-tests:
name: 🔬 ${{ matrix.session.name }}
needs: [generate-jobs-tests]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
session: ${{ fromJson(needs.generate-jobs-tests.outputs.sessions) }}
steps:
- uses: actions/checkout@v3
- uses: wntrblm/nox@main
with:
python-versions: "3.7, 3.8, 3.9, 3.10, 3.11"
- name: Pip and nox cache
id: cache
uses: actions/cache@v3
with:
path: |
~/.cache
~/.nox
.nox
key:
${{ runner.os }}-nox-${{ matrix.session.session }}-${{
hashFiles('**/poetry.lock') }}-${{ hashFiles('**/noxfile.py') }}
restore-keys: |
${{ runner.os }}-nox-${{ matrix.session.session }}-
${{ runner.os }}-nox-
- run: pipx install coverage
- run: pipx install poetry
- run: pipx inject nox nox-poetry
- run: nox -r -t tests -s "${{ matrix.session.session }}"
- name: coverage xml
run: coverage xml -i
if: ${{ always() }}
- uses: codecov/codecov-action@v3
if: ${{ always() }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true
benchmarks:
name: 📈 Benchmarks
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- run: pipx install poetry
- uses: actions/setup-python@v4
id: setup-python
with:
python-version: "3.11"
architecture: x64
cache: "poetry"
- run: poetry env use 3.11
- run: poetry install
if: steps.setup-python.outputs.cache-hit != 'true'
- name: Run benchmarks
uses: CodSpeedHQ/action@v1
with:
token: ${{ secrets.CODSPEED_TOKEN }}
run: poetry run pytest tests/benchmarks --codspeed
lint:
name: ✨ Lint
runs-on: ubuntu-latest
strategy:
fail-fast: false
steps:
- uses: actions/checkout@v3
- uses: wntrblm/nox@main
with:
python-versions: "3.7, 3.8, 3.9, 3.10, 3.11"
- name: Pip and nox cache
id: cache
uses: actions/cache@v3
with:
path: |
~/.cache
~/.nox
.nox
key:
${{ runner.os }}-nox-lint-${{ matrix.session.session }}-${{
hashFiles('**/poetry.lock') }}-${{ hashFiles('**/noxfile.py') }}
restore-keys: |
${{ runner.os }}-lint-nox-${{ matrix.session.session }}-
${{ runner.os }}-lint-nox-
- run: pipx install poetry
- run: pipx inject nox nox-poetry
- run: nox -r -t lint
unit-tests-on-windows:
name: 🪟 Tests on Windows
runs-on: windows-latest
steps:
- uses: actions/checkout@v3
- run: pipx install poetry
- run: pipx install coverage
- uses: actions/setup-python@v4
id: setup-python
with:
python-version: "3.11"
cache: "poetry"
- run: poetry install --with integrations
if: steps.setup-python.outputs.cache-hit != 'true'
# we use poetry directly instead of nox since we want to
# test all integrations at once on windows
- run: |
poetry run pytest --cov=. --cov-append --cov-report=xml -n auto --showlocals -vv
- name: coverage xml
run: coverage xml -i
if: ${{ always() }}
- uses: codecov/codecov-action@v3
if: ${{ always() }}
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
verbose: true