git-subtree-dir: third_party/nix
git-subtree-mainline: cf8cd640c1
git-subtree-split: be66c7a6b24e3c3c6157fd37b86c7203d14acf10
		
	
			
		
			
				
	
	
		
			118 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
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
 |