aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2026-02-13 13:39:26 -0800
committerJunio C Hamano <gitster@pobox.com>2026-02-13 13:39:26 -0800
commite10d5fcad046f3fabbad715f12f2d93d00f6ee60 (patch)
tree684df545d0562ae8035ca802a84e7c69c9a2d674
parent29722ee3a3ed8e4556bbdb97cb64046e130abeea (diff)
parentc591c3ceffd0a033eb228ebb54c596362ded5615 (diff)
downloadgit-e10d5fcad046f3fabbad715f12f2d93d00f6ee60.tar.xz
Merge branch 'jc/ci-test-contrib-too'
Test contrib/ things in CI to catch breakages before they enter the "next" branch. * jc/ci-test-contrib-too: : Some of our downstream folks run more tests than we do and catch : breakages in them, namely, where contrib/*/Makefile has "test" target. : Let's make sure we fail upon accepting a new topic that break them in : 'seen'. ci: ubuntu: use GNU coreutils for dirname test: optionally test contrib in CI
-rw-r--r--Makefile6
-rwxr-xr-xci/install-dependencies.sh11
-rwxr-xr-xci/run-build-and-tests.sh3
-rw-r--r--contrib/Makefile10
4 files changed, 30 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index 4ac44331ea..47ed9fa7fd 100644
--- a/Makefile
+++ b/Makefile
@@ -342,6 +342,9 @@ include shared.mak
# If it isn't set, fallback to $LC_ALL, $LANG or use the first utf-8
# locale returned by "locale -a".
#
+# Define TEST_CONTRIB_TOO to make "make test" run tests in contrib/
+# directories.
+#
# Define HAVE_CLOCK_GETTIME if your platform has clock_gettime.
#
# Define HAVE_CLOCK_MONOTONIC if your platform has CLOCK_MONOTONIC.
@@ -3371,6 +3374,9 @@ export TEST_NO_MALLOC_CHECK
test: all
$(MAKE) -C t/ all
+ifdef TEST_CONTRIB_TOO
+ $(MAKE) -C contrib/ test
+endif
perf: all
$(MAKE) -C t/perf/ all
diff --git a/ci/install-dependencies.sh b/ci/install-dependencies.sh
index 6ee8216a05..c55441d9df 100755
--- a/ci/install-dependencies.sh
+++ b/ci/install-dependencies.sh
@@ -76,6 +76,17 @@ ubuntu-*|i386/ubuntu-*|debian-*)
sudo update-alternatives --set sudo /usr/bin/sudo.ws
fi
+ # on uutils v0.2.2 from rust-coreutils,
+ # dirname "foo/."
+ # outputs "." instead of "foo" like it should.
+ # Use GNU coreutils to provide dirname instead.
+ #
+ # See <https://github.com/uutils/coreutils/issues/10508>.
+ if test -x /usr/bin/gnudirname
+ then
+ ln -sfT /usr/bin/gnudirname /usr/bin/dirname
+ fi
+
case "$distro" in
ubuntu-*)
mkdir --parents "$CUSTOM_PATH"
diff --git a/ci/run-build-and-tests.sh b/ci/run-build-and-tests.sh
index 8bda62b921..28cfe730ee 100755
--- a/ci/run-build-and-tests.sh
+++ b/ci/run-build-and-tests.sh
@@ -5,6 +5,8 @@
. ${0%/*}/lib.sh
+export TEST_CONTRIB_TOO=yes
+
case "$jobname" in
fedora-breaking-changes-musl|linux-breaking-changes)
export WITH_BREAKING_CHANGES=YesPlease
@@ -36,6 +38,7 @@ linux-sha256)
linux-reftable|linux-reftable-leaks|osx-reftable)
export GIT_TEST_DEFAULT_REF_FORMAT=reftable
;;
+
esac
case "$jobname" in
diff --git a/contrib/Makefile b/contrib/Makefile
new file mode 100644
index 0000000000..787cd07f52
--- /dev/null
+++ b/contrib/Makefile
@@ -0,0 +1,10 @@
+all::
+
+test::
+ $(MAKE) -C diff-highlight $@
+ $(MAKE) -C subtree $@
+
+clean::
+ $(MAKE) -C contacts $@
+ $(MAKE) -C diff-highlight $@
+ $(MAKE) -C subtree $@