aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2012-12-04 23:16:11 +0100
committerLudovic Courtès <ludo@gnu.org>2012-12-04 23:51:48 +0100
commitd23077dc5ca1517bd6d1600664fe2303b86eb16c (patch)
treead0875d0cc2d9bc415506ff77adec3d699cc5115
parent2606bbcf917c0bc1b2ed10a104acfbbe151a941b (diff)
downloadgnu-guix-d23077dc5ca1517bd6d1600664fe2303b86eb16c.tar
gnu-guix-d23077dc5ca1517bd6d1600664fe2303b86eb16c.tar.gz
daemon: Add test.
* daemon.am (test_root, AM_TESTS_ENVIRONMENT): New variables. (clean-local): New target. * tests/guix-daemon.sh: New file.
-rw-r--r--.gitignore1
-rw-r--r--daemon.am12
-rw-r--r--tests/guix-daemon.sh46
3 files changed, 59 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 89f0ae797c..d39ad6ed96 100644
--- a/.gitignore
+++ b/.gitignore
@@ -60,3 +60,4 @@ stamp-h[0-9]
/libstore.a
/libutil.a
/guix-daemon
+/test-tmp
diff --git a/daemon.am b/daemon.am
index 79e2715c74..48b0871a97 100644
--- a/daemon.am
+++ b/daemon.am
@@ -151,3 +151,15 @@ EXTRA_DIST += \
nix/libstore/schema.sql \
nix/AUTHORS \
nix/COPYING
+
+# Temporary directory used to store the daemon's data.
+test_root = $(abs_top_builddir)/test-tmp
+
+AM_TESTS_ENVIRONMENT += \
+ TEST_ROOT="$(test_root)"
+
+TESTS += \
+ tests/guix-daemon.sh
+
+clean-local:
+ -rm -rf "$(test_root)"
diff --git a/tests/guix-daemon.sh b/tests/guix-daemon.sh
new file mode 100644
index 0000000000..d7926b2376
--- /dev/null
+++ b/tests/guix-daemon.sh
@@ -0,0 +1,46 @@
+# Guix --- Nix package management from Guile. -*- coding: utf-8 -*-
+# Copyright (C) 2012 Ludovic Courtès <ludo@gnu.org>
+#
+# This file is part of Guix.
+#
+# 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.
+#
+# 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 Guix. If not, see <http://www.gnu.org/licenses/>.
+
+#
+# Test the daemon.
+#
+
+set -e
+
+NIX_SUBSTITUTERS="" # don't resort to substituters
+NIX_IGNORE_SYMLINK_STORE=1 # in case the store is a symlink
+NIX_STORE_DIR="$TEST_ROOT/store"
+NIX_LOCALSTATE_DIR="$TEST_ROOT/var"
+NIX_LOG_DIR="$TEST_ROOT/var/log/nix"
+NIX_STATE_DIR="$TEST_ROOT/var/nix"
+NIX_DB_DIR="$TEST_ROOT/db"
+export NIX_SUBSTITUTERS NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \
+ NIX_LOCALSTATE_DIR NIX_LOG_DIR NIX_STATE_DIR NIX_DB_DIR
+
+guix-daemon --version
+guix-build --version
+
+# Launch the daemon without chroot support because is may be
+# unavailable, for instance if we're not running as root.
+guix-daemon --disable-chroot &
+
+daemon_pid=$!
+trap "kill $daemon_pid" EXIT
+
+guix-build -e '(@ (distro packages bootstrap) %bootstrap-guile)'
+guix-build coreutils -n