~ruther/guix-local

0383afa02ae3777a0adb5304cb6918a2a5f5f250 — Andy Patterson 8 years ago f56da60
build-system/asdf: Handle tests defined in external systems.

* guix/build-system/asdf.scm (asdf-build): Add a #:test-asd-file argument.
[builder]: Pass it to the build system.
(package-with-build-system)[transform]: Strip it from source systems' arguments.
* guix/build/asdf-build-system.scm (check): Pass the fully qualified path to
it on to the test-system procedure.
* guix/build/lisp-utils.scm (test-system): Load the file, or otherwise one of
the often used names for it, before running the tests.  Adjust the docstring
accordingly.
3 files changed, 24 insertions(+), 6 deletions(-)

M guix/build-system/asdf.scm
M guix/build/asdf-build-system.scm
M guix/build/lisp-utils.scm
M guix/build-system/asdf.scm => guix/build-system/asdf.scm +3 -1
@@ 199,7 199,7 @@ set up using CL source package conventions."
       (define base-arguments
         (if target-is-source?
             (strip-keyword-arguments
              '(#:tests? #:asd-file #:lisp #:asd-system-name)
              '(#:tests? #:asd-file #:lisp #:asd-system-name #:test-asd-file)
              (package-arguments pkg))
             (package-arguments pkg)))



@@ 266,6 266,7 @@ set up using CL source package conventions."
                  (tests? #t)
                  (asd-file #f)
                  (asd-system-name #f)
                  (test-asd-file #f)
                  (phases '(@ (guix build asdf-build-system)
                              %standard-phases))
                  (search-paths '())


@@ 296,6 297,7 @@ set up using CL source package conventions."
                                   (source source))
                       #:asd-file ,(or asd-file (string-append system-name ".asd"))
                       #:asd-system-name ,system-name
                       #:test-asd-file ,test-asd-file
                       #:system ,system
                       #:tests? ,tests?
                       #:phases ,phases

M guix/build/asdf-build-system.scm => guix/build/asdf-build-system.scm +6 -2
@@ 131,12 131,16 @@ valid."
  #t)

(define* (check #:key tests? outputs inputs asd-file asd-system-name
                test-asd-file
                #:allow-other-keys)
  "Test the system."
  (let* ((out (library-output outputs))
         (asd-file (source-asd-file out asd-system-name asd-file)))
         (asd-file (source-asd-file out asd-system-name asd-file))
         (test-asd-file
          (and=> test-asd-file
                 (cut source-asd-file out asd-system-name <>))))
    (if tests?
        (test-system asd-system-name asd-file)
        (test-system asd-system-name asd-file test-asd-file)
        (format #t "test suite not run~%")))
  #t)


M guix/build/lisp-utils.scm => guix/build/lisp-utils.scm +15 -3
@@ 184,12 184,24 @@ asdf:system-depends-on.  First load the system's ASD-FILE."
          `(:lib ,(string-append system ".a"))
          '())))

(define (test-system system asd-file)
  "Use a lisp implementation to test SYSTEM using asdf.  Load ASD-FILE first."
(define (test-system system asd-file test-asd-file)
  "Use a lisp implementation to test SYSTEM using asdf.  Load ASD-FILE first.
Also load TEST-ASD-FILE if necessary."
  (lisp-eval-program
   `((require :asdf)
     (let ((*package* (find-package :asdf)))
       (load ,asd-file))
       (load ,asd-file)
       ,@(if test-asd-file
             `((load ,test-asd-file))
             ;; Try some likely files.
             (map (lambda (file)
                    `(when (uiop:file-exists-p ,file)
                       (load ,file)))
                  (list
                   (string-append system "-tests.asd")
                   (string-append system "-test.asd")
                   "tests.asd"
                   "test.asd"))))
     (asdf:test-system ,system))))

(define (string->lisp-keyword . strings)