| name: Primer |
| |
| on: |
| push: |
| branches: |
| - main |
| pull_request: |
| paths: |
| - "pylint/**" |
| - "tests/primer/**" |
| - "requirements*" |
| - ".github/workflows/primer-test.yaml" |
| branches: |
| - main |
| env: |
| CACHE_VERSION: 1 |
| KEY_PREFIX: venv |
| |
| concurrency: |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} |
| cancel-in-progress: true |
| |
| permissions: |
| contents: read |
| |
| jobs: |
| prepare-tests-linux: |
| name: prepare / ${{ matrix.python-version }} / Linux |
| runs-on: ubuntu-latest |
| timeout-minutes: 5 |
| strategy: |
| matrix: |
| python-version: [3.8, 3.9, "3.10", "3.11"] |
| outputs: |
| python-key: ${{ steps.generate-python-key.outputs.key }} |
| steps: |
| - name: Check out code from GitHub |
| uses: actions/checkout@v3.1.0 |
| - name: Set up Python ${{ matrix.python-version }} |
| id: python |
| uses: actions/setup-python@v4.3.0 |
| with: |
| python-version: ${{ matrix.python-version }} |
| check-latest: true |
| - name: Generate partial Python venv restore key |
| id: generate-python-key |
| run: >- |
| echo "key=${{ env.KEY_PREFIX }}-${{ env.CACHE_VERSION }}-${{ |
| hashFiles('pyproject.toml', 'requirements_test.txt', |
| 'requirements_test_min.txt') }}" >> $GITHUB_OUTPUT |
| - name: Restore Python virtual environment |
| id: cache-venv |
| uses: actions/cache@v3.0.11 |
| with: |
| path: venv |
| key: >- |
| ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ |
| steps.generate-python-key.outputs.key }} |
| - name: Create Python virtual environment |
| if: steps.cache-venv.outputs.cache-hit != 'true' |
| run: | |
| python -m venv venv |
| . venv/bin/activate |
| python -m pip install -U pip setuptools wheel |
| pip install -U -r requirements_test.txt |
| |
| pytest-primer-stdlib: |
| name: run on stdlib / ${{ matrix.python-version }} / Linux |
| runs-on: ubuntu-latest |
| timeout-minutes: 10 |
| needs: prepare-tests-linux |
| strategy: |
| matrix: |
| python-version: [3.8, 3.9, "3.10", "3.11"] |
| steps: |
| - name: Check out code from GitHub |
| uses: actions/checkout@v3.1.0 |
| - name: Set up Python ${{ matrix.python-version }} |
| id: python |
| uses: actions/setup-python@v4.3.0 |
| with: |
| python-version: ${{ matrix.python-version }} |
| check-latest: true |
| - name: Restore Python virtual environment |
| id: cache-venv |
| uses: actions/cache@v3.0.11 |
| with: |
| path: venv |
| key: |
| ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ |
| needs.prepare-tests-linux.outputs.python-key }} |
| - name: Fail job if Python cache restore failed |
| if: steps.cache-venv.outputs.cache-hit != 'true' |
| run: | |
| echo "Failed to restore Python venv from cache" |
| exit 1 |
| - name: Run pytest |
| run: | |
| . venv/bin/activate |
| pip install -e . |
| pytest -m primer_stdlib --primer-stdlib -n auto -vv |
| |
| pytest-primer-external-batch-one: |
| name: run on batch one / ${{ matrix.python-version }} / Linux |
| runs-on: ubuntu-latest |
| timeout-minutes: 60 |
| needs: prepare-tests-linux |
| strategy: |
| matrix: |
| python-version: [3.8, 3.9, "3.10", "3.11"] |
| steps: |
| - name: Check out code from GitHub |
| uses: actions/checkout@v3.1.0 |
| - name: Set up Python ${{ matrix.python-version }} |
| id: python |
| uses: actions/setup-python@v4.3.0 |
| with: |
| python-version: ${{ matrix.python-version }} |
| check-latest: true |
| - name: Restore Python virtual environment |
| id: cache-venv |
| uses: actions/cache@v3.0.11 |
| with: |
| path: venv |
| key: |
| ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ |
| needs.prepare-tests-linux.outputs.python-key }} |
| - name: Fail job if Python cache restore failed |
| if: steps.cache-venv.outputs.cache-hit != 'true' |
| run: | |
| echo "Failed to restore Python venv from cache" |
| exit 1 |
| - name: Run pytest |
| run: | |
| . venv/bin/activate |
| pip install -e . |
| pytest -m primer_external_batch_one --primer-external -n auto -vv |