name: Primer on: push: branches: - main pull_request: paths: - "pylint/**" - "tests/primer/**" - "requirements*" - ".github/workflows/primer-test.yaml" branches: - main env: CACHE_VERSION: 2 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.3.0 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@v4.5.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', 'requirements_test_pre_commit.txt') }}" >> $GITHUB_OUTPUT - name: Restore Python virtual environment id: cache-venv uses: actions/cache@v3.2.5 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.3.0 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@v4.5.0 with: python-version: ${{ matrix.python-version }} check-latest: true - name: Restore Python virtual environment id: cache-venv uses: actions/cache@v3.2.5 with: path: venv fail-on-cache-miss: true key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ needs.prepare-tests-linux.outputs.python-key }} - 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.3.0 - name: Set up Python ${{ matrix.python-version }} id: python uses: actions/setup-python@v4.5.0 with: python-version: ${{ matrix.python-version }} check-latest: true - name: Restore Python virtual environment id: cache-venv uses: actions/cache@v3.2.5 with: path: venv fail-on-cache-miss: true key: ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{ needs.prepare-tests-linux.outputs.python-key }} - name: Run pytest run: | . venv/bin/activate pip install -e . pytest -m primer_external_batch_one --primer-external -n auto -vv