Commit | Line | Data |
---|---|---|
dd7c013d CR |
1 | # GNU Guix --- Functional package management for GNU |
2 | # Copyright © 2014 Cyril Roelandt <tipecaml@gmail.com> | |
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 the `guix lint' command-line utility. | |
21 | # | |
22 | ||
23 | guix lint --version | |
24 | ||
25 | module_dir="t-guix-lint-$$" | |
26 | mkdir "$module_dir" | |
27 | trap "rm -rf $module_dir" EXIT | |
28 | ||
29 | ||
30 | cat > "$module_dir/foo.scm"<<EOF | |
31 | (define-module (foo) | |
32 | #:use-module (guix packages) | |
33 | #:use-module (gnu packages base)) | |
34 | ||
35 | (define-public dummy | |
36 | (package (inherit hello) | |
37 | (name "dummy") | |
38 | (version "42") | |
39 | (synopsis "dummy package") | |
791e0126 | 40 | (description "dummy package. Only used for testing purposes."))) |
dd7c013d CR |
41 | EOF |
42 | ||
c8af8572 | 43 | GUIX_PACKAGE_PATH="$module_dir" |
dd7c013d CR |
44 | export GUIX_PACKAGE_PATH |
45 | ||
46 | grep_warning () | |
47 | { | |
48 | res=`echo "$1" | grep -E -c "(synopsis|description) should"` | |
49 | echo $res | |
50 | } | |
51 | ||
52 | # Three issues with the dummy package: | |
53 | # 1) the synopsis starts with the package name; | |
54 | # 2) the synopsis starts with a lower-case letter; | |
791e0126 | 55 | # 3) the description has a single space following the end-of-sentence period. |
dd7c013d | 56 | |
a61cd1d0 | 57 | out=`guix lint -c synopsis,description dummy 2>&1` |
dd7c013d CR |
58 | if [ `grep_warning "$out"` -ne 3 ] |
59 | then false; else true; fi | |
60 | ||
61 | out=`guix lint -c synopsis dummy 2>&1` | |
62 | if [ `grep_warning "$out"` -ne 2 ] | |
63 | then false; else true; fi | |
64 | ||
65 | out=`guix lint -c description dummy 2>&1` | |
66 | if [ `grep_warning "$out"` -ne 1 ] | |
67 | then false; else true; fi | |
68 | ||
69 | out=`guix lint -c description,synopsis dummy 2>&1` | |
70 | if [ `grep_warning "$out"` -ne 3 ] | |
71 | then false; else true; fi | |
72 | ||
73 | if guix lint -c synopsis,invalid-checker dummy 2>&1 | \ | |
74 | grep -q 'invalid-checker: invalid checker' | |
75 | then true; else false; fi | |
8fbf5302 LC |
76 | |
77 | # Make sure specifying multiple packages works. | |
1b846da8 | 78 | guix lint -c inputs-should-be-native dummy dummy@42 dummy |
7282f949 | 79 | |
80 | ||
81 | # Use --load-path instead. | |
82 | unset GUIX_PACKAGE_PATH | |
83 | ||
84 | out=`guix lint -L $module_dir -c synopsis,description dummy 2>&1` | |
85 | if [ `grep_warning "$out"` -ne 3 ] | |
86 | then false; else true; fi | |
87 | ||
88 | # Make sure specifying multiple packages works. | |
89 | guix lint -L $module_dir -c inputs-should-be-native dummy dummy@42 dummy |