Thread (1 message) 1 message, 1 author, 2016-06-15

Re: [PATCH] Allow Overriding GIT_BUILD_DIR

From: Junio C Hamano <hidden>
Date: 2016-06-15 22:53:09

"David A. Greene" [off-list ref] 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?
quoted hunk
Signed-off-by: David A. Greene <redacted>
---
 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.
 	));
quoted hunk
@@ -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

--------------------
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help