Subject: Re: Test "t0300-credentials" is failing on Arch/Artix: asks to enter the Username/Password in an infinite loop

From: "brian m. carlson" <[email-masked]>
Date: Fri, 6 Mar 2026 01:59:40 +0000

On 2026-03-06 at 01:44:48, Ivan Ivanov wrote:
> At the moment - just "makepkg ./PKGBUILD --check --noextract
> --noprepare -f" (these flags in order to get straight to the check()
> stage). Btw right now I got a somewhat similar-by-appearance error at
> test t5003, however if I press Enter two times then it gets further
> instead of an infinite loop:

I don't believe we have a `makepkg` script in Git.  What I was hoping to
see was something like this snippet from Debian's `debian/rules`:

----
OPTS =NO_OPENSSL=1 prefix=/usr gitexecdir=/usr/lib/git-core \
  mandir=/usr/share/man htmldir=/usr/share/doc/git/html \
  INSTALLDIRS=vendor \
  SANE_TOOL_PATH= INSTALL=install TAR=tar \
  NO_CROSS_DIRECTORY_HARDLINKS=1 NO_INSTALL_HARDLINKS=1 \
  NO_PERL_CPAN_FALLBACKS=1 \
  PYTHON_PATH=/usr/bin/python3 \
  DEFAULT_PAGER=pager DEFAULT_EDITOR=editor \
  CC='$(CC)' CFLAGS='$(CFLAGS)' LDFLAGS='$(LDFLAGS)' \
  HOST_CPU='$(HOST_CPU)'
DOCS =html
DOC_OPTS =prefix=/usr htmldir=/usr/share/doc/git/html \
  ASCIIDOC8=1 ASCIIDOC_NO_ROFF=1

# https://wiki.debian.org/ReproducibleBuilds/TimestampsInDocumentationGeneratedByAsciidoc
DOC_OPTS += ASCIIDOC='TZ=UTC asciidoc'

ifeq (,$(findstring terse,$(DEB_BUILD_OPTIONS)))
  OPTS += V=1
  DOC_OPTS += V=1
  TEST_OPTS = --verbose
endif
ifneq (,$(findstring nocheck,$(DEB_BUILD_OPTIONS)))
  TEST =
endif
ifneq (,$(findstring nodoc,$(DEB_BUILD_OPTIONS)))
  DOCS =
endif
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
  MAKEFLAGS += -j$(NUMJOBS)
  # Setting this with a pattern-specific rule prevents -O from
  # affecting the top-level make, which would break realtime build
  # output (unless dh is run as +dh, which causes other problems).
  %: MAKEFLAGS += -O
endif
ifneq (,$(shell dpkg-query -f '$${Version}' -W libpcre2-dev))
  OPTS += USE_LIBPCRE2=1
else
  OPTS += USE_LIBPCRE1=1
endif
----

Those options tell us how your package is configured and what Makefile
options you're using.

> Username for 'http://127.0.0.1:5003':
> Password for 'http://127.0.0.1:5003':
> 
> Here are the contents of a related .out file for this t5003 . Please
> note that not so long ago I did chmod -R 755 on this
> /dev/shm/git-test/ just in case, so I am not sure why this is failing
> 
> ok 81 - remote archive does not work with protocol v1
> expecting success of 5003.82 'archive remote http repository':
>     git archive --remote="$HTTPD_URL/auth/smart/bare.git" \
>         --output=remote-http.zip HEAD &&
>     test_cmp_bin d.zip remote-http.zip
> 
> fatal: cannot exec '/dev/shm/git-test/trash
> directory.t5003-archive-zip/askpass': Permission denied
> 
> fatal: cannot exec '/dev/shm/git-test/trash
> directory.t5003-archive-zip/askpass': Permission denied
> fatal: cannot exec '/dev/shm/git-test/trash
> directory.t5003-archive-zip/askpass': Permission denied
> fatal: Authentication failed for 'http://127.0.0.1:5003/auth/smart/bare.git/'

I think this is your problem.  First of all, `/dev/shm` is not a
general-purpose temporary directory and should not be used that way.
It's designed for shared-memory segments that live in the file system
(usually POSIX shared-memory segments).

My guess is that you've specified `TEST_OUTPUT_DIRECTORY` to something
under `/dev/shm` and on your system that file system is marked `noexec`.
Git's testsuite uses many shell scripts and the test directory will need
to live on a fully functional file system according to the standards of
the OS.  Normally people run the tests under `t` in the repository root
and the repository effectively cannot be `noexec`, since otherwise
the binaries would not work.
-- 
brian m. carlson (they/them)
Toronto, Ontario, CA