summaryrefslogtreecommitdiff
path: root/guix
diff options
context:
space:
mode:
authorLiliana Marie Prikler <liliana.prikler@gmail.com>2025-03-02 11:48:36 +0100
committerLiliana Marie Prikler <liliana.prikler@gmail.com>2025-06-15 16:56:45 +0200
commitd1ac3f19474cda57a080a6a0b17298c6f68537e2 (patch)
treeed596da5e72682c2391be3b39d89a17bc709624e /guix
parent3455034376cdb73ca4913749e2fe43ddf6fc7bf5 (diff)
build-system: emacs: Guess test framework.
* guix/build/emacs-build-system (check-command): New variable. (check): Use it. * guix/build-system/emacs.scm (emacs-build)[test-command]: Set to #f.
Diffstat (limited to 'guix')
-rw-r--r--guix/build-system/emacs.scm2
-rw-r--r--guix/build/emacs-build-system.scm35
2 files changed, 24 insertions, 13 deletions
diff --git a/guix/build-system/emacs.scm b/guix/build-system/emacs.scm
index 2ec08fe878..fc165c21d7 100644
--- a/guix/build-system/emacs.scm
+++ b/guix/build-system/emacs.scm
@@ -84,7 +84,7 @@
#:key source
(tests? (not (%current-target-system)))
(parallel-tests? #t)
- (test-command ''("make" "check"))
+ (test-command #f) ; inferred in emacs-build-system
(phases '%standard-phases)
(outputs '("out"))
(include (quote %default-include))
diff --git a/guix/build/emacs-build-system.scm b/guix/build/emacs-build-system.scm
index aa083c6409..ff35547968 100644
--- a/guix/build/emacs-build-system.scm
+++ b/guix/build/emacs-build-system.scm
@@ -223,23 +223,34 @@ locations in the store in '.el' files."
(let ((name (store-directory->elpa-name-version (assoc-ref outputs "out"))))
(and=> (find-root-library-file name) write-pkg-file)))
-(define* (check #:key tests? (test-command '("make" "check"))
+(define (check-command test-command)
+ (cond
+ (test-command test-command)
+ ((which "buttercup") '("buttercup" "-L" "."))
+ ((which "ert-runner") '("ert-runner"))
+ ((file-exists? "Makefile") '("make" "check"))
+ (else #f)))
+
+(define* (check #:key tests? test-command
(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)))))
+ (match (and tests? (check-command test-command))
+ ((test-program . args)
+ (let ((using-make? (string=? test-program "make")))
+ (apply invoke test-program
+ `(,@args
+ ,@(if (and using-make? parallel-tests?)
+ `("-j" ,(number->string (parallel-job-count)))
+ '())))))
+ (#f
+ (if tests?
+ (begin
+ (display "warning: test system not found.\n")
+ (display "note: this will be an error in the future.\n"))
+ (display "test suite not run\n")))))
(define* (install #:key outputs
(include %default-include)