-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathaction.yaml
More file actions
123 lines (98 loc) · 3.04 KB
/
action.yaml
File metadata and controls
123 lines (98 loc) · 3.04 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
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
name: "partdiff_tester"
description: "Runs correctness tests on a partdiff executable"
inputs:
executable:
description: "Path to partdiff executable."
required: true
strictness:
description: "Strictness level (0–4)."
required: false
default: "1"
valgrind:
description: "Use valgrind to execute the given executable."
required: false
default: "false"
max_num_tests:
description: "Maximum number of tests (0 = unlimited)"
required: false
default: "0"
reference_source:
description: "Reference output source: auto, cache, impl"
required: false
default: "cache"
num_threads:
description: "Number of threads (supports ranges like 1-3,5-6)"
required: false
default: "1"
filter:
description: "Newline-separated list of filters, each is passed as --filter=...."
required: false
default: ""
cwd:
description: "Working directory for executable"
required: false
default: "$GITHUB_WORKSPACE"
shuffle:
description: "Shuffle test cases (empty = no shuffle, value = seed)"
required: false
default: ""
allow_extra_iterations:
description: "Extra iterations allowed (-1 = unlimited, 0 = none)"
required: false
default: "0"
timeout:
description: "Timeout in seconds for executable"
required: false
default: ""
runs:
using: "composite"
steps:
- name: Install uv
uses: astral-sh/setup-uv@v6
with:
version: "0.9.8"
- name: Set up Python
run: uv python install
shell: bash
- name: Install Valgrind
if: inputs.valgrind == 'true'
run: sudo apt-get update && sudo apt-get install -y valgrind
shell: bash
- name: Run correctness tests
shell: bash
run: |
set -e
cd "$GITHUB_ACTION_PATH"
if [[ ! "${{ inputs.cwd }}" = /* ]]; then
ARGS_CWD="$(realpath -m "$GITHUB_WORKSPACE/${{ inputs.cwd }}")"
else
ARGS_CWD="${{ inputs.cwd }}"
fi
ARGS=(
--executable="${{ inputs.executable }}"
--strictness="${{ inputs.strictness }}"
--max-num-tests="${{ inputs.max_num_tests }}"
--reference-source="${{ inputs.reference_source }}"
--num-threads="${{ inputs.num_threads }}"
--allow-extra-iterations="${{ inputs.allow_extra_iterations }}"
--cwd="$ARGS_CWD"
)
if [ "${{ inputs.valgrind }}" = "true" ]; then
ARGS+=(--valgrind)
fi
while IFS= read -r f; do
[[ -z "$f" ]] && continue
ARGS+=(--filter="$f")
done <<< "${{ inputs.filter }}"
if [ -n "${{ inputs.shuffle }}" ]; then
ARGS+=(--shuffle="${{ inputs.shuffle }}")
fi
if [ -n "${{ inputs.timeout }}" ]; then
ARGS+=(--timeout="${{ inputs.timeout }}")
fi
PARTDIFF_TESTER_CMD=(
uv run pytest -n auto --verbose "${ARGS[@]}"
)
echo "Running partdiff_tester:"
echo "${PARTDIFF_TESTER_CMD[@]}"
"${PARTDIFF_TESTER_CMD[@]}"