From: Justin Tobler Date: Tue, 15 Jul 2025 21:33:33 GMT Subject: Re: [PATCH] test-lib: respect GIT_TEST_INSTALLED when querying default hash Message-ID: In-Reply-To: On 25/07/15 06:57PM, Kyle Lippincott via GitGitGadget wrote: > From: Kyle Lippincott > > $GIT_TEST_INSTALLED can be set to use an "installed" git instead of the > one from $GIT_BUILD_DIR. This is used by my company's internal test > infrastructure, and not using $GIT_TEST_INSTALLED when querying the > default hash meant that the tests were failing because the hash was > effectively set to the empty string (since git didn't execute). > > In the two places we attempt to detect/execute git itself prior to > overriding everything and putting it in $PATH, use identical logic for > identifying the git binary to execute. This also has the effect of > including the $X suffix when querying the default hash, but that's not > strictly necessary. You don't need to specify .exe when running a binary > on Windows, just when testing whether it exists or not. The second paragraph was a little difficult for me to parse, but I understand the change as the following: In c79bb70a2e (Enable SHA-256 by default in breaking changes mode, 2025-07-01), when building Git with `WITH_BREAKING_CHANGES` defined, the default object hash format is changed from SHA1 to SHA256. To select the correct hash used by `GIT_TEST_BUILTIN_HASH` during testing, git-version(1) is executed with the `--build-options` flag to get the default hash the Git binary is built with. When running the Git testsuite with `GIT_TEST_INSTALLED` set, the Git binary in `GIT_BUILD_DIR` is used to check for the default hash which is incorrect. Instead the binary at `GIT_TEST_INSTALLED` should be used. > Signed-off-by: Kyle Lippincott > --- > test-lib: respect GIT_TEST_INSTALLED when querying default hash > > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2011%2Fspectral54%2Fdefault_hash_respect_git_test_installed-v1 > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2011/spectral54/default_hash_respect_git_test_installed-v1 > Pull-Request: https://github.com/git/git/pull/2011 > > t/test-lib.sh | 5 +++-- > 1 file changed, 3 insertions(+), 2 deletions(-) > > diff --git a/t/test-lib.sh b/t/test-lib.sh > index 6dc2022ee10..621cd31ae1d 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -134,7 +134,8 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME > > ################################################################ > # It appears that people try to run tests without building... > -"${GIT_TEST_INSTALLED:-$GIT_BUILD_DIR}/git$X" >/dev/null > +GIT_BINARY="${GIT_TEST_INSTALLED:-$GIT_BUILD_DIR}/git$X" > +"$GIT_BINARY" >/dev/null Here we store the Git binary we should be testing with so we can use it later. Makes sense. > if test $? != 1 > then > if test -n "$GIT_TEST_INSTALLED" > @@ -536,7 +537,7 @@ export GIT_COMMITTER_EMAIL GIT_COMMITTER_NAME > export GIT_COMMITTER_DATE GIT_AUTHOR_DATE > export EDITOR > > -GIT_TEST_BUILTIN_HASH=$("$GIT_BUILD_DIR/git" version --build-options | sed -ne 's/^default-hash: //p') > +GIT_TEST_BUILTIN_HASH=$("$GIT_BINARY" version --build-options | sed -ne 's/^default-hash: //p') Now we use the correct binary to check the default hash depending on how the tests are executed. Looks good to me :) -Justin