unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Philipp Stephani <p.stephani2@gmail.com>
To: emacs-devel@gnu.org
Cc: Philipp Stephani <phst@google.com>
Subject: [PATCH] Integrate module test with normal test suite
Date: Sat, 22 Apr 2017 16:58:43 +0200	[thread overview]
Message-ID: <20170422145843.39512-1-phst@google.com> (raw)
In-Reply-To: <8360hwqz1g.fsf@gnu.org>

* 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.
---
 configure.ac                                       |  2 ++
 test/Makefile.in                                   | 22 ++++++++++++++++++++--
 .../mod-test => test/data/emacs-module}/Makefile   | 16 ++++++----------
 .../mod-test => test/data/emacs-module}/mod-test.c |  0
 .../test.el => test/src/emacs-module-tests.el      |  6 +++---
 5 files changed, 31 insertions(+), 15 deletions(-)
 rename {modules/mod-test => test/data/emacs-module}/Makefile (81%)
 rename {modules/mod-test => test/data/emacs-module}/mod-test.c (100%)
 rename modules/mod-test/test.el => test/src/emacs-module-tests.el (97%)

diff --git a/configure.ac b/configure.ac
index bd8f7650cc..f3c53d7a19 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3476,6 +3476,8 @@ AC_DEFUN
 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 a1b772de21..03ae32e3a6 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -63,7 +63,8 @@ TEST_LOCALE =
 
 # 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 @@ SELECTOR_ACTUAL=
 	$(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 @@ define test_template
 
 $(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
similarity index 81%
rename from modules/mod-test/Makefile
rename to test/data/emacs-module/Makefile
index 27ae2ae3c2..db5e1b6808 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
similarity index 100%
rename from modules/mod-test/mod-test.c
rename to test/data/emacs-module/mod-test.c
diff --git a/modules/mod-test/test.el b/test/src/emacs-module-tests.el
similarity index 97%
rename from modules/mod-test/test.el
rename to test/src/emacs-module-tests.el
index caa807d300..93e85ae22d 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.
-- 
2.12.2




  reply	other threads:[~2017-04-22 14:58 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-04-22 14:23 [PATCH] Integrate module test with normal test suite Philipp Stephani
2017-04-22 14:47 ` Eli Zaretskii
2017-04-22 14:58   ` Philipp Stephani [this message]
2017-04-29 12:39     ` Philipp Stephani

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20170422145843.39512-1-phst@google.com \
    --to=p.stephani2@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=phst@google.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).