From 2fc46e1871e2f793689cc98523744040c9010bdc Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 1 Mar 2022 16:08:55 -0400 Subject: [PATCH] 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 --- CHANGELOG | 2 ++ Test/Framework.hs | 6 ++++-- ...ment_2_f462ee4719b4c459c12e36ce29ab82b5._comment | 13 +++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 doc/todo/speed_up___34__standalone_build__34___and__47__or_tests/comment_2_f462ee4719b4c459c12e36ce29ab82b5._comment diff --git a/CHANGELOG b/CHANGELOG index 799ed1baa6..18d2e4f62f 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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 Wed, 23 Feb 2022 14:14:09 -0400 diff --git a/Test/Framework.hs b/Test/Framework.hs index 6a2eae28f1..7f85ae06ae 100644 --- a/Test/Framework.hs +++ b/Test/Framework.hs @@ -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 diff --git a/doc/todo/speed_up___34__standalone_build__34___and__47__or_tests/comment_2_f462ee4719b4c459c12e36ce29ab82b5._comment b/doc/todo/speed_up___34__standalone_build__34___and__47__or_tests/comment_2_f462ee4719b4c459c12e36ce29ab82b5._comment new file mode 100644 index 0000000000..03a1db490a --- /dev/null +++ b/doc/todo/speed_up___34__standalone_build__34___and__47__or_tests/comment_2_f462ee4719b4c459c12e36ce29ab82b5._comment @@ -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. +"""]]