From: Phillip Lord Date: Thu, 8 Sep 2016 21:03:43 +0000 (+0100) Subject: Starting to add test support X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=73afa20544c97248ef8be55ca5a376f9e1d6241f;p=emacs.git Starting to add test support --- diff --git a/packages/GNUmakefile b/packages/GNUmakefile new file mode 100644 index 00000000000..ed686d821be --- /dev/null +++ b/packages/GNUmakefile @@ -0,0 +1,29 @@ +## This file is called GNUmakefile because Makefile is git ignored. Rename +## when this is autoconf'd + + +EMACS=../src/emacs + +DIRS=$(filter-out .,$(subst ./,,$(shell find . -maxdepth 1 -type d))) + +## alas "all" is an ELPA package +build-all: $(DIRS) + +define package_template +$(1): $(1)/$(1)-pkg.el + +$(1)/$(1)-pkg.el: + $$(EMACS) --batch --load package-build.el --eval '(package-build-prepare "$(1)")' + +endef + +$(foreach dir,$(DIRS),$(eval $(call package_template,$(dir)))) + +define test_template +$(1)-test: + $$(EMACS) --batch --load package-test.el --eval '(assess-discover-run-and-exit-batch-dir "$(1)")' +endef + +$(foreach dir,$(DIRS),$(eval $(call test_template,$(dir)))) + +test: $(patsubst %,%-test,$(DIRS)) diff --git a/packages/package-test.el b/packages/package-test.el new file mode 100644 index 00000000000..3e9827dfc23 --- /dev/null +++ b/packages/package-test.el @@ -0,0 +1,57 @@ +(defun assess-discover-tests (directory) + "Discover tests in directory. + +Tests must conform to one (and only one!) of several naming +schemes. + + - End with -test.el + - End with -tests.el + - Start with test- + - Any .el file in a directory called test + - Any .el file in a directory called tests + +Each of these is tried until one matches. So, a top-level file +called \"blah-test.el\" will prevent discovery of files in a +tests directory." + (or + ;; files with + (directory-files directory nil ".*-test.el$") + (directory-files directory nil ".*-tests.el$") + (directory-files directory nil "test-.*.el$") + (let ((dir-test + (concat directory "test/"))) + (when (file-exists-p dir-test) + (mapcar + (lambda (file) + (concat dir-test file)) + (directory-files dir-test nil ".*.el")))) + (let ((dir-tests + (concat directory "tests/"))) + (when (file-exists-p dir-tests) + (mapcar + (lambda (file) + (concat dir-tests file)) + (directory-files dir-tests nil ".*.el")))))) + +(defun assess-discover--load-all-tests (directory) + (mapc + 'load + (assess-discover-tests directory))) + +(defun assess-discover-load-tests () + (interactive) + (assess-discover--load-all-tests default-directory)) + +;;;###autoload +(defun assess-discover-run-batch (&optional selector) + (assess-discover--load-all-tests default-directory) + (ert-run-tests-batch selector)) + +;;;###autoload +(defun assess-discover-run-and-exit-batch (&optional selector) + (assess-discover--load-all-tests default-directory) + (ert-run-tests-batch-and-exit selector)) + +(defun assess-discover-run-and-exit-batch-dir (directory) + (let ((default-directory directory)) + (assess-discover-run-and-exit-batch)))