]> git.eshelyaron.com Git - emacs.git/commitdiff
Makefile generator for tests
authorPhillip Lord <phillip.lord@russet.org.uk>
Wed, 14 Sep 2016 21:39:25 +0000 (22:39 +0100)
committerPhillip Lord <phillip.lord@russet.org.uk>
Wed, 14 Sep 2016 21:39:25 +0000 (22:39 +0100)
packages/GNUmakefile
packages/admin/package-makefile.el
packages/core/example/test/first-test.el [new file with mode: 0644]
packages/gnumakefile.mk
packages/temp.el
test/Makefile.in

index 4d97ed32934e4847890904530cdf2a59f71480c1..e1bc6f85f9678b9393d72436a24a4f25b3f22d31 100644 (file)
@@ -3,36 +3,33 @@
 
 
 EMACS=../src/emacs
+ELPA=../../elpa
+
 
 DIRS=$(filter-out .,$(subst ./,,$(shell find . -maxdepth 1 -type d)))
 
 ## dependent on makefile
 all: pkg-all $(EMACS)
 
+check: cleanlog check-packages
 
+check-maybe: check-packages
 
-# 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
+WRITE_LOG = > $@ 2>&1 || { stat=ERROR; cat $@; }; echo $$stat: $@
 
-# $(foreach dir,$(DIRS),$(info $(call test_template,$(dir))))
-
-# test: $(patsubst %,%-test,$(DIRS))
+gnumakefile-inc.mk: ./admin/package-makefile.el
+       $(EMACS) --batch --load admin/package-makefile.el \
+               --funcall package-makefile
 
 include gnumakefile-inc.mk
 
-clean:
+cleanlog:
+       find . -name "*log" -exec rm -v {} \;
+
+clean: cleanlog
        find . -name "*pkg.el" -exec rm -v {} \;
        find . -name "*-autoloads.el" -exec rm -v {} \;
        find . -name "*elc" -exec rm -v {} \;
+
+
+.PHONY: check clean all
index ea8cece74bacfb74087d1a20795ddffbc3b3c925..0e42918a0d822a4407b8220c7263d6edfc57f235 100644 (file)
@@ -1,3 +1,5 @@
+(require 'seq)
+
 (defun package-makefile--package-dirs (directory)
   (directory-files directory nil "[^.].*"))
 
@@ -5,7 +7,7 @@
   (format
    "%s-pkg: %s/%s/%s-pkg.el
 
-%s/%s/%s-pkg.el:
+%s/%s/%s-pkg.el: %s
 \t$(EMACS) --batch --directory=admin \\
 \t\t--load admin/package-build.el \\
 \t\t--eval '(package-build-prepare \"%s/%s\")'
 
    base-dir top-dir base-dir base-dir
    top-dir base-dir base-dir
+   (mapconcat
+    (lambda (n)
+      (concat top-dir "/" base-dir "/" n))
+    (seq-remove
+     (lambda (n)
+       (or
+        (string-match-p
+         ".*-autoloads.el" n)
+        (string-match-p
+         ".*-pkg.el" n)))
+     (directory-files
+      (concat top-dir "/" base-dir)
+      nil
+      ".*el$"))
+    " ")
    top-dir base-dir))
 
