Hi Patrick On 02/10/2024 16:16, Patrick Steinhardt wrote:
Our "test-lib.sh" assumes that our build directory is the parent directory of "t/". While true when using our Makefile, it's not when using build systems that support out-of-tree builds. Allow such build systems to override the location of the build directory with an environment variable.
ee9e66e4e76 (cmake: avoid editing t/test-lib.sh, 2022-10-18) added support for reading the "real" build directory from "$GIT_BUILD_DIR/GIT-BUILD-DIR". Using an environment variable is fine when running the tests from the build system but it is a pain to have to set it when running them manually.
Best Wishes Phillip
Signed-off-by: Patrick Steinhardt <ps@xxxxxx> --- t/test-lib.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/t/test-lib.sh b/t/test-lib.sh index e36a21ddf7..6f862621af 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -35,7 +35,7 @@ else # needing to exist. TEST_DIRECTORY=$(cd "$TEST_DIRECTORY" && pwd) || exit 1 fi -GIT_BUILD_DIR="${TEST_DIRECTORY%/t}" +GIT_BUILD_DIR="${GIT_BUILD_DIR:-${TEST_DIRECTORY%/t}}" if test "$TEST_DIRECTORY" = "$GIT_BUILD_DIR" then echo "PANIC: Running in a $TEST_DIRECTORY that doesn't end in '/t'?" >&2 @@ -514,6 +514,7 @@ unset VISUAL EMAIL LANGUAGE $("$PERL_PATH" -e ' PERF_ CURL_VERBOSE TRACE_CURL + BUILD_DIR )); my @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env); print join("\n", @vars);