diff --git a/nixos/tests/all-tests.nix b/nixos/tests/all-tests.nix index a6feb52070fa..7b9333fdd4b3 100644 --- a/nixos/tests/all-tests.nix +++ b/nixos/tests/all-tests.nix @@ -1287,7 +1287,7 @@ in { wstunnel = runTest ./wstunnel.nix; xandikos = handleTest ./xandikos.nix {}; xautolock = handleTest ./xautolock.nix {}; - xfce = handleTest ./xfce.nix {}; + xfce = runTest ./xfce.nix; xfce-wayland = runTest ./xfce-wayland.nix; xmonad = runTest ./xmonad.nix; xmonad-xdg-autostart = runTest ./xmonad-xdg-autostart.nix; diff --git a/nixos/tests/xfce.nix b/nixos/tests/xfce.nix index d22681dd903b..03921491c7b6 100644 --- a/nixos/tests/xfce.nix +++ b/nixos/tests/xfce.nix @@ -1,76 +1,73 @@ -import ./make-test-python.nix ( - { pkgs, ... }: - { - name = "xfce"; +{ + name = "xfce"; - nodes.machine = - { pkgs, ... }: + nodes.machine = + { pkgs, ... }: - { - imports = [ - ./common/user-account.nix - ]; + { + imports = [ + ./common/user-account.nix + ]; - services.xserver.enable = true; - services.xserver.displayManager.lightdm.enable = true; + services.xserver.enable = true; + services.xserver.displayManager.lightdm.enable = true; - services.displayManager.autoLogin = { - enable = true; - user = "alice"; - }; - - services.xserver.desktopManager.xfce.enable = true; - environment.systemPackages = [ pkgs.xfce.xfce4-whiskermenu-plugin ]; + services.displayManager.autoLogin = { + enable = true; + user = "alice"; }; - enableOCR = true; + services.xserver.desktopManager.xfce.enable = true; + environment.systemPackages = [ pkgs.xfce.xfce4-whiskermenu-plugin ]; + }; - testScript = - { nodes, ... }: - let - user = nodes.machine.users.users.alice; - bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"; - in - '' - with subtest("Wait for login"): - machine.wait_for_x() - machine.wait_for_file("${user.home}/.Xauthority") - machine.succeed("xauth merge ${user.home}/.Xauthority") + enableOCR = true; - with subtest("Check that logging in has given the user ownership of devices"): - machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") + testScript = + { nodes, ... }: + let + user = nodes.machine.users.users.alice; + bus = "DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/${toString user.uid}/bus"; + in + '' + with subtest("Wait for login"): + machine.wait_for_x() + machine.wait_for_file("${user.home}/.Xauthority") + machine.succeed("xauth merge ${user.home}/.Xauthority") - with subtest("Check if Xfce components actually start"): - machine.wait_for_window("xfce4-panel") - machine.wait_for_window("Desktop") - for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-screensaver", "xfce4-notifyd", "xfconfd"]: - machine.wait_until_succeeds(f"pgrep -f {i}") + with subtest("Check that logging in has given the user ownership of devices"): + machine.succeed("getfacl -p /dev/snd/timer | grep -q ${user.name}") - with subtest("Open whiskermenu"): - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1 -t string -s whiskermenu -n >&2 &'") - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1/stay-on-focus-out -t bool -s true -n >&2 &'") - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-panel -r >&2 &'") - machine.wait_until_succeeds("journalctl -b --grep 'xfce4-panel: Restarting' -t xsession") - machine.sleep(5) - machine.wait_until_succeeds("pgrep -f libwhiskermenu") - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") - machine.wait_for_text('Mail Reader') - # Close the menu. - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") + with subtest("Check if Xfce components actually start"): + machine.wait_for_window("xfce4-panel") + machine.wait_for_window("Desktop") + for i in ["xfwm4", "xfsettingsd", "xfdesktop", "xfce4-screensaver", "xfce4-notifyd", "xfconfd"]: + machine.wait_until_succeeds(f"pgrep -f {i}") - with subtest("Open Xfce terminal"): - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xfce4-terminal >&2 &'") - machine.wait_for_window("Terminal") + with subtest("Open whiskermenu"): + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1 -t string -s whiskermenu -n >&2 &'") + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfconf-query -c xfce4-panel -p /plugins/plugin-1/stay-on-focus-out -t bool -s true -n >&2 &'") + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-panel -r >&2 &'") + machine.wait_until_succeeds("journalctl -b --grep 'xfce4-panel: Restarting' -t xsession") + machine.sleep(5) + machine.wait_until_succeeds("pgrep -f libwhiskermenu") + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") + machine.wait_for_text('Mail Reader') + # Close the menu. + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 ${bus} xfce4-popup-whiskermenu >&2 &'") - with subtest("Open Thunar"): - machine.succeed("su - ${user.name} -c 'DISPLAY=:0 thunar >&2 &'") - machine.wait_for_window("Thunar") - machine.wait_for_text('(Pictures|Public|Templates|Videos)') + with subtest("Open Xfce terminal"): + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 xfce4-terminal >&2 &'") + machine.wait_for_window("Terminal") - with subtest("Check if any coredumps are found"): - machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") - machine.sleep(10) - machine.screenshot("screen") - ''; - } -) + with subtest("Open Thunar"): + machine.succeed("su - ${user.name} -c 'DISPLAY=:0 thunar >&2 &'") + machine.wait_for_window("Thunar") + machine.wait_for_text('(Pictures|Public|Templates|Videos)') + + with subtest("Check if any coredumps are found"): + machine.succeed("(coredumpctl --json=short 2>&1 || true) | grep 'No coredumps found'") + machine.sleep(10) + machine.screenshot("screen") + ''; +}