@@ -124,9 +124,12 @@ jobs:
- uses: git-for-windows/setup-git-for-windows-sdk@v1
- run: ci/lib.sh
shell: bash
+ - name: select tests
+ run: . /etc/profile && ci/select-test-slice.sh ${{matrix.nr}} 10
+ shell: bash
- name: test
shell: bash
- run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
+ run: . /etc/profile && make -C t -e
- name: ci/print-test-failures.sh
if: failure()
shell: bash
@@ -210,9 +213,12 @@ jobs:
run: tar xf artifacts.tar.gz && tar xf tracked.tar.gz
- run: ci/lib.sh
shell: bash
+ - name: select tests
+ run: . /etc/profile && ci/select-test-slice.sh ${{matrix.nr}} 10
+ shell: bash
- name: test
shell: bash
- run: . /etc/profile && ci/run-test-slice.sh ${{matrix.nr}} 10
+ run: . /etc/profile && make -C t -e
- name: ci/print-test-failures.sh
if: failure()
shell: bash
similarity index 50%
rename from ci/run-test-slice.sh
rename to ci/select-test-slice.sh
@@ -1,10 +1,13 @@
#!/bin/sh
#
-# Test Git in parallel
+# Select a portion of the tests for testing Git in parallel
#
. ${0%/*}/lib.sh
tests=$(echo $(cd t && ./helper/test-tool path-utils slice-tests "$1" "$2" \
t[0-9]*.sh))
-make --quiet -C t T="$tests"
+if test -n "$GITHUB_ENV"
+then
+ echo T="$tests" >>$GITHUB_ENV
+fi
In preceding commits the tests have been changed to do their setup via $GITHUB_ENV in one step, and to then have subsequent steps that re-use that environment. Let's change the "test slice" tests added in b819f1d2cec (ci: parallelize testing on Windows, 2019-01-29) to do the same. These tests select 10% of the tests to run in 10 "test slices". Now we'll select those in a step that immediately precedes the testing step, and then simply invoke "make -C t -e". This has the advantage that the tests to be run are now listed in the standard "Run" drop-down at the start of the "test" step. Since the "T" variable in "t/Makefile" doesn't normally accept overrides from the environment we need to invoke "make" with the "-e" option (a.k.a. "--environment-overrides"). We could also make $(T) in t/Makefile be a "?=" assigned variable, but this way works, and is arguably clearer as it's more obvious that we're injecting a special list of tests that override the normal behavior of that Makefile. Note that we cannot run the top-level "make test" here, because of how the Windows CI builds git, i.e. either via CMake or some option that would cause "make test" to recompile git itself. Instead we run "make -C t [...]". Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> --- .github/workflows/main.yml | 10 ++++++++-- ci/{run-test-slice.sh => select-test-slice.sh} | 7 +++++-- 2 files changed, 13 insertions(+), 4 deletions(-) rename ci/{run-test-slice.sh => select-test-slice.sh} (50%)