git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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/null

Here 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
Previous: Junio C Hamano
Message 3 of 3 in “test-lib: respect GIT_TEST_INSTALLED when querying default hash”
  1. test-lib: respect GIT_TEST_INSTALLED when querying default hashKyle Lippincott via GitGitGadget, Jul 15, 2025
  2. Junio C HamanoJul 15, 2025
  3. Justin ToblerJul 15, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.