Add a test for multiple outputs
This currently fails. Yay test-driven development!
This commit is contained in:
		
							parent
							
								
									c172d16b00
								
							
						
					
					
						commit
						8f28a3ba25
					
				
					 5 changed files with 54 additions and 1 deletions
				
			
		|  | @ -8,7 +8,7 @@ TESTS = init.sh hash.sh lang.sh add.sh simple.sh dependencies.sh \ | ||||||
|   referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \ |   referrers.sh user-envs.sh logging.sh nix-build.sh misc.sh fixed.sh \ | ||||||
|   gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \ |   gc-runtime.sh install-package.sh check-refs.sh filter-source.sh \ | ||||||
|   remote-store.sh export.sh export-graph.sh negative-caching.sh \ |   remote-store.sh export.sh export-graph.sh negative-caching.sh \ | ||||||
|   binary-patching.sh timeout.sh secure-drv-outputs.sh |   binary-patching.sh timeout.sh secure-drv-outputs.sh multiple-outputs.sh | ||||||
| 
 | 
 | ||||||
| XFAIL_TESTS = | XFAIL_TESTS = | ||||||
| 
 | 
 | ||||||
|  | @ -35,6 +35,8 @@ EXTRA_DIST = $(TESTS) \ | ||||||
|   binary-patching.nix \ |   binary-patching.nix \ | ||||||
|   timeout.nix timeout.builder.sh \ |   timeout.nix timeout.builder.sh \ | ||||||
|   secure-drv-outputs.nix \ |   secure-drv-outputs.nix \ | ||||||
|  |   multiple-outputs.nix \ | ||||||
|  |   multiple-outputs.a.builder.sh multiple-outputs.b.builder.sh \ | ||||||
|   $(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) $(wildcard lang/*.flags) $(wildcard lang/dir*/*.nix) \ |   $(wildcard lang/*.nix) $(wildcard lang/*.exp) $(wildcard lang/*.exp.xml) $(wildcard lang/*.flags) $(wildcard lang/dir*/*.nix) \ | ||||||
|   common.sh.in |   common.sh.in | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
							
								
								
									
										6
									
								
								tests/multiple-outputs.a.builder.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								tests/multiple-outputs.a.builder.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,6 @@ | ||||||
|  | mkdir $first | ||||||
|  | mkdir $second | ||||||
|  | test -z $all | ||||||
|  | 
 | ||||||
|  | echo "second" > $first/file | ||||||
|  | echo "first" > $second/file | ||||||
							
								
								
									
										7
									
								
								tests/multiple-outputs.b.builder.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								tests/multiple-outputs.b.builder.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,7 @@ | ||||||
|  | mkdir $out | ||||||
|  | test "$firstOutput $secondOutput" = "$allOutputs" | ||||||
|  | test "$defaultOutput" = "$firstOutput" | ||||||
|  | test "$(cat $first/file)" = "second" | ||||||
|  | test "$(cat $second/file)" = "first" | ||||||
|  | 
 | ||||||
|  | echo "success" > $out/file | ||||||
							
								
								
									
										23
									
								
								tests/multiple-outputs.nix
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								tests/multiple-outputs.nix
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | ||||||
|  | with import ./config.nix; | ||||||
|  | 
 | ||||||
|  | let | ||||||
|  | 
 | ||||||
|  |   a = mkDerivation { | ||||||
|  |     name = "multiple-outputs-a"; | ||||||
|  |     outputs = [ "first" "second" ]; | ||||||
|  |     builder = ./multiple-outputs.a.builder.sh; | ||||||
|  |     helloString = "Hello, world!"; | ||||||
|  |   }; | ||||||
|  | 
 | ||||||
|  | in | ||||||
|  | 
 | ||||||
|  | assert a.second.helloString == "Hello, world!"; | ||||||
|  | 
 | ||||||
|  | mkDerivation { | ||||||
|  |   defaultOutput = a; | ||||||
|  |   firstOutput = a.first.first; | ||||||
|  |   secondOutput = a.second.first.first.second.second.first.second; | ||||||
|  |   allOutputs = a.all; | ||||||
|  |   name = "multiple-outputs-b"; | ||||||
|  |   builder = ./multiple-outputs.b.builder.sh; | ||||||
|  | } | ||||||
							
								
								
									
										15
									
								
								tests/multiple-outputs.sh
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								tests/multiple-outputs.sh
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,15 @@ | ||||||
|  | source common.sh | ||||||
|  | 
 | ||||||
|  | echo "Testing multiple outputs..." | ||||||
|  | 
 | ||||||
|  | drvPath=$($nixinstantiate multiple-outputs.nix) | ||||||
|  | 
 | ||||||
|  | echo "derivation is $drvPath" | ||||||
|  | 
 | ||||||
|  | outPath=$($nixstore -rvv "$drvPath") | ||||||
|  | 
 | ||||||
|  | echo "output path is $outPath" | ||||||
|  | 
 | ||||||
|  | text=$(cat "$outPath"/file) | ||||||
|  | if test "$text" != "success"; then exit 1; fi | ||||||
|  | 
 | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue