]> git.ipfire.org Git - thirdparty/git.git/commitdiff
CI: don't run "make test" twice in one job
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Tue, 23 Nov 2021 16:29:12 +0000 (17:29 +0100)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Nov 2021 00:51:54 +0000 (16:51 -0800)
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>
.github/workflows/main.yml
ci/run-build-and-tests.sh

index d402402a18b12c93c0962856af5e6f01e7d9a113..628bcbf495e3c1599f472e85c8fa67047492bfaa 100644 (file)
@@ -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
index 18056501ec2caa231c559ae0575cf0b6b32bf3e6..280dda7d285674e121ac98ed444e72380168dd13 100755 (executable)
@@ -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