gnu: easyrpg-player: Update to 0.6.2.2.
[jackhill/guix/guix.git] / tests / guix-graph.sh
1 # GNU Guix --- Functional package management for GNU
2 # Copyright © 2015, 2016, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
3 # Copyright © 2019 Simon Tournier <zimon.toutoune@gmail.com>
4 #
5 # This file is part of GNU Guix.
6 #
7 # GNU Guix is free software; you can redistribute it and/or modify it
8 # under the terms of the GNU General Public License as published by
9 # the Free Software Foundation; either version 3 of the License, or (at
10 # your option) any later version.
11 #
12 # GNU Guix is distributed in the hope that it will be useful, but
13 # WITHOUT ANY WARRANTY; without even the implied warranty of
14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 # GNU General Public License for more details.
16 #
17 # You should have received a copy of the GNU General Public License
18 # along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
19
20 #
21 # Test the 'guix graph' command-line utility.
22 #
23
24 module_dir="t-guix-graph-$$"
25 mkdir "$module_dir"
26 trap "rm -rf $module_dir" EXIT
27
28 tmpfile1="$module_dir/t-guix-graph1-$$"
29 tmpfile2="$module_dir/t-guix-graph2-$$"
30 trap 'rm -f "$tmpfile1" "$tmpfile2"' EXIT
31
32
33 cat > "$module_dir/foo.scm"<<EOF
34 (define-module (foo)
35 #:use-module (guix packages)
36 #:use-module (gnu packages base))
37
38 (define-public dummy
39 (package (inherit hello)
40 (name "dummy")
41 (version "42")
42 (synopsis "dummy package")
43 (description "dummy package. Only used for testing purposes.")))
44 EOF
45
46
47 guix graph --version
48
49 for package in guile-bootstrap coreutils python
50 do
51 for graph in package bag-emerged bag bag-with-origins
52 do
53 guix graph -t "$graph" "$package" | grep "$package"
54 done
55 done
56
57 guix build guile-bootstrap
58 guix graph -t references guile-bootstrap | grep guile-bootstrap
59
60 guix graph -e '(@ (gnu packages bootstrap) %bootstrap-guile)' \
61 | grep guile-bootstrap
62
63 if guix graph -e +; then false; else true; fi
64
65 # Try passing store file names.
66
67 guix graph -t references guile-bootstrap > "$tmpfile1"
68 guix graph -t references `guix build guile-bootstrap` > "$tmpfile2"
69 cmp "$tmpfile1" "$tmpfile2"
70
71 # XXX: Filter the file names in the graph to work around the fact that we get
72 # a mixture of relative and absolute file names.
73 guix graph -t derivation coreutils > "$tmpfile1"
74 guix graph -t derivation `guix build -d coreutils` > "$tmpfile2"
75 cmp "$tmpfile1" "$tmpfile2"
76
77 # Try package transformation options.
78 guix graph git | grep 'label = "openssl'
79 guix graph git --with-input=openssl=libressl | grep 'label = "libressl'
80 if guix graph git --with-input=openssl=libressl | grep 'label = "openssl'
81 then false; else true; fi
82
83 # Try --load-path
84 guix graph -L $module_dir dummy | grep 'label = "dummy'
85
86 # Displaying shortest paths (or lack thereof).
87 if guix graph --path emacs vim; then false; else true; fi
88
89 path="\
90 emacs
91 gnutls
92 guile
93 libffi"
94 test "`guix graph --path emacs libffi | cut -d '@' -f1`" = "$path"
95
96 # At the derivation level, there's a direct path because libffi is propagated
97 # via gtk+.
98 test "`guix graph --path -t derivation emacs libffi | wc -l`" -ge 2