;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2021 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2021-2022 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
(string-append directory "/my-packages.scm"))
;; Run as a separate process to make sure FILE is reloaded.
- (system* "guix" "style" "-L" directory "my-coreutils")
+ (system* "guix" "style" "-L" directory "-S" "inputs"
+ "my-coreutils")
(system* "cat" file)
(load file)
(string-append directory "/my-packages.scm"))
(system* "guix" "style" "-L" directory "my-coreutils"
+ "-S" "inputs"
"--input-simplification=safe")
(load file)
(string-append directory "/my-packages.scm"))
(system* "guix" "style" "-L" directory "my-coreutils"
+ "-S" "inputs"
"--input-simplification=safe")
(load file)
" ;another one\n")))
(system* "cat" file)
- (system* "guix" "style" "-L" directory "my-coreutils")
+ (system* "guix" "style" "-L" directory "-S" "inputs"
+ "my-coreutils")
(load file)
(list (package-inputs (@ (my-packages) my-coreutils))
" ;margin comment\n")))
(system* "cat" file)
- (system* "guix" "style" "-L" directory "my-coreutils")
+ (system* "guix" "style" "-L" directory "-S" "inputs"
+ "my-coreutils")
(load file)
(list (package-inputs (@ (my-packages) my-coreutils))
((",gmp\\)(.*)$" _ rest)
(string-append ",gmp)\n ;; line comment!\n" rest)))
- (system* "guix" "style" "-L" directory "my-coreutils")
+ (system* "guix" "style" "-L" directory "-S" "inputs"
+ "my-coreutils")
(load file)
(list (package-inputs (@ (my-packages) my-coreutils))
((",acl\\)(.*)$" _ rest)
(string-append ",acl) ;another one\n" rest)))
- (system* "guix" "style" "-L" directory "my-coreutils")
+ (system* "guix" "style" "-L" directory "-S" "inputs"
+ "my-coreutils")
(load file)
(list (package-inputs (@ (my-packages) my-coreutils))
(read-package-field (@ (my-packages) my-coreutils) 'inputs 4)))))
+(test-equal "read-with-comments: dot notation"
+ (cons 'a 'b)
+ (call-with-input-string "(a . b)"
+ read-with-comments))
+
(test-pretty-print "(list 1 2 3 4)")
+(test-pretty-print "((a . 1) (b . 2))")
+(test-pretty-print "(a b c . boom)")
(test-pretty-print "(list 1
2
3
;; Regular indentation for 'replace' here.
(replace \"gmp\" gmp))")
+(test-pretty-print "\
+(package
+ ;; Here 'sha256', 'base32', and 'arguments' must be
+ ;; immediately followed by a newline.
+ (source (origin
+ (method url-fetch)
+ (sha256
+ (base32
+ \"not a real base32 string\"))))
+ (arguments
+ '(#:phases %standard-phases
+ #:tests? #f)))")
+
+;; '#:key value' is kept on the same line.
+(test-pretty-print "\
+(package
+ (name \"keyword-value-same-line\")
+ (arguments
+ (list #:phases #~(modify-phases %standard-phases
+ (add-before 'x 'y
+ (lambda* (#:key inputs #:allow-other-keys)
+ (foo bar baz))))
+ #:make-flags #~'(\"ANSWER=42\")
+ #:tests? #f)))")
+
+(test-pretty-print "\
+(let ((x 1)
+ (y 2)
+ (z (let* ((a 3)
+ (b 4))
+ (+ a b))))
+ (list x y z))")
+
+(test-pretty-print "\
+(substitute-keyword-arguments (package-arguments x)
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-before 'build 'do-things
+ (lambda _
+ #t))))
+ ((#:configure-flags flags)
+ `(cons \"--without-any-problem\"
+ ,flags)))")
+
+(test-equal "pretty-print-with-comments, canonicalize-comment"
+ "\
+(list abc
+ ;; Not a margin comment.
+ ;; Ditto.
+ ;;
+ ;; There's a blank line above.
+ def ;margin comment
+ ghi)"
+ (let ((sexp (call-with-input-string
+ "\
+(list abc
+ ;Not a margin comment.
+ ;;; Ditto.
+ ;;;;;
+ ; There's a blank line above.
+ def ;; margin comment
+ ghi)"
+ read-with-comments)))
+ (call-with-output-string
+ (lambda (port)
+ (pretty-print-with-comments port sexp
+ #:format-comment
+ canonicalize-comment)))))
+
(test-end)
;; Local Variables: