summaryrefslogtreecommitdiffstats
path: root/nixos/tests/gnome3.nix
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2019-11-06 21:50:23 -0500
committerworldofpeace <worldofpeace@protonmail.ch>2020-01-30 17:51:00 -0500
commit9888b30924db834a10bba1136a832229d91b45ec (patch)
tree1015bdf291268785bb58cd73f12441ac2630161c /nixos/tests/gnome3.nix
parent8539d5f48f9de4ba428d2ca6687712db1d9cb2b7 (diff)
nixosTests.gnome3: port to python
Diffstat (limited to 'nixos/tests/gnome3.nix')
-rw-r--r--nixos/tests/gnome3.nix64
1 files changed, 38 insertions, 26 deletions
diff --git a/nixos/tests/gnome3.nix b/nixos/tests/gnome3.nix
index ab363efb6a19..37e4f1680b72 100644
--- a/nixos/tests/gnome3.nix
+++ b/nixos/tests/gnome3.nix
@@ -1,4 +1,4 @@
-import ./make-test.nix ({ pkgs, ...} : {
+import ./make-test-python.nix ({ pkgs, ...} : {
name = "gnome3";
meta = with pkgs.stdenv.lib.maintainers; {
maintainers = pkgs.gnome3.maintainers;
@@ -24,41 +24,53 @@ import ./make-test.nix ({ pkgs, ...} : {
virtualisation.memorySize = 1024;
};
- testScript = let
+ testScript = { nodes, ... }: let
# Keep line widths somewhat managable
- bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus";
+ user = nodes.machine.config.users.users.alice;
+ uid = toString user.uid;
+ bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${uid}/bus";
gdbus = "${bus} gdbus";
+ su = command: "su - ${user.name} -c '${command}'";
+
# Call javascript in gnome shell, returns a tuple (success, output), where
# `success` is true if the dbus call was successful and output is what the
# javascript evaluates to.
eval = "call --session -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval";
- # False when startup is done
- startingUp = "${gdbus} ${eval} Main.layoutManager._startingUp";
- # Hopefully gnome-terminal's wm class
- wmClass = "${gdbus} ${eval} global.display.focus_window.wm_class";
- in ''
- # wait for gdm to start
- $machine->waitForUnit("display-manager.service");
- # wait for alice to be logged in
- $machine->waitForUnit("default.target","alice");
-
- # Check that logging in has given the user ownership of devices.
- $machine->succeed("getfacl -p /dev/snd/timer | grep -q alice");
+ # False when startup is done
+ startingUp = su "${gdbus} ${eval} Main.layoutManager._startingUp";
- # Wait for the wayland server
- $machine->waitForFile("/run/user/1000/wayland-0");
+ # Start gnome-terminal
+ gnomeTerminalCommand = su "${bus} gnome-terminal";
- # Wait for gnome shell, correct output should be "(true, 'false')"
- $machine->waitUntilSucceeds("su - alice -c '${startingUp} | grep -q true,..false'");
+ # Hopefully gnome-terminal's wm class
+ wmClass = su "${gdbus} ${eval} global.display.focus_window.wm_class";
+ in ''
+ with subtest("Login to GNOME with GDM"):
+ # wait for gdm to start
+ machine.wait_for_unit("display-manager.service")
+ # wait for alice to be logged in
+ machine.wait_for_unit("default.target", "${user.name}")
+ # check that logging in has given the user ownership of devices
+ assert "alice" in machine.succeed("getfacl -p /dev/snd/timer")
- # open a terminal
- $machine->succeed("su - alice -c '${bus} gnome-terminal'");
- # and check it's there
- $machine->waitUntilSucceeds("su - alice -c '${wmClass} | grep -q gnome-terminal-server'");
+ with subtest("Wait for GNOME Shell"):
+ # wait for the wayland server
+ machine.wait_for_file("/run/user/${uid}/wayland-0")
+ # correct output should be (true, 'false')
+ machine.wait_until_succeeds(
+ "${startingUp} | grep -q 'true,..false'"
+ )
- # wait to get a nice screenshot
- $machine->sleep(20);
- $machine->screenshot("screen");
+ with subtest("Open Gnome Terminal"):
+ machine.succeed(
+ "${gnomeTerminalCommand}"
+ )
+ # correct output should be (true, '"gnome-terminal-server"')
+ machine.wait_until_succeeds(
+ "${wmClass} | grep -q 'gnome-terminal-server'"
+ )
+ machine.sleep(20)
+ machine.screenshot("screen")
'';
})