t/helper: add an empty test-tool program
This will become an umbrella program that absorbs most [1] t/helper programs in. By having a single executable binary we reduce disk usage (libgit.a is replicated by every t/helper program) and shorten link time a bit. Running "make --jobs=1; du -sh t/helper" with ccache fully populated, it takes 27 seconds and 277MB at the beginning of this series, 17 seconds and 42MB at the end. [1] There are a couple programs that will not become part of test-tool: test-line-buffer and test-svn-fe have extra dependencies and test-fake-ssh's program name has to be a single word for some ssh tests. Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
90bbd502d5
commit
efd71f8913
6
Makefile
6
Makefile
@ -546,6 +546,7 @@ SCRIPT_PERL =
|
||||
SCRIPT_PYTHON =
|
||||
SCRIPT_SH =
|
||||
SCRIPT_LIB =
|
||||
TEST_BUILTINS_OBJS =
|
||||
TEST_PROGRAMS_NEED_X =
|
||||
|
||||
# Having this variable in your environment would break pipelines because
|
||||
@ -690,6 +691,7 @@ TEST_PROGRAMS_NEED_X += test-string-list
|
||||
TEST_PROGRAMS_NEED_X += test-submodule-config
|
||||
TEST_PROGRAMS_NEED_X += test-subprocess
|
||||
TEST_PROGRAMS_NEED_X += test-svn-fe
|
||||
TEST_PROGRAMS_NEED_X += test-tool
|
||||
TEST_PROGRAMS_NEED_X += test-urlmatch-normalization
|
||||
TEST_PROGRAMS_NEED_X += test-wildmatch
|
||||
|
||||
@ -2083,7 +2085,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 %$X,%.o,$(TEST_PROGRAMS)) $(patsubst %,t/helper/%,$(TEST_BUILTINS_OBJS))
|
||||
OBJECTS := $(LIB_OBJS) $(BUILTIN_OBJS) $(PROGRAM_OBJS) $(TEST_OBJS) \
|
||||
$(XDIFF_OBJS) \
|
||||
$(VCSSVN_OBJS) \
|
||||
@ -2494,6 +2496,8 @@ t/helper/test-svn-fe$X: $(VCSSVN_LIB)
|
||||
|
||||
.PRECIOUS: $(TEST_OBJS)
|
||||
|
||||
t/helper/test-tool$X: $(patsubst %,t/helper/%,$(TEST_BUILTINS_OBJS))
|
||||
|
||||
t/helper/test-%$X: t/helper/test-%.o GIT-LDFLAGS $(GITLIBS)
|
||||
$(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ $(ALL_LDFLAGS) $(filter %.o,$^) $(filter %.a,$^) $(LIBS)
|
||||
|
||||
|
27
t/helper/test-tool.c
Normal file
27
t/helper/test-tool.c
Normal file
@ -0,0 +1,27 @@
|
||||
#include "git-compat-util.h"
|
||||
#include "test-tool.h"
|
||||
|
||||
struct test_cmd {
|
||||
const char *name;
|
||||
int (*fn)(int argc, const char **argv);
|
||||
};
|
||||
|
||||
static struct test_cmd cmds[] = {
|
||||
};
|
||||
|
||||
int cmd_main(int argc, const char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (argc < 2)
|
||||
die("I need a test name!");
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(cmds); i++) {
|
||||
if (!strcmp(cmds[i].name, argv[1])) {
|
||||
argv++;
|
||||
argc--;
|
||||
return cmds[i].fn(argc, argv);
|
||||
}
|
||||
}
|
||||
die("There is no test named '%s'", argv[1]);
|
||||
}
|
4
t/helper/test-tool.h
Normal file
4
t/helper/test-tool.h
Normal file
@ -0,0 +1,4 @@
|
||||
#ifndef __TEST_TOOL_H__
|
||||
#define __TEST_TOOL_H__
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user