lol

virtualbox: Add tests for the VirtualBox Extension Pack.

+34 -5
+34 -5
nixos/tests/virtualbox.nix
··· 293 "--hostonlyadapter2 vboxnet0" 294 ]; 295 296 dhcpScript = pkgs: '' 297 ${pkgs.dhcp}/bin/dhclient \ 298 -lf /run/dhcp.leases \ ··· 323 headless.services.xserver.enable = false; 324 }; 325 326 - mkVBoxTest = name: testScript: makeTest { 327 name = "virtualbox-${name}"; 328 329 machine = { lib, config, ... }: { 330 imports = let 331 mkVMConf = name: val: val.machine // { key = "${name}-config"; }; 332 - vmConfigs = mapAttrsToList mkVMConf vboxVMs; 333 in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs; 334 virtualisation.memorySize = 2048; 335 virtualisation.virtualbox.host.enable = true; ··· 337 users.users.alice.extraGroups = let 338 inherit (config.virtualisation.virtualbox.host) enableHardening; 339 in lib.mkIf enableHardening (lib.singleton "vboxusers"); 340 }; 341 342 testScript = '' ··· 353 return join("\n", grep { $_ !~ /^UUID:/ } split(/\n/, $_[0]))."\n"; 354 } 355 356 - ${concatStrings (mapAttrsToList (_: getAttr "testSubs") vboxVMs)} 357 358 $machine->waitForX; 359 ··· 363 ''; 364 365 meta = with pkgs.stdenv.lib.maintainers; { 366 - maintainers = [ aszlig wkennington ]; 367 }; 368 }; 369 370 - in mapAttrs mkVBoxTest { 371 simple-gui = '' 372 createVM_simple; 373 $machine->succeed(ru "VirtualBox &"); ··· 472 473 destroyVM_test1; 474 destroyVM_test2; 475 ''; 476 }
··· 293 "--hostonlyadapter2 vboxnet0" 294 ]; 295 296 + # The VirtualBox Oracle Extension Pack lets you use USB 3.0 (xHCI). 297 + enableExtensionPackVMFlags = [ 298 + "--usbxhci on" 299 + ]; 300 + 301 dhcpScript = pkgs: '' 302 ${pkgs.dhcp}/bin/dhclient \ 303 -lf /run/dhcp.leases \ ··· 328 headless.services.xserver.enable = false; 329 }; 330 331 + vboxVMsWithExtpack = mapAttrs createVM { 332 + testExtensionPack.vmFlags = enableExtensionPackVMFlags; 333 + }; 334 + 335 + mkVBoxTest = useExtensionPack: vms: name: testScript: makeTest { 336 name = "virtualbox-${name}"; 337 338 machine = { lib, config, ... }: { 339 imports = let 340 mkVMConf = name: val: val.machine // { key = "${name}-config"; }; 341 + vmConfigs = mapAttrsToList mkVMConf vms; 342 in [ ./common/user-account.nix ./common/x11.nix ] ++ vmConfigs; 343 virtualisation.memorySize = 2048; 344 virtualisation.virtualbox.host.enable = true; ··· 346 users.users.alice.extraGroups = let 347 inherit (config.virtualisation.virtualbox.host) enableHardening; 348 in lib.mkIf enableHardening (lib.singleton "vboxusers"); 349 + virtualisation.virtualbox.host.enableExtensionPack = useExtensionPack; 350 + nixpkgs.config.allowUnfree = useExtensionPack; 351 }; 352 353 testScript = '' ··· 364 return join("\n", grep { $_ !~ /^UUID:/ } split(/\n/, $_[0]))."\n"; 365 } 366 367 + ${concatStrings (mapAttrsToList (_: getAttr "testSubs") vms)} 368 369 $machine->waitForX; 370 ··· 374 ''; 375 376 meta = with pkgs.stdenv.lib.maintainers; { 377 + maintainers = [ aszlig wkennington cdepillabout ]; 378 }; 379 }; 380 381 + in mapAttrs (mkVBoxTest false vboxVMs) { 382 simple-gui = '' 383 createVM_simple; 384 $machine->succeed(ru "VirtualBox &"); ··· 483 484 destroyVM_test1; 485 destroyVM_test2; 486 + ''; 487 + } // mapAttrs (mkVBoxTest true vboxVMsWithExtpack) { 488 + enable-extension-pack = '' 489 + createVM_testExtensionPack; 490 + vbm("startvm testExtensionPack"); 491 + waitForStartup_testExtensionPack; 492 + $machine->screenshot("cli_started"); 493 + waitForVMBoot_testExtensionPack; 494 + $machine->screenshot("cli_booted"); 495 + 496 + $machine->nest("Checking for privilege escalation", sub { 497 + $machine->fail("test -e '/root/VirtualBox VMs'"); 498 + $machine->fail("test -e '/root/.config/VirtualBox'"); 499 + $machine->succeed("test -e '/home/alice/VirtualBox VMs'"); 500 + }); 501 + 502 + shutdownVM_testExtensionPack; 503 + destroyVM_testExtensionPack; 504 ''; 505 }