summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Ævar Arnfjörð Bjarmason <avarab@gmail.com>2021-11-23 17:29:12 +0100
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-11-23 16:51:54 -0800
commit25715419bf4d105d755e0f6d2228e1ac0bd06b88 (patch)
tree4371a7a29ac3850f22e88fb64b9dfbf3ace59f57
parentCI: use "$runs_on_pool", not "$jobname" to select packages & config (diff)
downloadtgif-25715419bf4d105d755e0f6d2228e1ac0bd06b88.tar.xz
CI: don't run "make test" twice in one job
The "linux-clang" and "linux-gcc" jobs both run "make test" twice, but with different environment variables. Running these in sequence seems to have been done to work around some constraint on Travis, see ae59a4e44f3 (travis: run tests with GIT_TEST_SPLIT_INDEX, 2018-01-07). By having these run in parallel we'll get jobs that finish much sooner than they otherwise would have. We can also simplify the control flow in "ci/run-build-and-tests.sh" as a result, since we won't run "make test" twice we don't need to run "make" twice at all, let's default to "make all test" after setting the variables, and then override it to just "all" for the compile-only tests. Add a comment to clarify that new "test" targets should adjust $MAKE_TARGETS rather than being added after the "case/esac". This should avoid future confusion where e.g. the compilation-only "pedantic" target will unexpectedly start running tests. See [1] and [2]. 1. https://lore.kernel.org/git/211122.86ee78yxts.gmgdl@evledraar.gmail.com/ 2. https://lore.kernel.org/git/211123.86ilwjujmd.gmgdl@evledraar.gmail.com/ Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--.github/workflows/main.yml9
-rwxr-xr-xci/run-build-and-tests.sh23
2 files changed, 20 insertions, 12 deletions
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index d402402a18..628bcbf495 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -225,10 +225,19 @@ jobs:
- jobname: linux-clang
cc: clang
pool: ubuntu-latest
+ - jobname: linux-sha256
+ cc: clang
+ os: ubuntu
+ pool: ubuntu-latest
- jobname: linux-gcc
cc: gcc
cc_package: gcc-8
pool: ubuntu-latest
+ - jobname: linux-TEST-vars
+ cc: gcc
+ os: ubuntu
+ cc_package: gcc-8
+ pool: ubuntu-latest
- jobname: osx-clang
cc: clang
pool: macos-latest
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 18056501ec..280dda7d28 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -10,16 +10,13 @@ windows*) cmd //c mklink //j t\\.prove "$(cygpath -aw "$cache_dir/.prove")";;
*) ln -s "$cache_dir/.prove" t/.prove;;
esac
-if test "$jobname" = "pedantic"
-then
- export DEVOPTS=pedantic
-fi
+export MAKE_TARGETS="all test"
-make
case "$jobname" in
linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
- make test
+ ;;
+linux-TEST-vars)
export GIT_TEST_SPLIT_INDEX=yes
export GIT_TEST_MERGE_ALGORITHM=recursive
export GIT_TEST_FULL_IN_PACK_ARRAY=true
@@ -33,23 +30,25 @@ linux-gcc)
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=master
export GIT_TEST_WRITE_REV_INDEX=1
export GIT_TEST_CHECKOUT_WORKERS=2
- make test
;;
linux-clang)
export GIT_TEST_DEFAULT_HASH=sha1
- make test
+ ;;
+linux-sha256)
export GIT_TEST_DEFAULT_HASH=sha256
- make test
;;
pedantic)
# Don't run the tests; we only care about whether Git can be
# built.
- ;;
-*)
- make test
+ export DEVOPTS=pedantic
+ export MAKE_TARGETS=all
;;
esac
+# Any new "test" targets should not go after this "make", but should
+# adjust $MAKE_TARGETS. Otherwise compilation-only targets above will
+# start running tests.
+make $MAKE_TARGETS
check_unignored_build_artifacts
save_good_tree