On Wed, Apr 27, 2016 at 09:15:41AM -0700, Junio C Hamano wrote: > Duy Nguyen <pclouds@xxxxxxxxx> writes: > > > This patch forces bin-wrappers regeneration every time a test program > > is updated. A bit wasteful, but I don't see a better option (which is > > also why I limit this to test programs only). > > In other words, when we update the location where the programs that > would be eventually installed are created, we'd see the same > problem. > > I actually wonder if it is a better overall structure to move > t/helper/test-foo back to test-foo, while keeping the source file > that contains main() for test-foo at t/helper/test-foo.c. Then we > do not have to have many copies that are slightly different in > bin-wrappers, but they can all be > > exec "${GIT_EXEC_PATH}/$0" "$@" > > instead of "bin-wrappers/git-bar" being > > exec "${GIT_EXEC_PATH}/git-bar" "$@" > > and "bin-wrappers/test-foo" being > > exec "${GIT_EXEC_PATH}/t/helper/test-foo" "$@" > It's not a perfect solution (rebuild bin-wrappers when the real binary moves) but I think it's the best option so far. We can move test-* binaries back with this patch. -- 8< -- diff --git a/.gitignore b/.gitignore index 05cb58a..5087ce1 100644 --- a/.gitignore +++ b/.gitignore @@ -179,6 +179,39 @@ /gitweb/gitweb.cgi /gitweb/static/gitweb.js /gitweb/static/gitweb.min.* +/test-chmtime +/test-ctype +/test-config +/test-date +/test-delta +/test-dump-cache-tree +/test-dump-split-index +/test-dump-untracked-cache +/test-fake-ssh +/test-scrap-cache-tree +/test-genrandom +/test-hashmap +/test-index-version +/test-line-buffer +/test-match-trees +/test-mergesort +/test-mktemp +/test-parse-options +/test-path-utils +/test-prio-queue +/test-read-cache +/test-regex +/test-revision-walking +/test-run-command +/test-sha1 +/test-sha1-array +/test-sigchain +/test-string-list +/test-submodule-config +/test-subprocess +/test-svn-fe +/test-urlmatch-normalization +/test-wildmatch /common-cmds.h *.tar.gz *.dsc diff --git a/Makefile b/Makefile index dd178ee..7a1c973 100644 --- a/Makefile +++ b/Makefile @@ -620,7 +620,7 @@ TEST_PROGRAMS_NEED_X += test-svn-fe TEST_PROGRAMS_NEED_X += test-urlmatch-normalization TEST_PROGRAMS_NEED_X += test-wildmatch -TEST_PROGRAMS = $(patsubst %,t/helper/%$X,$(TEST_PROGRAMS_NEED_X)) +TEST_PROGRAMS = $(patsubst %,%$X,$(TEST_PROGRAMS_NEED_X)) # List built-in command $C whose implementation cmd_$C() is not in # builtin/$C.o but is linked in as part of some other command. @@ -1897,7 +1897,7 @@ VCSSVN_OBJS += vcs-svn/fast_export.o VCSSVN_OBJS += vcs-svn/svndiff.o VCSSVN_OBJS += vcs-svn/svndump.o -TEST_OBJS := $(patsubst %$X,%.o,$(TEST_PROGRAMS)) +TEST_OBJS := $(patsubst %,t/helper/%.o,$(TEST_PROGRAMS_NEED_X)) OBJECTS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \ $(XDIFF_OBJS) \ $(VCSSVN_OBJS) \ @@ -2204,7 +2204,7 @@ bin-wrappers/%: wrap-for-bin.sh @mkdir -p bin-wrappers $(QUIET_GEN)sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ -e 's|@@BUILD_DIR@@|$(shell pwd)|' \ - -e 's|@@PROG@@|$(patsubst test-%,t/helper/test-%,$(@F))|' < $< > $@ && \ + -e 's|@@PROG@@|$(@F)|'< $< > $@ && \ chmod +x $@ # GNU make supports exporting all variables by "export" without parameters. @@ -2224,24 +2224,24 @@ perf: all .PHONY: test perf -t/helper/test-ctype$X: ctype.o +test-ctype$X: ctype.o -t/helper/test-date$X: date.o ctype.o +test-date$X: date.o ctype.o -t/helper/test-delta$X: diff-delta.o patch-delta.o +test-delta$X: diff-delta.o patch-delta.o -t/helper/test-line-buffer$X: vcs-svn/lib.a +test-line-buffer$X: vcs-svn/lib.a -t/helper/test-parse-options$X: parse-options.o parse-options-cb.o +test-parse-options$X: parse-options.o parse-options-cb.o -t/helper/test-svn-fe$X: vcs-svn/lib.a +test-svn-fe$X: vcs-svn/lib.a .PRECIOUS: $(TEST_OBJS) -t/helper/test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS) +test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS) $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS) -check-sha1:: t/helper/test-sha1$X +check-sha1:: test-sha1$X t/helper/test-sha1.sh SP_OBJ = $(patsubst %.o,%.sp,$(C_OBJ)) diff --git a/t/helper/test-sha1.sh b/t/helper/test-sha1.sh index 750b95a..cef4bcc 100755 --- a/t/helper/test-sha1.sh +++ b/t/helper/test-sha1.sh @@ -1,7 +1,7 @@ #!/bin/sh dd if=/dev/zero bs=1048576 count=100 2>/dev/null | -/usr/bin/time t/helper/test-sha1 >/dev/null +/usr/bin/time ./test-sha1 >/dev/null while read expect cnt pfx do @@ -11,7 +11,7 @@ do test -z "$pfx" || echo "$pfx" dd if=/dev/zero bs=1048576 count=$cnt 2>/dev/null | perl -pe 'y/\000/g/' - } | ./t/helper/test-sha1 $cnt + } | ./test-sha1 $cnt ) if test "$expect" = "$actual" then diff --git a/t/t5601-clone.sh b/t/t5601-clone.sh index 150aeaf..c1efb8e 100755 --- a/t/t5601-clone.sh +++ b/t/t5601-clone.sh @@ -308,7 +308,7 @@ test_expect_success 'clone checking out a tag' ' setup_ssh_wrapper () { test_expect_success 'setup ssh wrapper' ' - cp "$GIT_BUILD_DIR/t/helper/test-fake-ssh$X" \ + cp "$GIT_BUILD_DIR/test-fake-ssh$X" \ "$TRASH_DIRECTORY/ssh-wrapper$X" && GIT_SSH="$TRASH_DIRECTORY/ssh-wrapper$X" && export GIT_SSH && diff --git a/t/test-lib.sh b/t/test-lib.sh index cd0ecd4..0b47eb6 100644 --- a/t/test-lib.sh +++ b/t/test-lib.sh @@ -854,10 +854,10 @@ test -d "$GIT_BUILD_DIR"/templates/blt || { error "You haven't built things yet, have you?" } -if ! test -x "$GIT_BUILD_DIR"/t/helper/test-chmtime +if ! test -x "$GIT_BUILD_DIR"/test-chmtime then echo >&2 'You need to build test-chmtime:' - echo >&2 'Run "make t/helper/test-chmtime" in the source (toplevel) directory' + echo >&2 'Run "make test-chmtime" in the source (toplevel) directory' exit 1 fi -- 8< -- -- 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