From: Ivan Ivanov Date: Fri, 06 Mar 2026 01:05:58 GMT Subject: Re: Test "t0300-credentials" is failing on Arch/Artix: asks to enter the Username/Password in an infinite loop Message-ID: In-Reply-To: To clarify, in addition to t0300-credentials.out , t0301-credential-cache.out and t0302-credential-store.out are also failing, however a similar-by-nature t0303-credential-external.out succeeds fine. Very strange. Seeing how it's leaking to the primary console, I suspect something may be wrong with shell handling: i.e. for t0302-credential-store test I am seeing these prompts that are waiting input for a user (could write any message here or just press Enter to get a new prompt) : Username for 'https://example.com': Password for 'https://%20@example.com': Username for 'http://example.com': Password for 'http://example.com': Username for 'https://other.tld': Password for 'https://other.tld': Password for 'https://other@example.com': Username for 'http://path.tld/bar.git': Password for 'http://path.tld/bar.git': Password for 'https://user-overwrite@example.com': Username for 'https://example.com': Password for 'https://example.com': Password for 'https://user1@example.com': Username for 'https://example.com': ... On Fri, Mar 6, 2026 at 3:42 AM Ivan Ivanov wrote: > > 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