~ruther/guix-local

e8ab4ccaa7def9838a7fc240609028078a0988b0 — Ludovic Courtès 2 years ago 2f56845
style: Fix conversion of ‘unquote-splicing’ by ‘-S arguments’.

* guix/scripts/style.scm (unquote->ungexp): Add missing comma for
‘ungexp-splicing’.
* tests/style.scm ("gexpify arguments, substitute-keyword-arguments +
unquote-splicing"): New test.

Change-Id: I17dcdd9b4812d54ddba1137e369360706b137bb4
2 files changed, 26 insertions(+), 3 deletions(-)

M guix/scripts/style.scm
M tests/style.scm
M guix/scripts/style.scm => guix/scripts/style.scm +2 -2
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021-2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 304,7 304,7 @@ counterpart."
           value))
      (('unquote-splicing x)
       (if (= quotation 1)
           `(ungexp-splicing x)
           `(ungexp-splicing ,x)
           value))
      (('quasiquote x)
       (list 'quasiquote (loop x (+ quotation 1))))

M tests/style.scm => tests/style.scm +24 -1
@@ 1,5 1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2021-2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;


@@ 500,6 500,29 @@
      (load file)
      (read-package-field (@ (my-packages) my-coreutils) 'arguments 7))))

(test-equal "gexpify arguments, substitute-keyword-arguments + unquote-splicing"
  "\
        (substitute-keyword-arguments (package-arguments coreutils)
          ((#:make-flags flags
            #~'())
           #~(cons \"-DXYZ=yes\"
                   #$@(if #t flags
                          '())))))\n"
  (call-with-test-package '((arguments
                             (substitute-keyword-arguments
                                 (package-arguments coreutils)
                               ((#:make-flags flags ''())
                                `(cons "-DXYZ=yes" ,@(if #t flags '()))))))
    (lambda (directory)
      (define file
        (string-append directory "/my-packages.scm"))

      (system* "guix" "style" "-L" directory "my-coreutils"
               "-S" "arguments")

      (load file)
      (read-package-field (@ (my-packages) my-coreutils) 'arguments 6))))

(test-equal "gexpify arguments, append substitute-keyword-arguments"
  "\
        (append (list #:tests? #f)