Re: [PATCH] test-lib: respect GIT_TEST_INSTALLED when querying default hash
- From
Justin Tobler <jltobler@gmail.com>
- Date
- Jul 15, 2025, 21:33 UTC
- Message-ID
- <gszrut3ruxmzelqjaeqfx767njz77yaxiq7fvuktezaobv72g6@ehlzm3c4kydm>
- In-Reply-To
- <pull.2011.git.git.1752605874596.gitgitgadget@gmail.com>
On 25/07/15 06:57PM, Kyle Lippincott via GitGitGadget wrote:
Show 14 quoted lines
> From: Kyle Lippincott <spectral@google.com> > > $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.
Show 22 quoted lines
> Signed-off-by: Kyle Lippincott <spectral@google.com>
> ---
> 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/nullHere we store the Git binary we should be testing with so we can use it later. Makes sense.
Show 9 quoted lines
> 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