guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/05: tests: Add guix-home.sh.


From: guix-commits
Subject: 04/05: tests: Add guix-home.sh.
Date: Sat, 9 Oct 2021 15:23:20 -0400 (EDT)

wigust pushed a commit to branch master
in repository guix.

commit 5e68f7a7b338951dcc227799a51c59d9ac77c696
Author: Oleg Pykhalov <go.wigust@gmail.com>
AuthorDate: Sat Oct 9 14:52:13 2021 +0300

    tests: Add guix-home.sh.
    
    * tests/guix-home.sh: New file.
    * Makefile.am (SH_TESTS): Add this.
---
 Makefile.am        |   1 +
 tests/guix-home.sh | 106 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 107 insertions(+)

diff --git a/Makefile.am b/Makefile.am
index f2b6c8e..635147e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -547,6 +547,7 @@ SH_TESTS =                                  \
   tests/guix-package-aliases.sh                        \
   tests/guix-package-net.sh                    \
   tests/guix-system.sh                         \
+  tests/guix-home.sh                           \
   tests/guix-archive.sh                                \
   tests/guix-authenticate.sh                   \
   tests/guix-environment.sh                    \
diff --git a/tests/guix-home.sh b/tests/guix-home.sh
new file mode 100644
index 0000000..0b5deab
--- /dev/null
+++ b/tests/guix-home.sh
@@ -0,0 +1,106 @@
+
+# GNU Guix --- Functional package management for GNU
+# Copyright © 2021 Andrew Tropin <andrew@trop.in>
+# Copyright © 2021 Oleg Pykhalov <go.wigust@gmail.com>
+#
+# 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 the 'guix home' using the external store, if any.
+#
+
+set -e
+
+guix home --version
+
+NIX_STORE_DIR="$(guile -c '(use-modules (guix config))(display %storedir)')"
+localstatedir="$(guile -c '(use-modules (guix config))(display 
%localstatedir)')"
+GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
+export NIX_STORE_DIR GUIX_DAEMON_SOCKET
+
+# Run tests only when a "real" daemon is available.
+if ! guile -c '(use-modules (guix)) (exit (false-if-exception 
(open-connection)))'
+then
+    exit 77
+fi
+
+STORE_PARENT="$(dirname "$NIX_STORE_DIR")"
+export STORE_PARENT
+if test "$STORE_PARENT" = "/"; then exit 77; fi
+
+test_directory="$(mktemp -d)"
+trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
+
+(
+    cd "$test_directory" || exit 77
+
+    HOME="$test_directory"
+    export HOME
+
+    #
+    # Test 'guix home reconfigure'.
+    #
+
+    cat > "home.scm" <<'EOF'
+(use-modules (guix gexp)
+             (gnu home)
+             (gnu home services)
+             (gnu services))
+
+(home-environment
+ (services
+  (list
+   (simple-service 'test-config
+                   home-files-service-type
+                   (list `("config/test.conf"
+                           ,(plain-file
+                             "tmp-file.txt"
+                             "the content of ~/.config/test.conf")))))))
+EOF
+
+    guix home reconfigure "${test_directory}/home.scm"
+    test -d "${HOME}/.guix-home"
+    grep -q "the content of ~/.config/test.conf" "${HOME}/.config/test.conf"
+
+    #
+    # Test 'guix home describe'.
+    #
+
+    configuration_file()
+    {
+        guix home describe                      \
+            | grep 'configuration file:'        \
+            | cut -d : -f 2                     \
+            | xargs echo
+    }
+    test "$(cat "$(configuration_file)")" == "$(cat home.scm)"
+
+    canonical_file_name()
+    {
+        guix home describe                      \
+            | grep 'canonical file name:'       \
+            | cut -d : -f 2                     \
+            | xargs echo
+    }
+    test "$(canonical_file_name)" == "$(readlink "${HOME}/.guix-home")"
+
+    #
+    # Test 'guix home search'.
+    #
+
+    guix home search mcron | grep "^name: home-mcron"
+    guix home search job manager | grep "^name: home-mcron"
+)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]