"David A. Greene" <greened@xxxxxxxxxxxxx> writes: > Let tests override GIT_BUILD_DIR so git will work if tests are not at > the same directory level as standard git tests. Prior to this change, > GIT_BUILD_DIR is hardwired to be exactly one directory above where the > test lives. A test within contrib/, for example, can now use > test-lib.sh and set an appropriate value for GIT_BUILD_DIR. Ok, this is getting closer. We use GIT_BUILD_DIR to find out crucial bits of the build environment in order to run tests, like the binaries being tested that are in $GIT_BUILD_DIR/bin-wrappers, but we set GIT_BUILD_DIR always to one level above where the test script being run is (because they are typically t/t1234-name.sh). By making them able to name GIT_BUILD_DIR directly to a place that is different from a level above "$TEST_DIRECTORY", a test script can live anywhere. There are two more things that worries me a bit. One is what TEST_DIRECTORY should mean in the new world order. We use it to find where the test-lib.sh and other lib-*.sh helper definitions are, also we use it to find large-ish test vectors like t3900/ and t4013/. If an external test script t1234-git-subtree.sh wants to use a separate file to keep its own helper definitions, how should it name it? It cannot be relative to TEST_DIRECTORY that is typically "t/". It cannot be relative to "../" as TRASH_DIRECTORY where the script runs, as the --root option may move it elsewhere on the filesystem (and is the reason TEST_DIRECTORY variable exists in the first place). And how well does an external test script work with the --root option that moves the TEST_DIRECTORY? > Signed-off-by: David A. Greene <greened@xxxxxxxxxxxxx> > --- > t/test-lib.sh | 10 +++++++++- > 1 files changed, 9 insertions(+), 1 deletions(-) > > > ------------------ > > diff --git a/t/test-lib.sh b/t/test-lib.sh > index a65dfc7..4585138 100644 > --- a/t/test-lib.sh > +++ b/t/test-lib.sh > @@ -55,6 +55,7 @@ unset $(perl -e ' > .*_TEST > PROVE > VALGRIND > + BUILD_DIR A funny indentation found here. > )); > @@ -901,7 +902,14 @@ then > # itself. > TEST_DIRECTORY=$(pwd) > fi > -GIT_BUILD_DIR="$TEST_DIRECTORY"/.. > + > +if test -z "$GIT_BUILD_DIR" > +then > + # We allow tests to override this, in case they want to run tests > + # outside of t/, e.g. for running tests on the test library > + # itself. # For in-tree test scripts, this is one level above the TEST_DIRECTORY # (t/), but a test script that lives outside t/ can set this variable to # point at the right place so that it can find t/ directory that house # test helpers like lib-pager*.sh and test vectors like t4013/. > + GIT_BUILD_DIR="$TEST_DIRECTORY"/.. > +fi > > if test -n "$valgrind" > then > > -------------------- -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html