From: Ivan Ivanov Date: Fri, 06 Mar 2026 00:42:12 GMT Subject: Test "t0300-credentials" is failing on Arch/Artix: asks to enter the Username/Password in an infinite loop Message-ID: Good day! While trying to rebuild git for Arch/Artix, I run into the following problem: shortly after "*** prove (shell & unit tests) ***" I get asked the Username/Password in an endless loop. Below are the full logs, as well as the contents of ./test-results/t0300-credentials.out file, hope this is helpful for debugging. Please note that I have all the dependencies installed, even the optional ones like Apache HTTPD (some online manuals suggested doing that, but didn't help to pass this test) ==> Starting check()... GEN git-difftool--helper GEN git-filter-branch GEN git-merge-octopus GEN git-merge-one-file GEN git-merge-resolve GEN git-mergetool GEN git-quiltimport GEN git-request-pull GEN git-submodule GEN git-web--browse GEN git-archimport GEN git-cvsexportcommit GEN git-cvsimport GEN git-cvsserver GEN git-send-email GEN git-svn GEN git-p4 GEN git-instaweb GEN git-mergetool--lib GEN git-sh-i18n GEN git-sh-setup SUBDIR git-gui SUBDIR gitk-git SUBDIR templates GEN perl/build/lib/Git.pm GEN perl/build/lib/Git/I18N.pm GEN perl/build/lib/Git/IndexInfo.pm GEN perl/build/lib/Git/LoadCPAN.pm GEN perl/build/lib/Git/Packet.pm GEN perl/build/lib/Git/SVN.pm GEN perl/build/lib/Git/LoadCPAN/Error.pm GEN perl/build/lib/Git/SVN/Editor.pm GEN perl/build/lib/Git/SVN/Fetcher.pm GEN perl/build/lib/Git/SVN/GlobSpec.pm GEN perl/build/lib/Git/SVN/Log.pm GEN perl/build/lib/Git/SVN/Migration.pm GEN perl/build/lib/Git/SVN/Prompt.pm GEN perl/build/lib/Git/SVN/Ra.pm GEN perl/build/lib/Git/SVN/Utils.pm GEN perl/build/lib/Git/LoadCPAN/Mail/Address.pm GEN perl/build/lib/Git/SVN/Memoize/YAML.pm make -C t/ all make[1]: Entering directory '/home/username/artix_git/src/git/t' rm -f -r 'test-results' *** prove (shell & unit tests) *** Username for 'http://example.com': Password for 'http://example.com': Username for 'http://example.com': Password for 'http://example.com': /src/git/t$ cat ./test-results/t0300-credentials.out Initialized empty Git repository in /dev/shm/git-test/trash directory.t0300-credentials/.git/ expecting success of 0300.1 'setup helper scripts': cat >dump <<-\EOF && whoami=$(echo $0 | sed s/.*git-credential-//) echo >&2 "$whoami: $*" OIFS=$IFS IFS== while read key value; do echo >&2 "$whoami: $key=$value" if test -z "${key%%*\[\]}" then key=${key%%\[\]} eval "$key=\"\$$key $value\"" else eval "$key=$value" fi done IFS=$OIFS EOF write_script git-credential-useless <<-\EOF && . ./dump exit 0 EOF write_script git-credential-quit <<-\EOF && . ./dump echo quit=1 EOF write_script git-credential-verbatim <<-\EOF && user=$1; shift pass=$1; shift . ./dump test -z "$user" || echo username=$user test -z "$pass" || echo password=$pass EOF write_script git-credential-verbatim-cred <<-\EOF && authtype=$1; shift credential=$1; shift . ./dump echo capability[]=authtype echo capability[]=state test -z "${capability##*authtype*}" || exit 0 test -z "$authtype" || echo authtype=$authtype test -z "$credential" || echo credential=$credential test -z "${capability##*state*}" || exit 0 echo state[]=verbatim-cred:foo EOF write_script git-credential-verbatim-ephemeral <<-\EOF && authtype=$1; shift credential=$1; shift . ./dump echo capability[]=authtype test -z "${capability##*authtype*}" || exit 0 test -z "$authtype" || echo authtype=$authtype test -z "$credential" || echo credential=$credential echo "ephemeral=1" EOF write_script git-credential-verbatim-with-expiry <<-\EOF && user=$1; shift pass=$1; shift pexpiry=$1; shift . ./dump test -z "$user" || echo username=$user test -z "$pass" || echo password=$pass test -z "$pexpiry" || echo password_expiry_utc=$pexpiry EOF write_script git-credential-cntrl-in-username <<-\EOF && printf "username=\\007latrix Lestrange\\n" EOF PATH="$PWD:$PATH" ok 1 - setup helper scripts expecting success of 0300.2 'credential_fill invokes helper': check fill "verbatim foo bar" <<-\EOF protocol=http host=example.com -- protocol=http host=example.com username=foo password=bar -- verbatim: get verbatim: protocol=http verbatim: host=example.com EOF --- expect-stdout 2026-03-06 00:33:02.009338195 +0000 +++ stdout 2026-03-06 00:33:07.569338321 +0000 @@ -1,4 +1,4 @@ protocol=http host=example.com -username=foo -password=bar +username= +password= not ok 2 - credential_fill invokes helper # # check fill "verbatim foo bar" <<-\EOF # protocol=http # host=example.com # -- # protocol=http # host=example.com # username=foo # password=bar # -- # verbatim: get # verbatim: protocol=http # verbatim: host=example.com # EOF # expecting success of 0300.3 'credential_fill invokes helper with credential': check fill "verbatim-cred Bearer token" <<-\EOF capability[]=authtype protocol=http host=example.com -- capability[]=authtype authtype=Bearer credential=token protocol=http host=example.com -- verbatim-cred: get verbatim-cred: capability[]=authtype verbatim-cred: protocol=http verbatim-cred: host=example.com EOF --- expect-stdout 2026-03-06 00:33:07.581338322 +0000 +++ stdout 2026-03-06 00:33:08.191338336 +0000 @@ -1,5 +1,4 @@ -capability[]=authtype -authtype=Bearer -credential=token protocol=http host=example.com +username= +password= not ok 3 - credential_fill invokes helper with credential # # check fill "verbatim-cred Bearer token" <<-\EOF # capability[]=authtype # protocol=http # host=example.com # -- # capability[]=authtype # authtype=Bearer # credential=token # protocol=http # host=example.com # -- # verbatim-cred: get # verbatim-cred: capability[]=authtype # verbatim-cred: protocol=http # verbatim-cred: host=example.com # EOF # expecting success of 0300.4 'credential_fill invokes helper with ephemeral credential': check fill "verbatim-ephemeral Bearer token" <<-\EOF capability[]=authtype protocol=http host=example.com -- capability[]=authtype authtype=Bearer credential=token ephemeral=1 protocol=http host=example.com -- verbatim-ephemeral: get verbatim-ephemeral: capability[]=authtype verbatim-ephemeral: protocol=http verbatim-ephemeral: host=example.com EOF