Skip to content

Commit 17bd110

Browse files
peffgitster
authored andcommitted
ci(windows-meson-test): handle options and output like other test jobs
The GitHub windows-meson-test jobs directly run "meson test" with the --slice option. This means they skip all of the ci/lib.sh infrastructure, and in particular: 1. They do not actually set any GIT_TEST_OPTS like --verbose-log or -x. 2. They do not do the usual handle_failed_tests() magic to print test failures or tar up failed directories. As a result, you get almost no feedback at all when a test fails in this job, making debugging rather tricky. Let's try to make this behave more like the other CI jobs. Because we're on Windows, we can't just use the normal run-build-and-tests.sh script. Our build runs as a separate job (like the non-meson Windows job), and then we parallelize the tests across several job slices. So we need something like the run-test-slice.sh script that the "windows-test" job uses. In theory we could just swap out the "make" invocation there for "meson". But it doesn't quite work, because "make" knows how to pull GIT_TEST_OPTS out of GIT-BUILD-OPTIONS automatically. But for meson, we have to extract them into the --test-args option ourselves. I tried making the logic in run-test-slice.sh conditional, but there ended up being hardly any common code at all (and there are some tricky ordering constraints). So I added up with a new meson-specific test-slice runner. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent e96105a commit 17bd110

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

.github/workflows/main.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,17 @@ jobs:
298298
path: build
299299
- name: Test
300300
shell: pwsh
301-
run: meson test -C build --no-rebuild --print-errorlogs --slice "$(1+${{ matrix.nr }})/10"
301+
run: ci/run-test-slice-meson.sh build ${{matrix.nr}} 10
302+
- name: print test failures
303+
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
304+
shell: bash
305+
run: ci/print-test-failures.sh
306+
- name: Upload failed tests' directories
307+
if: failure() && env.FAILED_TEST_ARTIFACTS != ''
308+
uses: actions/upload-artifact@v4
309+
with:
310+
name: failed-tests-windows-meson-${{ matrix.nr }}
311+
path: ${{env.FAILED_TEST_ARTIFACTS}}
302312

303313
regular:
304314
name: ${{matrix.vector.jobname}} (${{matrix.vector.pool}})

ci/run-test-slice-meson.sh

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#!/bin/sh
2+
3+
# We must load the build options so we know where to find
4+
# things like TEST_OUTPUT_DIRECTORY. This has to come before
5+
# loading lib.sh, though, because it may clobber some CI lib
6+
# variables like our custom GIT_TEST_OPTS.
7+
. "$1"/GIT-BUILD-OPTIONS
8+
. ${0%/*}/lib.sh
9+
10+
group "Run tests" \
11+
meson test -C "$1" --no-rebuild --print-errorlogs \
12+
--test-args="$GIT_TEST_OPTS" --slice "$((1+$2))/$3" ||
13+
handle_failed_tests

0 commit comments

Comments
 (0)