about summary refs log tree commit diff
path: root/nixos/tests
diff options
context:
space:
mode:
authorworldofpeace <worldofpeace@protonmail.ch>2020-01-30 18:10:08 -0500
committerGitHub <noreply@github.com>2020-01-30 18:10:08 -0500
commit30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d (patch)
tree09878fce3abcb643f202056a0a436db4f68188ad /nixos/tests
parentee2d307ef73d0ddb27513ac2e743661ab0b48b90 (diff)
parent7651fcfe48c79c3bff7cfcc2063b54abf5d7fc1c (diff)
downloadnixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar.gz
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar.bz2
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar.lz
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar.xz
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.tar.zst
nixlib-30bfbe7e81b6c71f5cd6fd60361e05fac08bdc3d.zip
Merge pull request #76157 from worldofpeace/port-gnome3-test
nixosTests.gnome3: port to python
Diffstat (limited to 'nixos/tests')
-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..486c146d8dc3 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 the wayland server
+          machine.wait_for_file("/run/user/${uid}/wayland-0")
+          # 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"):
+          # 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")
     '';
 })