summaryrefslogtreecommitdiff
path: root/.github/workflows/primer-test.yaml
blob: d4f7b150487604959e273cc9eb9f1805fde63bba (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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
name: Primer tests

on:
  push:
    branches:
      - main
      - 2.*
  pull_request:
    paths:
      - "pylint/**"
      - "tests/primer/**"

env:
  CACHE_VERSION: 3

concurrency:
  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
  cancel-in-progress: true

jobs:
  prepare-tests-linux:
    name: Prepare tests for Python ${{ matrix.python-version }} (Linux)
    runs-on: ubuntu-latest
    strategy:
      matrix:
        python-version: [3.8, 3.9, "3.10"]
    outputs:
      python-key: ${{ steps.generate-python-key.outputs.key }}
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v2.4.0
        with:
          fetch-depth: 0
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v2.3.1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Generate partial Python venv restore key
        id: generate-python-key
        run: >-
          echo "::set-output name=key::venv-${{ env.CACHE_VERSION }}-${{
            hashFiles('setup.cfg', 'requirements_test.txt', 'requirements_test_min.txt')
          }}"
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v2.1.7
        with:
          path: venv
          key: >-
            ${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
            steps.generate-python-key.outputs.key }}
          restore-keys: |
            ${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ env.CACHE_VERSION }}-
      - 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 primer tests on stdlib Python ${{ matrix.python-version }} (Linux)
    runs-on: ubuntu-latest
    needs: prepare-tests-linux
    strategy:
      matrix:
        python-version: [3.8, 3.9, "3.10"]
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v2.3.5
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v2.3.1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v2.1.7
        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

  pytest-primer-external-batch-one:
    name:
      Run primer tests batch one on external libs Python ${{ matrix.python-version }}
      (Linux)
    runs-on: ubuntu-latest
    needs: prepare-tests-linux
    strategy:
      matrix:
        python-version: [3.8, 3.9, "3.10"]
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v2.3.5
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v2.3.1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v2.1.7
        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

  pytest-primer-external-batch-two:
    name:
      Run primer tests batch two on external libs Python ${{ matrix.python-version }}
      (Linux)
    runs-on: ubuntu-latest
    needs: prepare-tests-linux
    strategy:
      matrix:
        python-version: [3.8, 3.9, "3.10"]
    steps:
      - name: Check out code from GitHub
        uses: actions/checkout@v2.3.5
      - name: Set up Python ${{ matrix.python-version }}
        id: python
        uses: actions/setup-python@v2.3.1
        with:
          python-version: ${{ matrix.python-version }}
      - name: Restore Python virtual environment
        id: cache-venv
        uses: actions/cache@v2.1.7
        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_two --primer-external -n auto