Switch to Ruff & Test Python 3.12 #1556
Workflow file for this run
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: Run Checks | |
on: | |
push: | |
branches: [ "main" ] | |
pull_request: | |
branches: [ "main" ] | |
merge_group: | |
jobs: | |
test: | |
strategy: | |
matrix: | |
python: [ "3.8", "3.9", "3.10", "3.11", "3.12" ] | |
os: [ ubuntu-latest, macos-latest, windows-latest ] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Get Python Version | |
id: get_python_version | |
run: echo "python_version=$(python --version)" >> $GITHUB_OUTPUT | |
shell: bash | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-dependencies-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-dependencies | |
- name: Install Poetry | |
run: pip install poetry | |
- name: Create Virtual Environment | |
run: python -m venv .venv | |
- name: Upgrade pip | |
run: poetry run python -m pip install --upgrade pip | |
- name: Install Dependencies | |
run: poetry install | |
- name: Run Black | |
run: poetry run black . --check | |
- name: Run safety | |
run: poetry export -f requirements.txt | poetry run safety check --bare --stdin | |
- name: Run mypy | |
run: poetry run mypy --show-error-codes openapi_python_client | |
- name: Run Ruff | |
run: poetry run ruff check . | |
- name: Run pytest | |
run: poetry run pytest --cov=openapi_python_client --cov-report=term-missing tests end_to_end_tests/test_end_to_end.py --basetemp=tests/tmp | |
env: | |
TASKIPY: true | |
- name: Generate coverage report | |
shell: bash | |
run: poetry run coverage xml -o coverage-${{ matrix.os }}-${{ matrix.python }}.xml | |
- name: Store coverage report | |
uses: actions/upload-artifact@v3 | |
with: | |
name: coverage-report | |
path: coverage-${{ matrix.os }}-${{ matrix.python }}.xml | |
upload_coverage: | |
needs: test | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/[email protected] | |
- name: Download coverage reports | |
uses: actions/download-artifact@v3 | |
with: | |
name: coverage-report | |
- uses: codecov/codecov-action@v3 | |
with: | |
files: "*.xml" | |
integration: | |
name: Integration Tests | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
httpx_version: | |
- "0.20.0" | |
- "" | |
services: | |
openapi-test-server: | |
image: ghcr.io/openapi-generators/openapi-test-server:0.0.1 | |
ports: | |
- "3000:3000" | |
steps: | |
- uses: actions/[email protected] | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.8" | |
- name: Get Python Version | |
id: get_python_version | |
run: echo "python_version=$(python --version)" >> $GITHUB_OUTPUT | |
- name: Cache dependencies | |
uses: actions/cache@v3 | |
with: | |
path: .venv | |
key: ${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-dependencies-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-dependencies | |
- name: Install dependencies | |
run: | | |
pip install poetry | |
python -m venv .venv | |
poetry run python -m pip install --upgrade pip | |
poetry install | |
- name: Regenerate Integration Client | |
run: | | |
poetry run openapi-python-client update --url http://localhost:3000/openapi.json --config integration-tests-config.yaml | |
- name: Check for any file changes | |
run: python .github/check_for_changes.py | |
- name: Cache Generated Client Dependencies | |
uses: actions/cache@v3 | |
with: | |
path: integration-tests/.venv | |
key: ${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-integration-dependencies-${{ hashFiles('**/poetry.lock') }} | |
restore-keys: | | |
${{ runner.os }}-${{ steps.get_python_version.outputs.python_version }}-integration-dependencies | |
- name: Install Integration Dependencies | |
run: | | |
cd integration-tests | |
python -m venv .venv | |
poetry run python -m pip install --upgrade pip | |
poetry install | |
- name: Set httpx version | |
if: matrix.httpx_version != '' | |
run: | | |
cd integration-tests | |
poetry run pip install httpx==${{ matrix.httpx_version }} | |
- name: Run Tests | |
run: | | |
cd integration-tests | |
poetry run pytest | |
poetry run mypy . --strict | |