Re: [PATCH v2] t/t1517: mark tests that fail with GIT_TEST_INSTALLED

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, 19 Aug 2025 at 16:35, Junio C Hamano <gitster@xxxxxxxxx> wrote:
>
> Adam Dinwoodie <adam@xxxxxxxxxxxxx> writes:
>
> > The changes added by 39fc408562 (t/t1517: automate `git subcmd -h` tests
> > outside a repository, 2025-08-08) to automatically loop over all "main"
> > Git commands will, when run against an installed build using
> > GIT_TEST_INSTALLED rather than the build in the build directory, include
> > some extra git-gui commands that are installed by `make install`, or
> > credential helpers that might be installed manually from the contrib
> > directories.  These fail the test, so record them as such.
> >
> > Signed-off-by: Adam Dinwoodie <adam@xxxxxxxxxxxxx>
> > ---
> >
> > This re-roll adds a few more commands to those marked as known failures,
> > notably credential helpers I see installed in various builds for the
> > Nixpkgs packaging of Git.
> >
> >  t/t1517-outside-repo.sh | 5 ++++-
> >  1 file changed, 4 insertions(+), 1 deletion(-)
>
> I'd appreciate these efforts, but I am not sure if this is a losing
> battle.  Your ~/libexec/git-core/ directory, when GIT_TEST_INSTALLED
> is in effect, likely has old commands that are retired, commands
> that are added by third-parties (so that their users can say "git
> frotz" and run their "frotz" software), and/or commands from the
> future that the running t1517 has not seen yet (while bisecting and
> running t1517 from an older commit, say).  For example, I have these
> differences...
>
>         archimport.perl
>                 citool
>         cvsexportcommit.perl
>         cvsimport.perl
>         cvsserver.perl
>         difftool--helper.sh
>         filter-branch.sh
>                 gui
>                 gui--askpass
>         instaweb.sh
>         last-modified
>         merge-octopus.sh
>         merge-one-file.sh
>         merge-resolve.sh
>         mergetool.sh
>         p4.py
>         quiltimport.sh
>         request-pull.sh
>         send-email.perl
>         submodule.sh
>         svn.perl
>         web--browse.sh
>
> ... in what t1517 $(git --list-cmds=main) sees between 'master' in
> normal test mode and with GIT_TEST_INSTALLED set to ~/git/jch/bin
> (i.e. the version I run for my everyday use).  "last-modified" is an
> example of a new-ish command that the t1517 test being run is not
> yet aware of but included in GIT_TEST_INSTALLED.
>
> I am wondering if we are better off skipping this test, or at least
> limiting to some known subset (e.g. "git --list-cmds=builtins") to
> skip the files on disk when GIT_TEST_INSTALLED is in effect, instead
> of "git --list-cmds=main" that is quite broad)?
>
> In any case, this is a strict improvement over the previous one, so
> I'll replace and queue this for now, but we may want to rethink the
> approach this test uses.  Even without GIT_TEST_INSTALLED, the fake
> GIT_EXEC_PATH we use during test has somewhat different from the
> real thing, I suspect.
>
> Thanks.

If someone's using GIT_TEST_INSTALLED, I think it's reasonable to
expect them to keep their install directory fairly clean, so this test
would only need to worry about things that might be there because
they're included with Git. The cases I've patched for are all ones
that are installed as part of the Nixpkgs Git build, which does copy
in some things from contrib directories, but by design always installs
into a new, empty root directory.

None of which is to disagree with everything you've said. I imagine
most people building Git aren't doing it using the Nixpkgs build
processes, so if they're using GIT_TEST_INSTALLED, they're much more
likely to be testing in an environment that includes other old scripts
or tools or whatever.

Having t1517 know what executables to check without requiring someone
to remember to update a list is clearly valuable, but it seems that
list should _somehow_ be built based on what's in the Git repository
at build time, not what's in the user's environment.
--list-cmds=builtins seems like it's more limited than ideal, but it
might be a better approach than the current one. This is a balancing
act I'll leave to people who are much more involved in the project
development!




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux