diff options
author | Philipp Stephani <phst@google.com> | 2017-04-22 15:41:39 +0200 |
---|---|---|
committer | Philipp Stephani <phst@google.com> | 2017-04-29 14:38:53 +0200 |
commit | bfc0f610bac3f97930941e9a66cbcd11cd382167 (patch) | |
tree | 79859d074900b59a51020efc54df3385cc33a80d | |
parent | 6a3f331565322b43c41fdf67c6d2dc3feac8cc1c (diff) | |
download | emacs-bfc0f610bac3f97930941e9a66cbcd11cd382167.tar.gz |
Integrate module test with normal test suite
* test/Makefile.in (ELFILES): Exclude module test if modules aren't
configured.
(EMACS_TEST_DIRECTORY): Expand test directory so that it's set
correctly even if Emacs changes the current directory.
($(srcdir)/src/emacs-module-tests.log)
($(test_module)): Proper dependency tracking for test module.
* test/data/emacs-module/Makefile (ROOT): Adapt to new location.
Remove 'check' target and EMACS variable, which are no longer
necessary.
(SO): Change to include period.
* test/src/emacs-module-tests.el (mod-test): Use EMACS_TEST_DIRECTORY
environment variable to reliably find test data.
* configure.ac (HAVE_MODULES, MODULES_SUFFIX): Add necessary
substitutions.
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | test/Makefile.in | 22 | ||||
-rw-r--r-- | test/data/emacs-module/Makefile (renamed from modules/mod-test/Makefile) | 16 | ||||
-rw-r--r-- | test/data/emacs-module/mod-test.c (renamed from modules/mod-test/mod-test.c) | 0 | ||||
-rw-r--r-- | test/src/emacs-module-tests.el (renamed from modules/mod-test/test.el) | 6 |
5 files changed, 31 insertions, 15 deletions
diff --git a/configure.ac b/configure.ac index bd8f7650cc4..f3c53d7a19d 100644 --- a/configure.ac +++ b/configure.ac @@ -3476,6 +3476,8 @@ if test "${HAVE_MODULES}" = yes; then fi AC_SUBST(MODULES_OBJ) AC_SUBST(LIBMODULES) +AC_SUBST(HAVE_MODULES) +AC_SUBST(MODULES_SUFFIX) ### Use -lpng if available, unless '--with-png=no'. HAVE_PNG=no diff --git a/test/Makefile.in b/test/Makefile.in index a1b772de216..03ae32e3a62 100644 --- a/test/Makefile.in +++ b/test/Makefile.in @@ -63,7 +63,8 @@ TEST_LOCALE = C # The actual Emacs command run in the targets below. # Prevent any setting of EMACSLOADPATH in user environment causing problems. -emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) EMACS_TEST_DIRECTORY=$(srcdir) \ +emacs = EMACSLOADPATH= LC_ALL=$(TEST_LOCALE) \ + EMACS_TEST_DIRECTORY=$(abspath $(srcdir)) \ $(GDB) "$(EMACS)" $(EMACSOPT) .PHONY: all check @@ -124,8 +125,16 @@ endif $(emacs) -l ert -l $$loadfile \ --eval "(ert-run-tests-batch-and-exit ${SELECTOR_ACTUAL})" ${WRITE_LOG} +ifeq (@HAVE_MODULES@, yes) +maybe_exclude_module_tests := +else +maybe_exclude_module_tests := -name emacs-module-tests.el -prune -o +endif + ELFILES := $(shell find ${srcdir} -path "${srcdir}/manual" -prune -o \ - -name "*resources" -prune -o -name "*.el" -print) + -name "*resources" -prune -o \ + ${maybe_exclude_module_tests} \ + -name "*.el" -print) ## .log files may be in a different directory for out of source builds LOGFILES := $(patsubst %.el,%.log, \ $(patsubst $(srcdir)/%,%,$(ELFILES))) @@ -159,6 +168,15 @@ endef $(foreach test,${TESTS},$(eval $(call test_template,${test}))) +ifeq (@HAVE_MODULES@, yes) +test_module_dir := $(srcdir)/data/emacs-module +test_module_name := mod-test@MODULES_SUFFIX@ +test_module := $(test_module_dir)/$(test_module_name) +$(srcdir)/src/emacs-module-tests.log: $(test_module) +$(test_module): $(srcdir)/../src/emacs-module.[ch] + $(MAKE) -C $(test_module_dir) $(test_module_name) SO=@MODULES_SUFFIX@ +endif + ## Check that there is no 'automated' subdirectory, which would ## indicate an incomplete merge from an older version of Emacs where ## the tests were arranged differently. diff --git a/modules/mod-test/Makefile b/test/data/emacs-module/Makefile index 27ae2ae3c2c..db5e1b68088 100644 --- a/modules/mod-test/Makefile +++ b/test/data/emacs-module/Makefile @@ -17,29 +17,25 @@ # You should have received a copy of the GNU General Public License # along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. -ROOT = ../.. -EMACS = $(ROOT)/src/emacs +ROOT = ../../.. CC = gcc LD = gcc LDFLAGS = -# On MS-Windows, say "make SO=dll" to build the module -SO = so +# On MS-Windows, say "make SO=.dll" to build the module +SO = .so # -fPIC is a no-op on Windows, but causes a compiler warning -ifeq ($(SO),dll) +ifeq ($(SO),.dll) CFLAGS = -std=gnu99 -ggdb3 -Wall else CFLAGS = -std=gnu99 -ggdb3 -Wall -fPIC endif -all: mod-test.$(SO) +all: mod-test$(SO) -%.$(SO): %.o +%$(SO): %.o $(LD) -shared $(LDFLAGS) -o $@ $< %.o: %.c $(CC) $(CFLAGS) -I$(ROOT)/src -c $< - -check: - $(EMACS) -batch -l ert -l test.el -f ert-run-tests-batch-and-exit diff --git a/modules/mod-test/mod-test.c b/test/data/emacs-module/mod-test.c index 50be8620bd6..50be8620bd6 100644 --- a/modules/mod-test/mod-test.c +++ b/test/data/emacs-module/mod-test.c diff --git a/modules/mod-test/test.el b/test/src/emacs-module-tests.el index caa807d3005..93e85ae22db 100644 --- a/modules/mod-test/test.el +++ b/test/src/emacs-module-tests.el @@ -19,9 +19,9 @@ (require 'ert) -(add-to-list 'load-path - (file-name-directory (or #$ (expand-file-name (buffer-file-name))))) -(require 'mod-test) +(require 'mod-test + (expand-file-name "data/emacs-module/mod-test" + (getenv "EMACS_TEST_DIRECTORY"))) ;; ;; Basic tests. |