t/Makefile: run unit tests alongside shell tests
Add a wrapper script to allow `prove` to run both shell tests and unit tests from a single invocation. This avoids issues around running prove twice in CI, as discussed in [1]. Additionally, this moves the unit tests into the main dev workflow, so that errors can be spotted more quickly. Accordingly, we remove the separate unit tests step for Linux CI. (We leave the Windows CI unit-test step as-is, because the sharding scheme there involves selecting specific test files rather than running `make test`.) [1] https://lore.kernel.org/git/pull.1613.git.1699894837844.gitgitgadget@gmail.com/ Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Josh Steadmon <steadmon@google.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Jeff King committed
May 6, 2024 at 12:57 UTC
cc75e4a08f7a8e2315cc56c8194c72ea5da785b2
3 files changed
+19
-3
ci/run-build-and-tests.sh
-2
@@ -50,8 +50,6 @@ if test -n "$run_tests"
50
then
51
group "Run tests" make test ||
52
handle_failed_tests
53
- group "Run unit tests" \
54
- make DEFAULT_UNIT_TEST_TARGET=unit-tests-prove unit-tests
53
fi
54
check_unignored_build_artifacts
55
t/Makefile
+1
-1
@@ -68,7 +68,7 @@ failed:
68
test -z "$$failed" || $(MAKE) $$failed
69
70
prove: pre-clean check-chainlint $(TEST_LINT)
71
- @echo "*** prove ***"; $(CHAINLINTSUPPRESS) $(PROVE) --exec '$(TEST_SHELL_PATH_SQ)' $(GIT_PROVE_OPTS) $(T) :: $(GIT_TEST_OPTS)
71
+ @echo "*** prove (shell & unit tests) ***"; $(CHAINLINTSUPPRESS) TEST_SHELL_PATH='$(TEST_SHELL_PATH_SQ)' $(PROVE) --exec ./run-test.sh $(GIT_PROVE_OPTS) $(T) $(UNIT_TESTS) :: $(GIT_TEST_OPTS)
72
$(MAKE) clean-except-prove-cache
73
74
$(T):
t/run-test.sh
new
+18
@@ -0,0 +1,18 @@
1
+#!/bin/sh
2
+
3
+# A simple wrapper to run shell tests via TEST_SHELL_PATH,
4
+# or exec unit tests directly.
5
+
6
+case "$1" in
7
+*.sh)
8
+ if test -z "${TEST_SHELL_PATH}"
9
+ then
10
+ echo >&2 "ERROR: TEST_SHELL_PATH is empty or not set"
11
+ exit 1
12
+ fi
13
+ exec "${TEST_SHELL_PATH}" "$@"
14
+ ;;
15
+*)
16
+ exec "$@"
17
+ ;;
18
+esac