set -e export TEST_ROOT=$(realpath ${TMPDIR:-/tmp}/nix-test) 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_CONF_DIR=$TEST_ROOT/etc export _NIX_TEST_SHARED=$TEST_ROOT/shared if [[ -n $NIX_STORE ]]; then export _NIX_TEST_NO_SANDBOX=1 fi export _NIX_IN_TEST=$TEST_ROOT/shared export _NIX_TEST_NO_LSOF=1 export NIX_REMOTE=$NIX_REMOTE_ unset NIX_PATH export TEST_HOME=$TEST_ROOT/test-home export HOME=$TEST_HOME unset XDG_CACHE_HOME mkdir -p $TEST_HOME export PATH=@bindir@:$PATH coreutils=@coreutils@ export dot=@dot@ export xmllint="@xmllint@" export SHELL="@bash@" export PAGER=cat export HAVE_SODIUM="@HAVE_SODIUM@" export version=@PACKAGE_VERSION@ export system=@system@ cacheDir=$TEST_ROOT/binary-cache 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_STATE_DIR" mkdir "$NIX_STATE_DIR" nix-store --init clearProfiles } clearCache() { rm -rf "$cacheDir" } clearCacheCache() { rm -f $TEST_HOME/.cache/nix/binary-cache* } 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 } if [[ $(uname) == Linux ]] && [[ -L /proc/self/ns/user ]] && unshare --user true; then _canUseSandbox=1 fi canUseSandbox() { if [[ ! $_canUseSandbox ]]; then echo "Sandboxing not supported, skipping this test..." return 1 fi return 0 } fail() { echo "$1" exit 1 } expect() { local expected res expected="$1" shift set +e "$@" res="$?" set -e [[ $res -eq $expected ]] } set -x