From cddc93cc5e3fcb6ae88e816dbed05ae56d7f8c81 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Wed, 2 Sep 2009 14:48:28 +0000 Subject: [PATCH] * Start of a simple GUI test. Right now it just starts the X server, wait a few seconds and makes a screenshot. svn path=/nixos/trunk/; revision=16934 --- lib/test-driver/Machine.pm | 12 +++++++++++ tests/kde4.nix | 44 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+) create mode 100644 tests/kde4.nix diff --git a/lib/test-driver/Machine.pm b/lib/test-driver/Machine.pm index 7b97ff1a65d..590ad21d09b 100644 --- a/lib/test-driver/Machine.pm +++ b/lib/test-driver/Machine.pm @@ -187,6 +187,18 @@ sub waitForJob { } +# Wait until the specified file exists. +sub waitForFile { + my ($self, $fileName) = @_; + while (1) { + my ($status, $out) = $self->execute("test -e $fileName"); + return if $status == 0; + sleep 1; + # !!! need a timeout + } +} + + sub stopJob { my ($self, $jobName) = @_; $self->execute("initctl stop $jobName"); diff --git a/tests/kde4.nix b/tests/kde4.nix new file mode 100644 index 00000000000..99761cbc8ba --- /dev/null +++ b/tests/kde4.nix @@ -0,0 +1,44 @@ +{ nixos ? ./.. +, nixpkgs ? /etc/nixos/nixpkgs +, services ? /etc/nixos/services +, system ? builtins.currentSystem +}: + +with import ../lib/build-vms.nix { inherit nixos nixpkgs services system; }; + +rec { + + nodes = + { client = + { config, pkgs, ... }: + + { services.xserver.enable = true; + services.xserver.desktopManager.default = "kde4"; + services.xserver.desktopManager.kde4.enable = true; + + users.extraUsers = pkgs.lib.singleton + { name = "alice"; + description = "Alice Foobar"; + home = "/home/alice"; + createHome = true; + useDefaultShell = true; + }; + + environment.systemPackages = [ pkgs.xorg.xclock pkgs.xorg.xwd ]; + }; + }; + + vms = buildVirtualNetwork { inherit nodes; }; + + test = runTests vms + '' + startAll; + + $client->waitForFile("/tmp/.X11-unix/X0"); + + sleep 20; + + print STDERR $client->execute("DISPLAY=:0.0 xwd -root > /hostfs/$ENV{out}/screen.xwd"); + ''; + +}