summaryrefslogtreecommitdiff
path: root/.github/workflows/primer-test.yaml
blob: 1f6848a2ba1cb4d4e919c77d4a293ddacc4174d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
name: Primer

on:
  push:
    branches:
      - main
  pull_request:
    paths:
      - "pylint/**"
      - "tests/primer/**"
      - "requirements*"
      - ".github/workflows/primer-test.yaml"
    branches:
      - main
env:
  CACHE_VERSION: 3
  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.5.2
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v4.6.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.3.1
        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.5.2
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v4.6.0
        with:
          python-version: ${{ matrix.python-version }}
          check-latest: true
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v3.3.1
        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.5.2
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v4.6.0
        with:
          python-version: ${{ matrix.python-version }}
          check-latest: true
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v3.3.1
        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