aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRobert Hensing <roberth@users.noreply.github.com>2023-02-23 18:13:14 +0100
committerGitHub <noreply@github.com>2023-02-23 18:13:14 +0100
commitb5bbf14b872c0accfae2373076fd1a25fae511ce (patch)
tree443b357d8d5e7cc97853a84b3b3cc03f533df9a7 /tests
parent4a921ba43b8ea9a37763cd4bd4bc491928cc55c2 (diff)
parent87da941348e1b345d1be348b091d3ae65ac66bb7 (diff)
Merge pull request #5753 from obsidiansystems/init-twice-works
Clean up daemon handling in the tests
Diffstat (limited to 'tests')
-rw-r--r--tests/common.sh12
-rw-r--r--tests/common/vars-and-functions.sh.in (renamed from tests/common.sh.in)43
-rw-r--r--tests/db-migration.sh1
-rwxr-xr-x[-rw-r--r--]tests/init.sh7
-rw-r--r--tests/local.mk5
5 files changed, 46 insertions, 22 deletions
diff --git a/tests/common.sh b/tests/common.sh
new file mode 100644
index 000000000..68b90a85f
--- /dev/null
+++ b/tests/common.sh
@@ -0,0 +1,12 @@
+set -e
+
+if [[ -z "${COMMON_SH_SOURCED-}" ]]; then
+
+COMMON_SH_SOURCED=1
+
+source "$(readlink -f "$(dirname "${BASH_SOURCE[0]}")")/common/vars-and-functions.sh"
+if [[ -n "${NIX_DAEMON_PACKAGE:-}" ]]; then
+ startDaemon
+fi
+
+fi # COMMON_SH_SOURCED
diff --git a/tests/common.sh.in b/tests/common/vars-and-functions.sh.in
index 939f2fce1..0deef4c1c 100644
--- a/tests/common.sh.in
+++ b/tests/common/vars-and-functions.sh.in
@@ -1,8 +1,8 @@
set -e
-if [[ -z "$COMMON_SH_SOURCED" ]]; then
+if [[ -z "${COMMON_VARS_AND_FUNCTIONS_SH_SOURCED-}" ]]; then
-COMMON_SH_SOURCED=1
+COMMON_VARS_AND_FUNCTIONS_SH_SOURCED=1
export PS4='+(${BASH_SOURCE[0]}:$LINENO) '
@@ -25,7 +25,7 @@ if [[ -n $NIX_STORE ]]; then
fi
export _NIX_IN_TEST=$TEST_ROOT/shared
export _NIX_TEST_NO_LSOF=1
-export NIX_REMOTE=$NIX_REMOTE_
+export NIX_REMOTE=${NIX_REMOTE_-}
unset NIX_PATH
export TEST_HOME=$TEST_ROOT/test-home
export HOME=$TEST_HOME
@@ -90,13 +90,14 @@ clearCacheCache() {
startDaemon() {
# Don’t start the daemon twice, as this would just make it loop indefinitely
- if [[ "$NIX_REMOTE" == daemon ]]; then
- return
+ if [[ "${_NIX_TEST_DAEMON_PID-}" != '' ]]; then
+ return
fi
# Start the daemon, wait for the socket to appear.
rm -f $NIX_DAEMON_SOCKET_PATH
- PATH=$DAEMON_PATH nix-daemon&
- pidDaemon=$!
+ PATH=$DAEMON_PATH nix-daemon &
+ _NIX_TEST_DAEMON_PID=$!
+ export _NIX_TEST_DAEMON_PID
for ((i = 0; i < 300; i++)); do
if [[ -S $NIX_DAEMON_SOCKET_PATH ]]; then
DAEMON_STARTED=1
@@ -108,25 +109,35 @@ startDaemon() {
fail "Didn’t manage to start the daemon"
fi
trap "killDaemon" EXIT
+ # Save for if daemon is killed
+ NIX_REMOTE_OLD=$NIX_REMOTE
export NIX_REMOTE=daemon
}
killDaemon() {
- kill $pidDaemon
+ # Don’t fail trying to stop a non-existant daemon twice
+ if [[ "${_NIX_TEST_DAEMON_PID-}" == '' ]]; then
+ return
+ fi
+ kill $_NIX_TEST_DAEMON_PID
for i in {0..100}; do
- kill -0 $pidDaemon 2> /dev/null || break
+ kill -0 $_NIX_TEST_DAEMON_PID 2> /dev/null || break
sleep 0.1
done
- kill -9 $pidDaemon 2> /dev/null || true
- wait $pidDaemon || true
+ kill -9 $_NIX_TEST_DAEMON_PID 2> /dev/null || true
+ wait $_NIX_TEST_DAEMON_PID || true
+ rm -f $NIX_DAEMON_SOCKET_PATH
+ # Indicate daemon is stopped
+ unset _NIX_TEST_DAEMON_PID
+ # Restore old nix remote
+ NIX_REMOTE=$NIX_REMOTE_OLD
trap "" EXIT
}
restartDaemon() {
- [[ -z "${pidDaemon:-}" ]] && return 0
+ [[ -z "${_NIX_TEST_DAEMON_PID:-}" ]] && return 0
killDaemon
- unset NIX_REMOTE
startDaemon
}
@@ -190,10 +201,6 @@ enableFeatures() {
set -x
-if [[ -n "${NIX_DAEMON_PACKAGE:-}" ]]; then
- startDaemon
-fi
-
onError() {
set +x
echo "$0: test failed at:" >&2
@@ -205,4 +212,4 @@ onError() {
trap onError ERR
-fi # COMMON_SH_SOURCED
+fi # COMMON_VARS_AND_FUNCTIONS_SH_SOURCED
diff --git a/tests/db-migration.sh b/tests/db-migration.sh
index 3f9dc8972..92dd4f3ba 100644
--- a/tests/db-migration.sh
+++ b/tests/db-migration.sh
@@ -9,7 +9,6 @@ fi
source common.sh
killDaemon
-unset NIX_REMOTE
# Fill the db using the older Nix
PATH_WITH_NEW_NIX="$PATH"
diff --git a/tests/init.sh b/tests/init.sh
index 3c6d5917d..fea659516 100644..100755
--- a/tests/init.sh
+++ b/tests/init.sh
@@ -1,8 +1,13 @@
-source common.sh
+set -eu -o pipefail
+
+# Don't start the daemon
+source common/vars-and-functions.sh
test -n "$TEST_ROOT"
if test -d "$TEST_ROOT"; then
chmod -R u+w "$TEST_ROOT"
+ # We would delete any daemon socket, so let's stop the daemon first.
+ killDaemon
rm -rf "$TEST_ROOT"
fi
mkdir "$TEST_ROOT"
diff --git a/tests/local.mk b/tests/local.mk
index b3135fd4d..a4537cf09 100644
--- a/tests/local.mk
+++ b/tests/local.mk
@@ -1,4 +1,5 @@
nix_tests = \
+ init.sh \
flakes/flakes.sh \
flakes/run.sh \
flakes/mercurial.sh \
@@ -128,9 +129,9 @@ endif
install-tests += $(foreach x, $(nix_tests), tests/$(x))
-clean-files += $(d)/common.sh $(d)/config.nix $(d)/ca/config.nix
+clean-files += $(d)/tests/common/vars-and-functions.sh $(d)/config.nix $(d)/ca/config.nix
-test-deps += tests/common.sh tests/config.nix tests/ca/config.nix
+test-deps += tests/common/vars-and-functions.sh tests/config.nix tests/ca/config.nix tests/plugins/libplugintest.$(SO_EXT)
ifeq ($(BUILD_SHARED_LIBS), 1)
test-deps += tests/plugins/libplugintest.$(SO_EXT)