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.
This commit is contained in:
Liliana Marie Prikler 2025-03-02 11:48:36 +01:00
parent 3455034376
commit d1ac3f1947
No known key found for this signature in database
GPG key ID: 442A84B8C70E2F87
2 changed files with 24 additions and 13 deletions

View file

@ -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))

View file

@ -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))
(match (and tests? (check-command test-command))
((test-program . args)
(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)))
'())))
'())))))
(#f
(if tests?
(begin
(format #t "test suite not run~%")
#t)))))
(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)