summary refs log tree commit diff
diff options
context:
space:
mode:
authorMaxim Cournoyer <maxim.cournoyer@gmail.com>2018-02-11 00:51:26 -0500
committerArun Isaac <arunisaac@systemreboot.net>2018-04-20 00:49:53 +0530
commitfacc0a96a171631bd346b37ffd47bcda6d82e892 (patch)
treef95b25ab25d92227ae28deb55b4dc1333474c91a
parent8a8fa82e72f55526e8aae85809c8655f5ff26690 (diff)
downloadguix-facc0a96a171631bd346b37ffd47bcda6d82e892.tar.gz
build-system: emacs: Add improved check phase.
* guix/build-system/emacs.scm (emacs-build): Add #:test-command keyword
argument. Remove #:configure-flags and #:test-target keyword arguments.
* guix/build/emacs-build-system.scm (check): New procedure.
(%standard-phases): Register check phase after the build phase.

Signed-off-by: Arun Isaac <arunisaac@systemreboot.net>
-rw-r--r--guix/build-system/emacs.scm6
-rw-r--r--guix/build/emacs-build-system.scm19
2 files changed, 21 insertions, 4 deletions
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index d9f1a8d289..ef6d1b3397 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -84,8 +84,7 @@
                       #:key source
                       (tests? #f)
                       (parallel-tests? #t)
-                      (test-target "test")
-                      (configure-flags ''())
+                      (test-command ''("make" "check"))
                       (phases '(@ (guix build emacs-build-system)
                                   %standard-phases))
                       (outputs '("out"))
@@ -110,9 +109,8 @@
                                  source)
                                 (source
                                  source))
-                    #:configure-flags ,configure-flags
                     #:system ,system
-                    #:test-target ,test-target
+                    #:test-command ,test-command
                     #:tests? ,tests?
                     #:phases ,phases
                     #:outputs %outputs
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index da17eb17b1..094b04750a 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -158,6 +158,24 @@ store in '.el' files."
           (substitute-program-names))))
     #t))
 
+(define* (check #:key tests? (test-command '("make" "check"))
+                (parallel-tests? #t) #:allow-other-keys)
+  "Run the tests by invoking TEST-COMMAND.
+
+When TEST-COMMAND uses make and PARALLEL-TESTS is #t, the tests are run in
+parallel. PARALLEL-TESTS? is ignored when using a non-make TEST-COMMAND."
+  (match-let (((test-program . args) test-command))
+    (let ((using-make? (string=? test-program "make")))
+      (if tests?
+          (apply invoke test-program
+                 `(,@args
+                   ,@(if (and using-make? parallel-tests?)
+                         `("-j" ,(number->string (parallel-job-count)))
+                         '())))
+          (begin
+            (format #t "test suite not run~%")
+            #t)))))
+
 (define* (install #:key outputs
                   (include %default-include)
                   (exclude %default-exclude)
@@ -256,6 +274,7 @@ second hyphen.  This corresponds to 'name-version' as used in ELPA packages."
     ;; Move the build phase after install: the .el files are byte compiled
     ;; directly in the store.
     (delete 'build)
+    (replace 'check check)
     (replace 'install install)
     (add-after 'install 'build build)
     (add-after 'install 'make-autoloads make-autoloads)