tests: Add simple tests for nix-shell
nix-shell -A, -p and -i are lightly tested.
This commit is contained in:
		
							parent
							
								
									018f884ffd
								
							
						
					
					
						commit
						b501bea25f
					
				
					 4 changed files with 72 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -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
									
								
								tests/nix-shell.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								tests/nix-shell.sh
									
										
									
									
									
										Normal 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
									
								
								tests/shell.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										46
									
								
								tests/shell.nix
									
										
									
									
									
										Normal 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
									
								
								tests/shell.shebang.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										4
									
								
								tests/shell.shebang.sh
									
										
									
									
									
										Executable 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)"
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue