Re: Test "t0300-credentials" is failing on Arch/Artix: asks to enter the Username/Password in an infinite loop
- From
- Ivan Ivanov <qmastery16@gmail.com>
- Date
- Mar 6, 2026, 01:05 UTC
- Message-ID
- <CAAaskFANnrqTAjQOHhAgzES9=S+y7w9u-LMWbRbi8FayVdvzFw@mail.gmail.com>
- In-Reply-To
- <CAAaskFBp+A9pOhd8O6owd6k0cDj66ipXrqH2Hj_c7j3d=HM10Q@mail.gmail.com>
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 <qmastery16@gmail.com> wrote:
Show 251 quoted lines
>
> 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