at 21.11-pre 2.7 kB view raw
1import ./make-test-python.nix ({ pkgs, lib, ...} : { 2 name = "gnome"; 3 meta = with lib; { 4 maintainers = teams.gnome.members; 5 }; 6 7 machine = 8 { ... }: 9 10 { imports = [ ./common/user-account.nix ]; 11 12 services.xserver.enable = true; 13 14 services.xserver.displayManager = { 15 gdm.enable = true; 16 gdm.debug = true; 17 autoLogin = { 18 enable = true; 19 user = "alice"; 20 }; 21 }; 22 23 services.xserver.desktopManager.gnome.enable = true; 24 services.xserver.desktopManager.gnome.debug = true; 25 26 environment.systemPackages = [ 27 (pkgs.makeAutostartItem { 28 name = "org.gnome.Terminal"; 29 package = pkgs.gnome.gnome-terminal; 30 }) 31 ]; 32 33 virtualisation.memorySize = 1024; 34 }; 35 36 testScript = { nodes, ... }: let 37 # Keep line widths somewhat managable 38 user = nodes.machine.config.users.users.alice; 39 uid = toString user.uid; 40 bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus"; 41 gdbus = "${bus} gdbus"; 42 su = command: "su - ${user.name} -c '${command}'"; 43 44 # Call javascript in gnome shell, returns a tuple (success, output), where 45 # `success` is true if the dbus call was successful and output is what the 46 # javascript evaluates to. 47 eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval"; 48 49 # False when startup is done 50 startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp"; 51 52 # Start gnome-terminal 53 gnomeTerminalCommand = su "${bus} gnome-terminal"; 54 55 # Hopefully gnome-terminal's wm class 56 wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class"; 57 in '' 58 with subtest("Login to GNOME with GDM"): 59 # wait for gdm to start 60 machine.wait_for_unit("display-manager.service") 61 # wait for the wayland server 62 machine.wait_for_file("/run/user/${uid}/wayland-0") 63 # wait for alice to be logged in 64 machine.wait_for_unit("default.target", "${user.name}") 65 # check that logging in has given the user ownership of devices 66 assert "alice" in machine.succeed("getfacl -p /dev/snd/timer") 67 68 with subtest("Wait for GNOME Shell"): 69 # correct output should be (true, 'false') 70 machine.wait_until_succeeds( 71 "${startingUp} | grep -q 'true,..false'" 72 ) 73 74 with subtest("Open Gnome Terminal"): 75 # correct output should be (true, '"gnome-terminal-server"') 76 machine.wait_until_succeeds( 77 "${wmClass} | grep -q 'gnome-terminal-server'" 78 ) 79 machine.sleep(20) 80 machine.screenshot("screen") 81 ''; 82})