tests: Add simple tests for nix-shell

nix-shell -A, -p and -i are lightly tested.
This commit is contained in:
Tuomas Tynkkynen
2017-01-03 10:11:09 +02:00
parent 018f884ffd
commit b501bea25f
4 changed files with 72 additions and 1 deletions
+1 -1
View File
@@ -11,7 +11,7 @@ nix_tests = \
multiple-outputs.sh import-derivation.sh fetchurl.sh optimise-store.sh \
binary-cache.sh nix-profile.sh repair.sh dump-db.sh case-hack.sh \
check-reqs.sh pass-as-file.sh tarball.sh restricted.sh \
placeholders.sh
placeholders.sh nix-shell.sh
# parallel.sh
install-tests += $(foreach x, $(nix_tests), tests/$(x))
+21
View File
@@ -0,0 +1,21 @@
source common.sh
clearStore
# Test nix-shell -A
export IMPURE_VAR=foo
output=$(nix-shell --pure shell.nix -A shellDrv --run \
'echo "$IMPURE_VAR - $VAR_FROM_STDENV_SETUP - $VAR_FROM_NIX"')
[ "$output" = " - foo - bar" ]
# Test nix-shell -p
output=$(NIX_PATH=nixpkgs=shell.nix nix-shell --pure -p foo bar --run 'echo "$(foo) $(bar)"')
[ "$output" = "foo bar" ]
# Test nix-shell shebang mode
sed -e "s|@ENV_PROG@|$(type -p env)|" shell.shebang.sh > $TEST_ROOT/shell.shebang.sh
chmod a+rx $TEST_ROOT/shell.shebang.sh
output=$($TEST_ROOT/shell.shebang.sh)
[ "$output" = "foo bar" ]
+46
View File
@@ -0,0 +1,46 @@
{ }:
with import ./config.nix;
rec {
setupSh = builtins.toFile "setup" ''
export VAR_FROM_STDENV_SETUP=foo
for pkg in $buildInputs; do
export PATH=$PATH:$pkg/bin
done
'';
stdenv = mkDerivation {
name = "stdenv";
buildCommand = ''
mkdir -p $out
ln -s ${setupSh} $out/setup
'';
};
shellDrv = mkDerivation {
name = "shellDrv";
builder = "/does/not/exist";
VAR_FROM_NIX = "bar";
inherit stdenv;
};
# Used by nix-shell -p
runCommand = name: args: buildCommand: mkDerivation (args // {
inherit name buildCommand stdenv;
});
foo = runCommand "foo" {} ''
mkdir -p $out/bin
echo 'echo foo' > $out/bin/foo
chmod a+rx $out/bin/foo
'';
bar = runCommand "bar" {} ''
mkdir -p $out/bin
echo 'echo bar' > $out/bin/bar
chmod a+rx $out/bin/bar
'';
bash = shell;
}
+4
View File
@@ -0,0 +1,4 @@
#! @ENV_PROG@ nix-shell
#! nix-shell -I nixpkgs=shell.nix --option use-binary-caches false
#! nix-shell --pure -i bash -p foo bar
echo "$(foo) $(bar)"