1set -e 2 3export TEST_ROOT=$(realpath ${TMPDIR:-/tmp}/nix-test) 4export NIX_STORE_DIR 5if ! NIX_STORE_DIR=$(readlink -f $TEST_ROOT/store 2> /dev/null); then 6 # Maybe the build directory is symlinked. 7 export NIX_IGNORE_SYMLINK_STORE=1 8 NIX_STORE_DIR=$TEST_ROOT/store 9fi 10export NIX_LOCALSTATE_DIR=$TEST_ROOT/var 11export NIX_LOG_DIR=$TEST_ROOT/var/log/nix 12export NIX_STATE_DIR=$TEST_ROOT/var/nix 13export NIX_CONF_DIR=$TEST_ROOT/etc 14export _NIX_TEST_SHARED=$TEST_ROOT/shared 15if [[ -n $NIX_STORE ]]; then 16 export _NIX_TEST_NO_SANDBOX=1 17fi 18export _NIX_IN_TEST=$TEST_ROOT/shared 19export _NIX_TEST_NO_LSOF=1 20export NIX_REMOTE=$NIX_REMOTE_ 21unset NIX_PATH 22export TEST_HOME=$TEST_ROOT/test-home 23export HOME=$TEST_HOME 24unset XDG_CACHE_HOME 25mkdir -p $TEST_HOME 26 27export PATH=@bindir@:$PATH 28coreutils=@coreutils@ 29 30export dot=@dot@ 31export xmllint="@xmllint@" 32export SHELL="@bash@" 33export PAGER=cat 34export HAVE_SODIUM="@HAVE_SODIUM@" 35 36export version=@PACKAGE_VERSION@ 37export system=@system@ 38 39cacheDir=$TEST_ROOT/binary-cache 40 41readLink() { 42 ls -l "$1" | sed 's/.*->\ //' 43} 44 45clearProfiles() { 46 profiles="$NIX_STATE_DIR"/profiles 47 rm -rf $profiles 48} 49 50clearStore() { 51 echo "clearing store..." 52 chmod -R +w "$NIX_STORE_DIR" 53 rm -rf "$NIX_STORE_DIR" 54 mkdir "$NIX_STORE_DIR" 55 rm -rf "$NIX_STATE_DIR" 56 mkdir "$NIX_STATE_DIR" 57 nix-store --init 58 clearProfiles 59} 60 61clearCache() { 62 rm -rf "$cacheDir" 63} 64 65clearCacheCache() { 66 rm -f $TEST_HOME/.cache/nix/binary-cache* 67} 68 69startDaemon() { 70 # Start the daemon, wait for the socket to appear. !!! 71 # ‘nix-daemon’ should have an option to fork into the background. 72 rm -f $NIX_STATE_DIR/daemon-socket/socket 73 nix-daemon & 74 for ((i = 0; i < 30; i++)); do 75 if [ -e $NIX_STATE_DIR/daemon-socket/socket ]; then break; fi 76 sleep 1 77 done 78 pidDaemon=$! 79 trap "kill -9 $pidDaemon" EXIT 80 export NIX_REMOTE=daemon 81} 82 83killDaemon() { 84 kill -9 $pidDaemon 85 wait $pidDaemon || true 86 trap "" EXIT 87} 88 89if [[ $(uname) == Linux ]] && [[ -L /proc/self/ns/user ]] && unshare --user true; then 90 _canUseSandbox=1 91fi 92 93canUseSandbox() { 94 if [[ ! $_canUseSandbox ]]; then 95 echo "Sandboxing not supported, skipping this test..." 96 return 1 97 fi 98 99 return 0 100} 101 102fail() { 103 echo "$1" 104 exit 1 105} 106 107expect() { 108 local expected res 109 expected="$1" 110 shift 111 set +e 112 "$@" 113 res="$?" 114 set -e 115 [[ $res -eq $expected ]] 116} 117 118set -x 119