diff options
-rw-r--r-- | tests/local.mk | 3 | ||||
-rw-r--r-- | tests/run.nix | 17 | ||||
-rw-r--r-- | tests/run.sh | 27 |
3 files changed, 46 insertions, 1 deletions
diff --git a/tests/local.mk b/tests/local.mk index 2b92ec4e5a84..baf74224bb12 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -18,7 +18,8 @@ nix_tests = \ structured-attrs.sh \ fetchGit.sh \ fetchMercurial.sh \ - signing.sh + signing.sh \ + run.sh # parallel.sh install-tests += $(foreach x, $(nix_tests), tests/$(x)) diff --git a/tests/run.nix b/tests/run.nix new file mode 100644 index 000000000000..77dcbd2a9df0 --- /dev/null +++ b/tests/run.nix @@ -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 + ''; + }; +} diff --git a/tests/run.sh b/tests/run.sh new file mode 100644 index 000000000000..1ba181c9cd53 --- /dev/null +++ b/tests/run.sh @@ -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 |