diff options
| -rw-r--r-- | test/Makefile | 16 | ||||
| -rw-r--r-- | test/README | 21 | ||||
| -rw-r--r-- | test/Rules.mak | 17 | ||||
| -rw-r--r-- | test/Test.mak | 77 | 
4 files changed, 84 insertions, 47 deletions
diff --git a/test/Makefile b/test/Makefile index b306045cb..63d299092 100644 --- a/test/Makefile +++ b/test/Makefile @@ -29,7 +29,11 @@ endif  DIRS := $(filter-out math,$(DIRS)) -test check all: subdirs +test check all: run + +run: compile subdirs_run + +compile:subdirs_compile  tags:  	ctags -R @@ -37,12 +41,20 @@ tags:  clean: subdirs_clean  subdirs: $(patsubst %, _dir_%, $(DIRS)) +subdirs_compile: $(patsubst %, _dircompile_%, $(DIRS)) +subdirs_run: $(patsubst %, _dirrun_%, $(DIRS))  subdirs_clean: $(patsubst %, _dirclean_%, $(ALL_SUBDIRS))  $(patsubst %, _dir_%, $(DIRS)) : dummy  	$(Q)$(MAKE) -C $(patsubst _dir_%, %, $@) +$(patsubst %, _dirrun_%, $(DIRS)) : dummy +	$(Q)$(MAKE) -C $(patsubst _dirrun_%, %, $@) run + +$(patsubst %, _dircompile_%, $(DIRS)) : dummy +	$(Q)$(MAKE) -C $(patsubst _dircompile_%, %, $@) compile +  $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy  	$(Q)$(MAKE) -C $(patsubst _dirclean_%, %, $@) clean -.PHONY: all check clean dummy subdirs subdirs_clean test +.PHONY: all check clean dummy subdirs_compile subdirs_run subdirs subdirs_clean test run compile diff --git a/test/README b/test/README index fe07a53f5..b59945c54 100644 --- a/test/README +++ b/test/README @@ -1,14 +1,29 @@  -----------   For: User  ----------- +Following make targets are avaialable + +make compile + +This will compile and link the tests + +make run + +This will check for binaries if they are not there it +will call 'compile' target then it will execute all the +tests. + +make check +make all + +This will build and run tests.  The following make variables may help you in testing:   - UCLIBC_ONLY  - only run tests against uClibc   - GLIBC_ONLY   - only run tests against glibc - - COMPILE_ONLY - just build the tests, don't run them - - CHECK_ONLY   - only run the tests, don't compile or link them   - V / VERBOSE  - run tests with a lot of output - + - TEST_INSTALLED_UCLIBC - Test installed libraries  +                           under /lib and /usr/lib.  So, to just run the uClibc tests, try this:  make check UCLIBC_ONLY=1 diff --git a/test/Rules.mak b/test/Rules.mak index 878e9ea6a..ac210a72e 100644 --- a/test/Rules.mak +++ b/test/Rules.mak @@ -10,10 +10,11 @@  #  top_builddir ?= ../ +  TESTDIR=$(top_builddir)test/  include $(top_builddir)/Rules.mak - +ifndef TEST_INSTALLED_UCLIBC  ifdef UCLIBC_LDSO  ifeq (,$(findstring /,$(UCLIBC_LDSO)))  UCLIBC_LDSO := $(top_builddir)lib/$(UCLIBC_LDSO) @@ -21,7 +22,7 @@ endif  else  UCLIBC_LDSO := $(firstword $(wildcard $(top_builddir)lib/ld*))  endif - +endif  #--------------------------------------------------------  # Ensure consistent sort order, 'gcc -print-search-dirs' behavior, etc.  LC_ALL:= C @@ -96,8 +97,14 @@ ifneq ($(strip $(HAVE_SHARED)),y)  	HOST_LDFLAGS  += -static  endif  LDFLAGS += -B$(top_builddir)lib -Wl,-rpath,$(top_builddir)lib -Wl,-rpath-link,$(top_builddir)lib +UCLIBC_LDSO_ABSPATH=$(shell pwd) +ifdef TEST_INSTALLED_UCLIBC +LDFLAGS += -Wl,-rpath,./ +UCLIBC_LDSO_ABSPATH=/lib +endif +  ifeq ($(findstring -static,$(LDFLAGS)),) -LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_LDSO) +	LDFLAGS += -Wl,--dynamic-linker,$(UCLIBC_LDSO_ABSPATH)/$(UCLIBC_LDSO)  endif @@ -123,7 +130,7 @@ banner := ---------------------------------  pur_showclean = echo "  "CLEAN $(notdir $(CURDIR))  pur_showdiff  = echo "  "TEST_DIFF $(notdir $(CURDIR))/  pur_showlink  = echo "  "TEST_LINK $(notdir $(CURDIR))/ $@ -pur_showtest  = echo "  "TEST_EXEC $(notdir $(CURDIR))/ $@ +pur_showtest  = echo "  "TEST_EXEC $(notdir $(CURDIR))/ $(patsubst %.exe,%,$@)  sil_showclean =  sil_showdiff  = true  sil_showlink  = true @@ -131,7 +138,7 @@ sil_showtest  = true  ver_showclean =  ver_showdiff  = true echo  ver_showlink  = true echo -ver_showtest  = printf "\n$(banner)\nTEST $(notdir $(PWD))/ $@\n$(banner)\n" +ver_showtest  = printf "\n$(banner)\nTEST $(notdir $(PWD))/ $(patsubst %.exe,%,$@)\n$(banner)\n"  do_showclean  = $($(DISP)_showclean)  do_showdiff   = $($(DISP)_showdiff)  do_showlink   = $($(DISP)_showlink) diff --git a/test/Test.mak b/test/Test.mak index a5bc968c7..a3a9c463b 100644 --- a/test/Test.mak +++ b/test/Test.mak @@ -23,10 +23,7 @@ include ../Rules.mak  U_TARGETS := $(TESTS)  G_TARGETS := $(patsubst %,%_glibc,$(U_TARGETS)) -U_TARGETS += $(U_TESTS) -G_TARGETS += $(G_TESTS) -TARGETS   := $(SHELL_TESTS)  ifeq ($(GLIBC_ONLY),)  TARGETS   += $(U_TARGETS)  endif @@ -34,72 +31,78 @@ ifeq ($(UCLIBC_ONLY),)  TARGETS   += $(G_TARGETS)  endif  CLEAN_TARGETS := $(U_TARGETS) $(G_TARGETS) +COMPILE_TARGETS :=  $(TARGETS) +TARGETS += $(SHELL_TESTS) +RUN_TARGETS := $(patsubst %,%.exe,$(TARGETS)) -test check all: $(TARGETS) -	@true - -$(TARGETS): Makefile $(TESTDIR)Makefile $(TESTDIR)Rules.mak $(TESTDIR)Test.mak -$(U_TARGETS): $(patsubst %,%.c,$(U_TARGETS)) -$(G_TARGETS): $(patsubst %_glibc,%.c,$(G_TARGETS)) +define binary_name +$(patsubst %.exe,%,$@) +endef  define diff_test  	$(Q)\ -	for x in "$@.out" "$(patsubst %_glibc,%,$@).out" ; do \ -		test -e "$$x.good" && $(do_showdiff) "$@.out" "$$x.good" && exec diff -u "$@.out" "$$x.good" ; \ +	for x in "$(binary_name).out" "$(patsubst %_glibc,%,$(binary_name)).out" ; do \ +		test -e "$$x.good" && $(do_showdiff) "$(binary_name).out" "$$x.good" && exec diff -u "$(binary_name).out" "$$x.good" ; \  	done ; \  	true  endef  define uclibc_glibc_diff_test  	$(Q)\ -	test -z "$(DODIFF_$(patsubst %_glibc,%,$@))" && exec true ; \ -	uclibc_out="$@.out" ; \ -	glibc_out="$(patsubst %_glibc,%,$@).out" ; \ +	test -z "$(DODIFF_$(patsubst %_glibc,%,$(binary_name)))" && exec true ; \ +	uclibc_out="$(binary_name).out" ; \ +	glibc_out="$(patsubst %_glibc,%,$(binary_name)).out" ; \  	$(do_showdiff) $$uclibc_out $$glibc_out ; \  	exec diff -u "$$uclibc_out" "$$glibc_out"  endef  define exec_test  	$(showtest)  	$(Q)\ -	$(WRAPPER) $(WRAPPER_$(patsubst %_glibc,%,$@)) \ -	./$@ $(OPTS) $(OPTS_$(patsubst %_glibc,%,$@)) &> "$@.out" ; \ +	$(WRAPPER) $(WRAPPER_$(patsubst %_glibc,%,$(binary_name))) \ +	./$(binary_name) $(OPTS) $(OPTS_$(patsubst %_glibc,%,$(binary_name))) &> "$(binary_name).out" ; \  		ret=$$? ; \ -		expected_ret="$(RET_$(patsubst %_glibc,%,$@))" ; \ +		expected_ret="$(RET_$(patsubst %_glibc,%,$(binary_name)))" ; \  		test -z "$$expected_ret" && export expected_ret=0 ; \  	if ! test $$ret -eq $$expected_ret ; then \ -		$(RM) $@ ; \ +		$(RM) $(binary_name) ; \  		echo "ret == $$ret ; expected_ret == $$expected_ret" ; \ -		cat "$@.out" ; \ +		cat "$(binary_name).out" ; \  		exit 1 ; \  	fi -	$(SCAT) "$@.out" +	$(SCAT) "$(binary_name).out"  endef -$(U_TARGETS): -ifeq ($(CHECK_ONLY),) -	$(showlink) -	$(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c $@.c -o $@.o -	$(Q)$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$@) -endif -ifeq ($(COMPILE_ONLY),) +test check all: run +run: $(RUN_TARGETS) compile +$(RUN_TARGETS): $(TARGETS) +ifeq ($(shell echo "$(SHELL_TESTS)"|grep "$(binary_name)"),)  	$(exec_test)  	$(diff_test) +ifeq ($(UCLIBC_ONLY),) +	$(uclibc_glibc_diff_test) +endif  endif -$(G_TARGETS): +compile: $(COMPILE_TARGETS) + +G_TARGET_SRCS := $(patsubst %,%.c,$(G_TARGETS)) +U_TARGET_SRCS := $(patsubst %,%.c,$(U_TARGETS)) + +$(MAKE_SRCS): Makefile $(TESTDIR)Makefile $(TESTDIR)Rules.mak $(TESTDIR)Test.mak + +$(U_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS) +	$(showlink) +	$(Q)$(CC) $(CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$@) -c $@.c -o $@.o +	$(Q)$(CC) $(LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$@) + +$(G_TARGETS): $(U_TARGET_SRCS) $(MAKE_SRCS)  	$(showlink)  	$(Q)$(HOSTCC) $(HOST_CFLAGS) $(EXTRA_CFLAGS) $(CFLAGS_$(patsubst %_glibc,%,$@)) -c $(patsubst %_glibc,%,$@).c -o $@.o  	$(Q)$(HOSTCC) $(HOST_LDFLAGS) $@.o -o $@ $(EXTRA_LDFLAGS) $(LDFLAGS_$(patsubst %_glibc,%,$@)) -ifeq ($(COMPILE_ONLY),) -	$(exec_test) -	$(diff_test) -	$(uclibc_glibc_diff_test) -endif +  shell_%: -ifeq ($(COMPILE_ONLY),)  	$(showtest) -	$(Q)$(SHELL) $(patsubst shell_%,%.sh,$@) -endif +	$(Q)$(SHELL) $(patsubst shell_%,%.sh,$(binary_name))  %.so: %.c  	$(showlink) @@ -112,4 +115,4 @@ clean:  	$(showclean)  	$(Q)$(RM) *.a *.o *.so *~ core *.out *.gdb $(CLEAN_TARGETS) $(EXTRA_CLEAN) -.PHONY: all check clean test +.PHONY: all check clean test run compile  | 
