From caa1e9a962d90188e9588caa99c993821701e21c Mon Sep 17 00:00:00 2001 From: Michael Stapelberg Date: Fri, 16 Apr 2010 15:03:27 +0200 Subject: [PATCH] move common functions to i3test, export them, bail out if workspace creation fails --- testcases/t/17-workspace.t | 24 ++++++++---------------- testcases/t/18-openkill.t | 26 +++----------------------- testcases/t/lib/i3test.pm | 36 ++++++++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 39 deletions(-) diff --git a/testcases/t/17-workspace.t b/testcases/t/17-workspace.t index 1c0c7e28..227b754d 100644 --- a/testcases/t/17-workspace.t +++ b/testcases/t/17-workspace.t @@ -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"); diff --git a/testcases/t/18-openkill.t b/testcases/t/18-openkill.t index 2763d3c2..e13ca873 100644 --- a/testcases/t/18-openkill.t +++ b/testcases/t/18-openkill.t @@ -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; diff --git a/testcases/t/lib/i3test.pm b/testcases/t/lib/i3test.pm index 540551b0..e98685f7 100644 --- a/testcases/t/lib/i3test.pm +++ b/testcases/t/lib/i3test.pm @@ -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 -- 2.39.5