From e4ef33bc59d94cdc9a4f9514dfc792774d7ed21c Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Sun, 24 Mar 2024 12:18:54 -0600 Subject: [PATCH] ci: combine all test-suite related jobs --- .github/workflows/check-fixtures.yaml | 58 -------------------- .github/workflows/tests.yaml | 77 ++++++++++++++++++++++----- 2 files changed, 63 insertions(+), 72 deletions(-) delete mode 100644 .github/workflows/check-fixtures.yaml diff --git a/.github/workflows/check-fixtures.yaml b/.github/workflows/check-fixtures.yaml deleted file mode 100644 index 68d267ce11b..00000000000 --- a/.github/workflows/check-fixtures.yaml +++ /dev/null @@ -1,58 +0,0 @@ -name: Test Fixture Consistency - -on: - pull_request: - -concurrency: - group: tests-fixture-${{ github.head_ref || github.ref }} - cancel-in-progress: ${{ github.event_name == 'pull_request' }} - -jobs: - changes: - name: Detect changed files - runs-on: ubuntu-latest - outputs: - pypi: ${{ steps.changes.outputs.pypi }} - steps: - - uses: actions/checkout@v4 - - uses: dorny/paths-filter@v3 - id: changes - with: - filters: | - pypi: - - 'tests/repositories/fixtures/pypi.org/**' - - ensure-pypi: - name: PyPI - runs-on: ubuntu-latest - needs: changes - if: needs.changes.outputs.pypi == 'true' - defaults: - run: - shell: bash - steps: - - uses: actions/checkout@v4 - - - name: Bootstrap poetry - run: pipx install poetry - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.12" - cache: poetry - - - name: Configure poetry - run: | - poetry config virtualenvs.in-project true - poetry config virtualenvs.options.no-pip true - poetry config virtualenvs.options.no-setuptools true - - - name: Install dependencies - run: poetry install --only main,test - - - name: Regenerate PyPI fixtures - run: PYTHONPATH="$PWD" poetry run python tests/repositories/fixtures/pypi.org/generate.py - - - name: Check for changed files - run: git diff --exit-code --stat HEAD tests/repositories/fixtures/pypi.org diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml index 49e70bb6ecb..91eb88c7c89 100644 --- a/.github/workflows/tests.yaml +++ b/.github/workflows/tests.yaml @@ -2,24 +2,76 @@ name: Tests on: push: - paths-ignore: - - 'docs/**' - - '.cirrus.yml' - - '.github/workflows/docs.yml' pull_request: - paths-ignore: - - 'docs/**' - - '.cirrus.yml' - - '.github/workflows/docs.yml' concurrency: group: tests-${{ github.head_ref || github.ref }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} +defaults: + run: + shell: bash + jobs: - tests: + changes: + name: Detect changed files + runs-on: ubuntu-latest + permissions: + pull-requests: read + outputs: + fixtures-pypi: ${{ steps.changes.outputs.fixtures-pypi }} + pytest: ${{ steps.changes.outputs.pytest }} + steps: + - uses: actions/checkout@v4 + - uses: dorny/paths-filter@v3 + id: changes + with: + filters: | + fixtures-pypi: + - 'tests/repositories/fixtures/pypi.org/**' + pytest: + - 'pyproject.toml' + - 'poetry.lock' + - 'src/**.py' + - 'tests/**' + + fixtures-pypi: + name: PyPI Fixtures + runs-on: ubuntu-latest + needs: changes + if: needs.changes.outputs.fixtures-pypi == 'true' + steps: + - uses: actions/checkout@v4 + + - name: Bootstrap poetry + run: pipx install poetry + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.12" + cache: poetry + + - name: Configure poetry + run: | + poetry config virtualenvs.in-project true + poetry config virtualenvs.options.no-pip true + poetry config virtualenvs.options.no-setuptools true + + - name: Install dependencies + run: poetry install --only main,test + + - name: Regenerate PyPI fixtures + run: PYTHONPATH="$PWD" poetry run python tests/repositories/fixtures/pypi.org/generate.py + + - name: Check for changed files + run: git diff --exit-code --stat HEAD tests/repositories/fixtures/pypi.org + + pytest: name: ${{ matrix.os }} / ${{ matrix.python-version }} runs-on: ${{ matrix.image }} + needs: changes + if: needs.changes.outputs.fixtures-pypi == 'true' strategy: matrix: os: [Ubuntu, macOS, Windows] @@ -32,9 +84,6 @@ jobs: - os: macOS image: macos-12 fail-fast: false - defaults: - run: - shell: bash steps: - uses: actions/checkout@v4 @@ -70,8 +119,8 @@ jobs: - name: Run pytest env: - POETRY_TEST_INTEGRATION_GIT_USERNAME: ${GITHUB_ACTOR} - POETRY_TEST_INTEGRATION_GIT_PASSWORD: ${{ secrets.GITHUB_TOKEN }} + POETRY_TEST_INTEGRATION_GIT_USERNAME: ${{ github.actor }} + POETRY_TEST_INTEGRATION_GIT_PASSWORD: ${{ github.token }} run: poetry run pytest --integration -v - name: Get Plugin Version (poetry-plugin-export)