about summary refs log tree commit diff
path: root/tests/common.sh.in
diff options
context:
space:
mode:
Diffstat (limited to 'tests/common.sh.in')
-rw-r--r--tests/common.sh.in84
1 files changed, 84 insertions, 0 deletions
diff --git a/tests/common.sh.in b/tests/common.sh.in
new file mode 100644
index 000000000000..2bbc39c28a84
--- /dev/null
+++ b/tests/common.sh.in
@@ -0,0 +1,84 @@
+set -e
+
+datadir="@datadir@"
+
+export TEST_ROOT=$(pwd)/test-tmp
+export NIX_STORE_DIR
+if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store 2> /dev/null); then
+    # Maybe the build directory is symlinked.
+    export NIX_IGNORE_SYMLINK_STORE=1
+    NIX_STORE_DIR=$TEST_ROOT/store
+fi
+export NIX_LOCALSTATE_DIR=$TEST_ROOT/var
+export NIX_LOG_DIR=$TEST_ROOT/var/log/nix
+export NIX_STATE_DIR=$TEST_ROOT/var/nix
+export NIX_DB_DIR=$TEST_ROOT/db
+export NIX_CONF_DIR=$TEST_ROOT/etc
+export NIX_MANIFESTS_DIR=$TEST_ROOT/var/nix/manifests
+export _NIX_TEST_SHARED=$TEST_ROOT/shared
+export NIX_REMOTE=$NIX_REMOTE_
+
+export PATH=@bindir@:$PATH
+
+export NIX_BUILD_HOOK=
+export dot=@dot@
+export xmllint="@xmllint@"
+export xmlflags="@xmlflags@"
+export xsltproc="@xsltproc@"
+export SHELL="@bash@"
+
+export version=@PACKAGE_VERSION@
+export system=@system@
+
+readLink() {
+    ls -l "$1" | sed 's/.*->\ //'
+}
+
+clearProfiles() {
+    profiles="$NIX_STATE_DIR"/profiles
+    rm -rf $profiles
+}
+
+clearStore() {
+    echo "clearing store..."
+    chmod -R +w "$NIX_STORE_DIR"
+    rm -rf "$NIX_STORE_DIR"
+    mkdir "$NIX_STORE_DIR"
+    rm -rf "$NIX_DB_DIR"
+    mkdir "$NIX_DB_DIR"
+    nix-store --init
+    clearProfiles
+    rm -f "$NIX_STATE_DIR"/gcroots/auto/*
+    rm -f "$NIX_STATE_DIR"/gcroots/ref
+}
+
+clearManifests() {
+    rm -f $NIX_STATE_DIR/manifests/*
+}
+
+startDaemon() {
+    # Start the daemon, wait for the socket to appear.  !!!
+    # ‘nix-daemon’ should have an option to fork into the background.
+    rm -f $NIX_STATE_DIR/daemon-socket/socket
+    nix-daemon &
+    for ((i = 0; i < 30; i++)); do
+        if [ -e $NIX_STATE_DIR/daemon-socket/socket ]; then break; fi
+        sleep 1
+    done
+    pidDaemon=$!
+    trap "kill -9 $pidDaemon" EXIT
+    export NIX_REMOTE=daemon
+}
+
+killDaemon() {
+    kill -9 $pidDaemon
+    wait $pidDaemon || true
+    trap "" EXIT
+}
+
+fail() {
+    echo "$1"
+    exit 1
+}
+
+set -x