Commit | Line | Data |
---|---|---|
a15542d2 LC |
1 | # GNU Guix --- Functional package management for GNU |
2 | # Copyright © 2022 Ludovic Courtès <ludo@gnu.org> | |
3 | # | |
4 | # This file is part of GNU Guix. | |
5 | # | |
6 | # GNU Guix is free software; you can redistribute it and/or modify it | |
7 | # under the terms of the GNU General Public License as published by | |
8 | # the Free Software Foundation; either version 3 of the License, or (at | |
9 | # your option) any later version. | |
10 | # | |
11 | # GNU Guix is distributed in the hope that it will be useful, but | |
12 | # WITHOUT ANY WARRANTY; without even the implied warranty of | |
13 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
14 | # GNU General Public License for more details. | |
15 | # | |
16 | # You should have received a copy of the GNU General Public License | |
17 | # along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. | |
18 | ||
19 | # | |
20 | # Test 'guix style'. | |
21 | # | |
22 | ||
23 | set -e | |
24 | ||
25 | guix style --version | |
26 | ||
27 | tmpdir="guix-style-$$" | |
28 | trap 'rm -r "$tmpdir"' EXIT | |
29 | ||
30 | tmpfile="$tmpdir/os.scm" | |
31 | mkdir "$tmpdir" | |
32 | cat > "$tmpfile" <<EOF | |
33 | ;;; This is a header with three semicolons. | |
34 | ;;; | |
35 | ||
36 | (define-module (foo bar) | |
37 | #:use-module (guix) | |
38 | #:use-module (gnu)) | |
39 | ||
40 | ;; One blank line and a page break. | |
41 | ||
42 | \f | |
43 | ;; And now, the OS. | |
44 | (operating-system | |
45 | (host-name "komputilo") | |
46 | (locale "eo_EO.UTF-8") | |
47 | ||
48 | ;; User accounts. | |
49 | (users (cons (user-account | |
50 | (name "alice") | |
51 | (comment "Bob's sister") | |
52 | (group "users") | |
53 | ||
54 | ;; Groups fit on one line. | |
55 | (supplementary-groups '("wheel" "audio" "video"))) | |
56 | %base-user-accounts)) | |
57 | ||
58 | ;; The services. | |
59 | (services | |
60 | (cons (service mcron-service-type) %base-services))) | |
61 | EOF | |
62 | ||
63 | cp "$tmpfile" "$tmpfile.bak" | |
64 | ||
65 | initial_hash="$(guix hash "$tmpfile")" | |
66 | ||
67 | guix style -f "$tmpfile" | |
68 | if ! test "$initial_hash" = "$(guix hash "$tmpfile")" | |
69 | then | |
70 | cat "$tmpfile" | |
71 | diff -u "$tmpfile.bak" "$tmpfile" | |
72 | false | |
73 | fi | |
74 | ||
75 | # Introduce random changes and try again. | |
76 | sed -i "$tmpfile" -e's/ +/ /g' | |
77 | ! test "$initial_hash" = "$(guix hash "$tmpfile")" | |
78 | ||
79 | guix style -f "$tmpfile" | |
80 | test "$initial_hash" = "$(guix hash "$tmpfile")" |