git-annex test from standalone speedup

Avoid git-annex test being very slow when run from within the standalone
linux tarball or OSX app.

It may not really be necessary to add to PATH the directory where the
git-annex binary resides, but it can't hurt. Most places where the test
suite or git-annex run git-annex, they use programPath, so won't need
a modified PATH. But I'm not sure if that's always the case.

Sponsored-by: Dartmouth College's Datalad project
This commit is contained in:
Joey Hess 2022-03-01 16:08:55 -04:00
parent ecf7c29107
commit 2fc46e1871
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
3 changed files with 19 additions and 2 deletions

View file

@ -15,6 +15,8 @@ git-annex (10.20220223) UNRELEASED; urgency=medium
* Propagate nonzero exit status from git ls-files when a specified
file does not exist, or a specified directory does not contain
any files checked into git.
* Avoid git-annex test being very slow when run from within the
standalone linux tarball or OSX app.
-- Joey Hess <id@joeyh.name> Wed, 23 Feb 2022 14:14:09 -0400

View file

@ -468,10 +468,12 @@ setTestMode :: TestMode -> IO ()
setTestMode testmode = do
currdir <- getCurrentDirectory
p <- Utility.Env.getEnvDefault "PATH" ""
pp <- Annex.Path.programPath
mapM_ (\(var, val) -> Utility.Env.Set.setEnv var val True)
-- Ensure that the just-built git annex is used.
[ ("PATH", currdir ++ [searchPathSeparator] ++ p)
-- Ensure that the same git-annex binary that is running
-- git-annex test is at the front of the PATH.
[ ("PATH", takeDirectory pp ++ [searchPathSeparator] ++ p)
, ("TOPDIR", currdir)
-- Avoid git complaining if it cannot determine the user's
-- email address, or exploding if it doesn't know the user's

View file

@ -0,0 +1,13 @@
[[!comment format=mdwn
username="joey"
subject="""comment 2"""
date="2022-03-01T19:58:37Z"
content="""
I have fixed the problem I identified, which was due to git-annex test adding
the cwd to PATH, which caused it to run git-annex.linux/git, so runshell
was being run repeatedly and unncessarily.
Now it will run git-annex.linux/bin/git and avoid the repeated runshell
overhead, so will be about as fast as git-annex not run from the standalone
tarball.
"""]]