diff options
author | Ludovic Courtès <ludo@gnu.org> | 2022-08-02 18:01:35 +0200 |
---|---|---|
committer | Ludovic Courtès <ludo@gnu.org> | 2022-08-08 11:53:33 +0200 |
commit | a15542d26df42dabdb5e2f76d150ae200230c3b0 (patch) | |
tree | b5c17cf1660c5fc800a3f3773025ad0201848790 /tests | |
parent | 90ef692e9b48732ae2e3921ff5d101e186506a85 (diff) | |
download | guix-a15542d26df42dabdb5e2f76d150ae200230c3b0.tar.gz |
style: Add '--whole-file' option.
* guix/scripts/style.scm (format-whole-file): New procedure. (%options, show-help): Add '--whole-file'. (guix-style): Honor it. * tests/guix-style.sh: New file. * Makefile.am (SH_TESTS): Add it. * doc/guix.texi (Invoking guix style): Document it.
Diffstat (limited to 'tests')
-rw-r--r-- | tests/guix-style.sh | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/tests/guix-style.sh b/tests/guix-style.sh new file mode 100644 index 0000000000..58f953a0ec --- /dev/null +++ b/tests/guix-style.sh @@ -0,0 +1,80 @@ +# GNU Guix --- Functional package management for GNU +# Copyright © 2022 Ludovic Courtès <ludo@gnu.org> +# +# This file is part of GNU Guix. +# +# GNU Guix is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or (at +# your option) any later version. +# +# GNU Guix is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +# +# Test 'guix style'. +# + +set -e + +guix style --version + +tmpdir="guix-style-$$" +trap 'rm -r "$tmpdir"' EXIT + +tmpfile="$tmpdir/os.scm" +mkdir "$tmpdir" +cat > "$tmpfile" <<EOF +;;; This is a header with three semicolons. +;;; + +(define-module (foo bar) + #:use-module (guix) + #:use-module (gnu)) + +;; One blank line and a page break. + + +;; And now, the OS. +(operating-system + (host-name "komputilo") + (locale "eo_EO.UTF-8") + + ;; User accounts. + (users (cons (user-account + (name "alice") + (comment "Bob's sister") + (group "users") + + ;; Groups fit on one line. + (supplementary-groups '("wheel" "audio" "video"))) + %base-user-accounts)) + + ;; The services. + (services + (cons (service mcron-service-type) %base-services))) +EOF + +cp "$tmpfile" "$tmpfile.bak" + +initial_hash="$(guix hash "$tmpfile")" + +guix style -f "$tmpfile" +if ! test "$initial_hash" = "$(guix hash "$tmpfile")" +then + cat "$tmpfile" + diff -u "$tmpfile.bak" "$tmpfile" + false +fi + +# Introduce random changes and try again. +sed -i "$tmpfile" -e's/ +/ /g' +! test "$initial_hash" = "$(guix hash "$tmpfile")" + +guix style -f "$tmpfile" +test "$initial_hash" = "$(guix hash "$tmpfile")" |