Add tests for "nix run"

This commit is contained in:
Eelco Dolstra 2017-11-20 18:36:36 +01:00
parent f5f29dc2b7
commit 4cde04f476
No known key found for this signature in database
GPG key ID: 8170B4726D7198DE
3 changed files with 46 additions and 1 deletions

View file

@ -18,7 +18,8 @@ nix_tests = \
structured-attrs.sh \ structured-attrs.sh \
fetchGit.sh \ fetchGit.sh \
fetchMercurial.sh \ fetchMercurial.sh \
signing.sh signing.sh \
run.sh
# parallel.sh # parallel.sh
install-tests += $(foreach x, $(nix_tests), tests/$(x)) install-tests += $(foreach x, $(nix_tests), tests/$(x))

17
tests/run.nix Normal file
View file

@ -0,0 +1,17 @@
with import ./config.nix;
{
hello = mkDerivation {
name = "hello";
buildCommand =
''
mkdir -p $out/bin
cat > $out/bin/hello <<EOF
#! ${shell}
who=\$1
echo "Hello \''${who:-World} from $out/bin/hello"
EOF
chmod +x $out/bin/hello
'';
};
}

27
tests/run.sh Normal file
View file

@ -0,0 +1,27 @@
source common.sh
clearStore
clearCache
nix run -f run.nix hello -c hello | grep 'Hello World'
nix run -f run.nix hello -c hello NixOS | grep 'Hello NixOS'
if [[ $(uname) = Linux ]]; then
chmod -R u+w $TEST_ROOT/store0 || true
rm -rf $TEST_ROOT/store0
clearStore
path=$(nix eval --raw -f run.nix hello)
# Note: we need the sandbox paths to ensure that the shell is
# visible in the sandbox.
nix run --sandbox-paths '/nix? /bin? /lib? /usr?' --store $TEST_ROOT/store0 -f run.nix hello -c hello | grep 'Hello World'
path2=$(nix run --sandbox-paths '/nix? /bin? /lib? /usr?' --store $TEST_ROOT/store0 -f run.nix hello -c $SHELL -c 'type -p hello')
[[ $path/bin/hello = $path2 ]]
[[ -e $TEST_ROOT/store0/nix/store/$(basename $path)/bin/hello ]]
fi