-(defun package-makefile--makefile-pkg-targets (top-dir all-dirs)
+(defun package-makefile--pkg-targets (top-dir all-dirs)
   (concat
    "pkg-all: "
    (mapconcat
     all-dirs
     "\n")))
 
+(defun package-makefile--log-target (top-dir base-dir)
+  (let* ((fulldir (concat top-dir "/" base-dir))
+         (filestem (concat top-dir "/" base-dir "/" base-dir))
+         (logfile (concat filestem ".log"))
+         (pkgfile (concat filestem "-pkg.el")))
+    (format
+     "%s: %s
+       @$(EMACS) --batch --load admin/assess-discover.el \\
+               --eval '(assess-discover-run-and-exit-batch-dir \"%s\")' \\
+               $(WRITE_LOG)
+
+%s:
+       test ! -f ./%s || mv ./%s ./%s~
+       $(MAKE) %s WRITE_LOG=
+
+%s: %s
+
+.PHONY: %s %s
+"
+     logfile pkgfile
+     fulldir
+     fulldir
+     logfile logfile logfile
+     logfile
+     base-dir fulldir
+     fulldir base-dir
+  )))
+
+(defun package-makefile--test-targets (top-dir all-dirs)
+  (concat
+   (mapconcat
+    (lambda (base-dir)
+      (package-makefile--log-target top-dir base-dir))
+    all-dirs
+    "\n")
+
+   "
+check-packages: "
+
+   (mapconcat
+    (lambda (base-dir)
+      (concat top-dir "/" base-dir "/" base-dir ".log"))
+    all-dirs
+    " ")))
 
 (defun package-makefile--core-packages ()
   (package-makefile--package-dirs "core"))
 
-(defun package-makefile--makefile ()
+(defun package-makefile--1 ()
   (concat
-   (package-makefile--makefile-pkg-targets
+   (package-makefile--pkg-targets
+    "core"
+    (package-makefile--core-packages))
+   "\n"
+
+   (package-makefile--test-targets
     "core"
     (package-makefile--core-packages))
    "\n"))
 (defun package-makefile ()
   (with-temp-buffer
     (insert
-     (package-makefile--makefile))
+     (package-makefile--1))
     (write-file "gnumakefile-inc.mk")))
 
 ;; example: core/example/example-pkg.el
diff --git a/packages/core/example/test/first-test.el b/packages/core/example/test/first-test.el
new file mode 100644 (file)
index 0000000..0e9803e
--- /dev/null
@@ -0,0 +1,7 @@
+(ert-deftest simple-succeeding-test ()
+  (should t))
+
+
+(ert-deftest simple-failing-test ()
+  :expected-result :failed
+  (should nil))
index 347f0da201fdb6ff96f63a020113d32491746c06..eba54fcdf832d54f209c3b4a752ea0dfac41dfd9 100644 (file)
@@ -1,6 +1,16 @@
-example: core/example/example-pkg.el
+core/example/example.log: core/example/example-pkg.el
+       @$(EMACS) --batch --load admin/assess-discover.el \
+               --eval '(assess-discover-run-and-exit-batch-dir "core/example")' \
+               $(WRITE_LOG)
 
-core/example/example-pkg.el:
-       $(EMACS) --batch --directory=admin \
-               --load admin/package-build.el \
-               --eval '(package-build-prepare "core/example")'
+
+core/example:
+       test ! -f core/example/example.log || mv ./core/example/example.log ./core/example/example.log~
+       $(MAKE) core/example/example.log WRITE_LOG=
+
+example: core/example
+
+.PHONY: core/example example
+
+
+check-packages: core/example/example.log
index 23e7e801c0ef3cb176c2ae7b9a242ee3501809d0..47635363c37d0f25342800a62b8eeb4437feff45 100644 (file)
@@ -8,4 +8,7 @@
 
 (package-build-prepare "core/example")
 
-(package-makefile)
+(package-makefile--pkg-targets
+ "/home/phillord/src/git/elpa-git/master/packages"
+ (package-makefile--package-dirs
+  "/home/phillord/src/git/elpa-git/master/packages"))
index a3fbc846205616c6e83ce2c5989531f9dade595a..e8505405108debdb79c1294250719253e4c6375a 100644 (file)
@@ -169,7 +169,7 @@ check: mostlyclean check-no-automated-subdir check-packages
 
 
 check-packages:
-       @${MAKE} -C ../packages test
+       @${MAKE} -C ../packages check
 
 ## Rerun all default and expensive tests.
 .PHONY: check-expensive