emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] feature/integrated-elpa 73afa20 02/23: Starting to add tes


From: Phillip Lord
Subject: [Emacs-diffs] feature/integrated-elpa 73afa20 02/23: Starting to add test support
Date: Fri, 16 Sep 2016 20:34:15 +0000 (UTC)

branch: feature/integrated-elpa
commit 73afa20544c97248ef8be55ca5a376f9e1d6241f
Author: Phillip Lord <address@hidden>
Commit: Phillip Lord <address@hidden>

    Starting to add test support
---
 packages/GNUmakefile     |   29 +++++++++++++++++++++++
 packages/package-test.el |   57 ++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 86 insertions(+)

diff --git a/packages/GNUmakefile b/packages/GNUmakefile
new file mode 100644
index 0000000..ed686d8
--- /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 0000000..3e9827d
--- /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)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]