-
Notifications
You must be signed in to change notification settings - Fork 7
80 lines (77 loc) · 3.12 KB
/
Copy pathtest.yml
File metadata and controls
80 lines (77 loc) · 3.12 KB
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
name: Test
on:
push:
pull_request:
jobs:
test:
strategy:
fail-fast: false
matrix:
include:
# 3.9 is the oldest interpreter in the field (macOS system python3);
# it is the leg that catches modern-only Python syntax creeping into
# the preamble's embedded scripts.
- os: ubuntu-latest
python-version: '3.9'
- os: ubuntu-latest
python-version: '3.12'
# macOS leg covers BSD grep/sed/awk differences. Pinned to 3.12:
# setup-python has no reliable arm64 3.9 build for macos-latest.
- os: macos-latest
python-version: '3.12'
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
# smoke-test skips the Chrome-extension and landing-page suites when node is
# absent. Declaring it here keeps that skip from silently hiding a failure on a
# runner image that stops preinstalling node.
- uses: actions/setup-node@v4
with:
# 22, not 20: test-rendered-landing.js drives Chrome over the global WebSocket,
# which node exposes unflagged only from 22.4. On 20 it fails with
# "WebSocket is not defined" and the rendered suite never runs.
node-version: '22'
- name: Smoke test
run: ./test/smoke-test.sh
- name: Integration test
run: ./test/integration-test.sh
- name: Manifest-merge unit tests
run: ./test/test-manifest-merge.sh
- name: Version-classifier unit tests
run: ./test/test-version-classifier.sh
- name: Plugin-status unit tests
run: ./test/test-plugin-status.sh
- name: Doctor behavioral tests
run: ./test/test-doctor.sh
- name: Status / readiness behavioral tests
run: ./test/test-status.sh
- name: Preamble embedded-python tests
run: ./test/test-preamble-python.sh
- name: Setup behavioral tests
run: ./test/test-setup.sh
# Confirms the guards above actually fail when their bugs return. Slower
# (copies the repo per mutation), so it runs once rather than per matrix leg.
#
# Pinned to 3.9, the oldest supported interpreter: some defects only exist
# below a given version. PEP 701 (3.12) legalized reusing a quote inside an
# f-string replacement field, so mutating the preamble f-string bug is a
# no-op on 3.12 and the suite would skip that case.
mutation:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.9'
# Mutations 23-32 are guarded only by the node landing-page suites. Without node,
# smoke-test skips them, those mutations report NOT-GUARDED and this job fails. node is
# a hard requirement here, not a hedge against a silent skip. 22 for the same WebSocket
# reason as the test job; mutation 32 additionally needs Chrome.
- uses: actions/setup-node@v4
with:
node-version: '22'
- name: Mutation test
run: ./test/mutation-test.sh