]> git.sur5r.net Git - i3/i3/commitdiff
move common functions to i3test, export them, bail out if workspace creation fails
authorMichael Stapelberg <michael@stapelberg.de>
Fri, 16 Apr 2010 13:03:27 +0000 (15:03 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Fri, 16 Apr 2010 13:03:27 +0000 (15:03 +0200)
testcases/t/17-workspace.t
testcases/t/18-openkill.t
testcases/t/lib/i3test.pm

index 1c0c7e285beef134a488690cbc8dd6f57f75da31..227b754d5d29255ac75e863962d95a9513961863 100644 (file)
@@ -5,37 +5,29 @@
 # (necessary for further tests)
 #
 use Test::More tests => 2;
-use List::MoreUtils qw(all none);
-use Data::Dumper;
+use FindBin;
+use lib "$FindBin::Bin/lib";
+use i3test;
 use AnyEvent::I3;
-use File::Temp qw(tmpnam);
 use v5.10;
 
 my $i3 = i3("/tmp/nestedcons");
 
-sub get_workspace_names {
-    my $tree = $i3->get_workspaces->recv;
-    my @workspaces = map { @{$_->{nodes}} } @{$tree->{nodes}};
-    [ map { $_->{name} } @workspaces ]
-}
-
 sub workspace_exists {
     my ($name) = @_;
     ($name ~~ @{get_workspace_names()})
 }
 
-sub get_unused_workspace {
-    my @names = get_workspace_names();
-    my $tmp;
-    do { $tmp = tmpnam() } while ($tmp ~~ @names);
-    $tmp
-}
-
 my $tmp = get_unused_workspace();
 diag("Temporary workspace name: $tmp\n");
 
 $i3->command("workspace $tmp")->recv;
 ok(workspace_exists($tmp), 'workspace created');
+# if the workspace could not be created, we cannot run any other test
+# (every test starts by creating its workspace)
+if (!workspace_exists($tmp)) {
+    BAIL_OUT('Cannot create workspace, further tests make no sense');
+}
 
 my $otmp = get_unused_workspace();
 diag("Other temporary workspace name: $otmp\n");
index 2763d3c200f240395c32c6494a2f871756d7a6e2..e13ca873818ee93d20149e3942d26660fbfd2629 100644 (file)
@@ -4,34 +4,14 @@
 # Tests whether opening an empty container and killing it again works
 #
 use Test::More tests => 3;
-use Data::Dumper;
+use FindBin;
+use lib "$FindBin::Bin/lib";
+use i3test;
 use AnyEvent::I3;
-use File::Temp qw(tmpnam);
 use v5.10;
 
 my $i3 = i3("/tmp/nestedcons");
 
-sub get_workspace_names {
-    my $tree = $i3->get_workspaces->recv;
-    my @workspaces = map { @{$_->{nodes}} } @{$tree->{nodes}};
-    [ map { $_->{name} } @workspaces ]
-}
-
-sub get_unused_workspace {
-    my @names = get_workspace_names();
-    my $tmp;
-    do { $tmp = tmpnam() } while ($tmp ~~ @names);
-    $tmp
-}
-
-sub get_ws_content {
-    my ($name) = @_;
-    my $tree = $i3->get_workspaces->recv;
-    my @ws = map { @{$_->{nodes}} } @{$tree->{nodes}};
-    my @cons = map { $_->{nodes} } grep { $_->{name} eq $name } @ws;
-    return $cons[0];
-}
-
 my $tmp = get_unused_workspace();
 $i3->command("workspace $tmp")->recv;
 
index 540551b044526c102ef5c37076dcca0edcfc8852..e98685f710fcc00fe508f17497bb652eaa278c83 100644 (file)
@@ -1,9 +1,15 @@
 package i3test;
 # vim:ts=4:sw=4:expandtab
 
+use File::Temp qw(tmpnam);
 use X11::XCB::Rect;
 use X11::XCB::Window;
 use X11::XCB qw(:all);
+use AnyEvent::I3;
+use Exporter qw(import);
+use base 'Exporter';
+
+our @EXPORT = qw(get_workspace_names get_unused_workspace get_ws_content);
 
 BEGIN {
     my $window_count = 0;
@@ -58,4 +64,34 @@ sub recv_ipc_command {
     decode_json($buffer)
 }
 
+sub get_workspace_names {
+    my $i3 = i3("/tmp/nestedcons");
+    # TODO: use correct command as soon as AnyEvent::i3 is updated
+    my $tree = $i3->get_workspaces->recv;
+    my @workspaces = map { @{$_->{nodes}} } @{$tree->{nodes}};
+    [ map { $_->{name} } @workspaces ]
+}
+
+sub get_unused_workspace {
+    my @names = get_workspace_names();
+    my $tmp;
+    do { $tmp = tmpnam() } while ($tmp ~~ @names);
+    $tmp
+}
+
+#
+# returns the content (== tree, starting from the node of a workspace)
+# of a workspace
+#
+sub get_ws_content {
+    my ($name) = @_;
+    my $i3 = i3("/tmp/nestedcons");
+    my $tree = $i3->get_workspaces->recv;
+    my @ws = map { @{$_->{nodes}} } @{$tree->{nodes}};
+    my @cons = map { $_->{nodes} } grep { $_->{name} eq $name } @ws;
+    # as there can only be one workspace with this name, we can safely
+    # return the first entry
+    return $cons[0];
+}
+
 1