| 
									
										
										
										
											2017-11-18 23:33:24 +01:00
										 |  |  | # Test configuration switching. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ./make-test.nix ({ pkgs, ...} : { | 
					
						
							|  |  |  |   name = "switch-test"; | 
					
						
							|  |  |  |   meta = with pkgs.stdenv.lib.maintainers; { | 
					
						
							|  |  |  |     maintainers = [ gleber ]; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   nodes = { | 
					
						
							| 
									
										
										
										
											2018-07-20 20:56:59 +00:00
										 |  |  |     machine = { ... }: { | 
					
						
							| 
									
										
										
										
											2017-11-18 23:33:24 +01:00
										 |  |  |       users.mutableUsers = false; | 
					
						
							|  |  |  |     }; | 
					
						
							| 
									
										
										
										
											2018-07-20 20:56:59 +00:00
										 |  |  |     other = { ... }: { | 
					
						
							| 
									
										
										
										
											2017-11-18 23:33:24 +01:00
										 |  |  |       users.mutableUsers = true; | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   testScript = {nodes, ...}: let | 
					
						
							|  |  |  |     originalSystem = nodes.machine.config.system.build.toplevel; | 
					
						
							|  |  |  |     otherSystem = nodes.other.config.system.build.toplevel; | 
					
						
							| 
									
										
										
										
											2019-02-14 16:55:16 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  |     # Ensures failures pass through using pipefail, otherwise failing to | 
					
						
							|  |  |  |     # switch-to-configuration is hidden by the success of `tee`. | 
					
						
							|  |  |  |     stderrRunner = pkgs.writeScript "stderr-runner" ''
 | 
					
						
							|  |  |  |       #! ${pkgs.stdenv.shell} | 
					
						
							|  |  |  |       set -e | 
					
						
							|  |  |  |       set -o pipefail | 
					
						
							|  |  |  |       exec env -i "$@" | tee /dev/stderr | 
					
						
							|  |  |  |     '';
 | 
					
						
							| 
									
										
										
										
											2017-11-18 23:33:24 +01:00
										 |  |  |   in ''
 | 
					
						
							| 
									
										
										
										
											2019-02-14 16:55:16 -05:00
										 |  |  |     $machine->succeed("${stderrRunner} ${originalSystem}/bin/switch-to-configuration test"); | 
					
						
							|  |  |  |     $machine->succeed("${stderrRunner} ${otherSystem}/bin/switch-to-configuration test"); | 
					
						
							| 
									
										
										
										
											2017-11-18 23:33:24 +01:00
										 |  |  |   '';
 | 
					
						
							|  |  |  | }) |