diff --git a/.gitignore b/.gitignore index cad6ad9a..b641592b 100644 --- a/.gitignore +++ b/.gitignore @@ -7,6 +7,7 @@ loglevels.tmp *.gcno testcases/testsuite-* testcases/latest +testcases/Makefile *.output *.tab.* *.yy.c diff --git a/testcases/Makefile.PL b/testcases/Makefile.PL index fd7b5e0d..eb0f73a4 100755 --- a/testcases/Makefile.PL +++ b/testcases/Makefile.PL @@ -10,10 +10,7 @@ WriteMakefile( 'AnyEvent' => 0, 'AnyEvent::I3' => '0.09', 'X11::XCB' => '0.03', - 'Test::Most' => 0, - 'Test::Deep' => 0, - 'EV' => 0, - 'Inline' => 0, + 'Inline' => 0, }, PM => {}, # do not install any files from this directory clean => { diff --git a/testcases/lib/i3test.pm b/testcases/lib/i3test.pm index 1ddaa52b..0f2f2e07 100644 --- a/testcases/lib/i3test.pm +++ b/testcases/lib/i3test.pm @@ -8,7 +8,6 @@ use X11::XCB::Rect; use X11::XCB::Window; use X11::XCB qw(:all); use AnyEvent::I3; -use EV; use List::Util qw(first); use Time::HiRes qw(sleep); use Cwd qw(abs_path); @@ -61,15 +60,14 @@ sub import { my $class = shift; my $pkg = caller; - my $test_most_args = @_ ? "qw(@_)" : ""; + my $test_more_args = @_ ? "qw(@_)" : ""; local $@; eval << "__"; package $pkg; -use Test::Most $test_most_args; +use Test::More $test_more_args; use Data::Dumper; use AnyEvent::I3; use Time::HiRes qw(sleep); -use Test::Deep qw(eq_deeply cmp_deeply); __ $tester->bail_out("$@") if $@; feature->import(":5.10"); @@ -95,11 +93,12 @@ sub wait_for_event { my $cv = AE::cv; - my $prep = EV::prepare sub { - $x->flush; - }; + $x->flush; - my $check = EV::check sub { + # unfortunately, there is no constant for this + my $ae_read = 0; + + my $guard = AE::io $x->get_file_descriptor, $ae_read, sub { while (defined(my $event = $x->poll_for_event)) { if ($cb->($event)) { $cv->send(1); @@ -108,15 +107,12 @@ sub wait_for_event { } }; - my $watcher = EV::io $x->get_file_descriptor, EV::READ, sub { - # do nothing, we only need this watcher so that EV picks up the events - }; - # Trigger timeout after $timeout seconds (can be fractional) my $t = AE::timer $timeout, 0, sub { warn "timeout ($timeout secs)"; $cv->send(0) }; my $result = $cv->recv; undef $t; + undef $guard; return $result; } @@ -139,7 +135,7 @@ sub wait_for_unmap { wait_for_event 2, sub { $_[0]->{response_type} == UNMAP_NOTIFY # and $_[0]->{window} == $id }; - sync_with_i3($x); + sync_with_i3(); } # @@ -173,15 +169,13 @@ sub open_window { $window->map; wait_for_map($window); - # We sync with i3 here to make sure $x->input_focus is updated. - sync_with_i3($x); return $window; } # Thin wrapper around open_window which sets window_type to # _NET_WM_WINDOW_TYPE_UTILITY to make the window floating. sub open_floating_window { - my ($x, $args) = @_; + my ($args) = @_; my %args = ($args ? %$args : ()); $args{window_type} = $x->atom(name => '_NET_WM_WINDOW_TYPE_UTILITY'); @@ -325,8 +319,6 @@ sub focused_ws { # See also docs/testsuite for a long explanation # sub sync_with_i3 { - my ($x) = @_; - # Since we need a (mapped) window for receiving a ClientMessage, we create # one on the first call of sync_with_i3. It will be re-used in all # subsequent calls. @@ -470,7 +462,7 @@ use parent 'X11::XCB::Connection'; sub input_focus { my $self = shift; - i3test::sync_with_i3($self); + i3test::sync_with_i3(); return $self->SUPER::input_focus(@_); } diff --git a/testcases/t/001-tile.t b/testcases/t/001-tile.t index 066bc640..460cbd90 100644 --- a/testcases/t/001-tile.t +++ b/testcases/t/001-tile.t @@ -21,6 +21,6 @@ $window->map; sleep(0.25); my $new_rect = $window->rect; -ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned"); +ok(!eq_hash($new_rect, $original_rect), "Window got repositioned"); done_testing; diff --git a/testcases/t/002-i3-sync.t b/testcases/t/002-i3-sync.t index 75871f9d..1377ee94 100644 --- a/testcases/t/002-i3-sync.t +++ b/testcases/t/002-i3-sync.t @@ -5,7 +5,7 @@ # use i3test; -my $result = sync_with_i3($x); +my $result = sync_with_i3; ok($result, 'syncing was successful'); done_testing; diff --git a/testcases/t/003-ipc.t b/testcases/t/003-ipc.t index 477b7163..34359f20 100644 --- a/testcases/t/003-ipc.t +++ b/testcases/t/003-ipc.t @@ -17,7 +17,7 @@ my $focus = $x->input_focus; # Switch to another workspace fresh_workspace; -sync_with_i3($x); +sync_with_i3; my $new_focus = $x->input_focus; isnt($focus, $new_focus, "Focus changed"); diff --git a/testcases/t/005-floating.t b/testcases/t/005-floating.t index ac6623f2..6de3ea80 100644 --- a/testcases/t/005-floating.t +++ b/testcases/t/005-floating.t @@ -76,7 +76,7 @@ $window->map; wait_for_map $window; cmd 'floating enable'; -sync_with_i3($x); +sync_with_i3; ($absolute, $top) = $window->rect; diff --git a/testcases/t/100-fullscreen.t b/testcases/t/100-fullscreen.t index f5fb6693..4a8f87a7 100644 --- a/testcases/t/100-fullscreen.t +++ b/testcases/t/100-fullscreen.t @@ -51,15 +51,15 @@ wait_for_map $window; cmd 'open'; my $new_rect = $window->rect; -ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned"); +ok(!eq_hash($new_rect, $original_rect), "Window got repositioned"); $original_rect = $new_rect; $window->fullscreen(1); -sync_with_i3($x); +sync_with_i3; $new_rect = $window->rect; -ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned after fullscreen"); +ok(!eq_hash($new_rect, $original_rect), "Window got repositioned after fullscreen"); my $orect = $output->{rect}; my $wrect = $new_rect; @@ -98,7 +98,7 @@ $window->map; wait_for_map $window; $new_rect = $window->rect; -ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned after fullscreen"); +ok(!eq_hash($new_rect, $original_rect), "Window got repositioned after fullscreen"); ok($window->mapped, "Window is mapped after opening it in fullscreen mode"); $wrect = $new_rect; @@ -123,20 +123,20 @@ my $swindow = $x->root->create_child( $swindow->map; -sync_with_i3($x); +sync_with_i3; ok(!$swindow->mapped, 'window not mapped while fullscreen window active'); $new_rect = $swindow->rect; -ok(!eq_deeply($new_rect, $original_rect), "Window got repositioned"); +ok(!eq_hash($new_rect, $original_rect), "Window got repositioned"); $swindow->fullscreen(1); -sync_with_i3($x); +sync_with_i3; is(fullscreen_windows(), 1, 'amount of fullscreen windows'); $window->fullscreen(0); -sync_with_i3($x); +sync_with_i3; is(fullscreen_windows(), 0, 'amount of fullscreen windows'); ok($swindow->mapped, 'window mapped after other fullscreen ended'); @@ -148,7 +148,7 @@ ok($swindow->mapped, 'window mapped after other fullscreen ended'); ########################################################################### $swindow->fullscreen(0); -sync_with_i3($x); +sync_with_i3; is(fullscreen_windows(), 0, 'amount of fullscreen windows after disabling'); diff --git a/testcases/t/101-focus.t b/testcases/t/101-focus.t index 545b9dd0..8a795c46 100644 --- a/testcases/t/101-focus.t +++ b/testcases/t/101-focus.t @@ -25,7 +25,6 @@ sub focus_after { my $msg = shift; cmd $msg; - sync_with_i3 $x; return $x->input_focus; } diff --git a/testcases/t/102-dock.t b/testcases/t/102-dock.t index ce33f052..20acf49e 100644 --- a/testcases/t/102-dock.t +++ b/testcases/t/102-dock.t @@ -52,7 +52,7 @@ is($docknode->{rect}->{height}, 30, 'dock node has unchanged height'); $window->rect(X11::XCB::Rect->new(x => 0, y => 0, width => 50, height => 40)); -sync_with_i3 $x; +sync_with_i3; @docked = get_dock_clients('top'); is(@docked, 1, 'one dock client found'); diff --git a/testcases/t/104-focus-stack.t b/testcases/t/104-focus-stack.t index f72cd75f..3b3fe74d 100644 --- a/testcases/t/104-focus-stack.t +++ b/testcases/t/104-focus-stack.t @@ -15,7 +15,7 @@ my $tiled_right = open_window; my $focus = $x->input_focus; # Create a floating window which is smaller than the minimum enforced size of i3 -my $window = open_floating_window($x); +my $window = open_floating_window; is($x->input_focus, $window->id, 'floating window focused'); diff --git a/testcases/t/111-goto.t b/testcases/t/111-goto.t index 5f4d7762..dd60d9cf 100644 --- a/testcases/t/111-goto.t +++ b/testcases/t/111-goto.t @@ -24,7 +24,6 @@ sub focus_after { my $msg = shift; cmd $msg; - sync_with_i3($x); return $x->input_focus; } diff --git a/testcases/t/112-floating-resize.t b/testcases/t/112-floating-resize.t index a428df4f..ff3a1c04 100644 --- a/testcases/t/112-floating-resize.t +++ b/testcases/t/112-floating-resize.t @@ -9,13 +9,13 @@ fresh_workspace; # Create a floating window and see if resizing works ##################################################################### -my $window = open_floating_window($x); +my $window = open_floating_window; # See if configurerequests cause window movements (they should not) my ($a, $t) = $window->rect; $window->rect(X11::XCB::Rect->new(x => $a->x, y => $a->y, width => $a->width, height => $a->height)); -sync_with_i3($x); +sync_with_i3; my ($na, $nt) = $window->rect; is_deeply($na, $a, 'Rects are equal after configurerequest'); @@ -23,7 +23,7 @@ is_deeply($na, $a, 'Rects are equal after configurerequest'); sub test_resize { $window->rect(X11::XCB::Rect->new(x => 0, y => 0, width => 100, height => 100)); - sync_with_i3($x); + sync_with_i3; my ($absolute, $top) = $window->rect; @@ -34,7 +34,7 @@ sub test_resize { $window->rect(X11::XCB::Rect->new(x => 0, y => 0, width => 300, height => 500)); - sync_with_i3($x); + sync_with_i3; ($absolute, $top) = $window->rect; diff --git a/testcases/t/113-urgent.t b/testcases/t/113-urgent.t index fcfd11e7..5ee61a4d 100644 --- a/testcases/t/113-urgent.t +++ b/testcases/t/113-urgent.t @@ -24,7 +24,7 @@ is(@urgent, 0, 'no window got the urgent flag'); # Add the urgency hint, switch to a different workspace and back again ##################################################################### $top->add_hint('urgency'); -sync_with_i3($x); +sync_with_i3; my @content = @{get_ws_content($tmp)}; @urgent = grep { $_->{urgent} } @content; @@ -41,7 +41,7 @@ cmd '[id="' . $top->id . '"] focus'; is(@urgent, 0, 'no window got the urgent flag after focusing'); $top->add_hint('urgency'); -sync_with_i3($x); +sync_with_i3; @urgent = grep { $_->{urgent} } @{get_ws_content($tmp)}; is(@urgent, 0, 'no window got the urgent flag after re-setting urgency hint'); @@ -55,7 +55,7 @@ ok(!$ws->{urgent}, 'urgent flag not set on workspace'); my $otmp = fresh_workspace; $top->add_hint('urgency'); -sync_with_i3($x); +sync_with_i3; $ws = get_ws($tmp); ok($ws->{urgent}, 'urgent flag set on workspace'); diff --git a/testcases/t/114-client-leader.t b/testcases/t/114-client-leader.t index 3b0bddc0..497bad9e 100644 --- a/testcases/t/114-client-leader.t +++ b/testcases/t/114-client-leader.t @@ -18,7 +18,7 @@ my $right = open_window({ name => 'Right' }); my ($abs, $rgeom) = $right->rect; -my $child = open_floating_window($x, { +my $child = open_floating_window({ dont_map => 1, name => 'Child window', }); @@ -31,7 +31,7 @@ my $cgeom; ($abs, $cgeom) = $child->rect; cmp_ok($cgeom->x, '>=', $rgeom->x, 'Child X >= right container X'); -my $child2 = open_floating_window($x, { +my $child2 = open_floating_window({ dont_map => 1, name => 'Child window 2', }); diff --git a/testcases/t/116-nestedcons.t b/testcases/t/116-nestedcons.t index 4b3958a1..f6d4848d 100644 --- a/testcases/t/116-nestedcons.t +++ b/testcases/t/116-nestedcons.t @@ -29,28 +29,44 @@ my $i3 = i3(get_socket_path()); my $tree = $i3->get_tree->recv; +# a unique value +my $ignore = \""; + my $expected = { fullscreen_mode => 0, - nodes => ignore(), + nodes => $ignore, window => undef, name => 'root', - orientation => ignore(), + orientation => $ignore, type => 0, - id => ignore(), - rect => ignore(), - window_rect => ignore(), - geometry => ignore(), - swallows => ignore(), + id => $ignore, + rect => $ignore, + window_rect => $ignore, + geometry => $ignore, + swallows => $ignore, percent => undef, layout => 'default', - focus => ignore(), + focus => $ignore, focused => JSON::XS::false, urgent => JSON::XS::false, border => 'normal', - 'floating_nodes' => ignore(), + 'floating_nodes' => $ignore, }; -cmp_deeply($tree, $expected, 'root node OK'); +# a shallow copy is sufficient, since we only ignore values at the root +my $tree_copy = { %$tree }; + +for (keys %$expected) { + my $val = $expected->{$_}; + + # delete unwanted keys, so we can use is_deeply() + if (ref($val) eq 'SCALAR' and $val == $ignore) { + delete $tree_copy->{$_}; + delete $expected->{$_}; + } +} + +is_deeply($tree_copy, $expected, 'root node OK'); my @nodes = @{$tree->{nodes}}; diff --git a/testcases/t/119-match.t b/testcases/t/119-match.t index e2e553f4..2124c02e 100644 --- a/testcases/t/119-match.t +++ b/testcases/t/119-match.t @@ -101,7 +101,7 @@ ok(@{$content} == 2, 'two windows opened'); cmd '[class="special" title="left"] kill'; -sync_with_i3($x); +sync_with_i3; $content = get_ws_content($tmp); is(@{$content}, 1, 'one window still there'); diff --git a/testcases/t/124-move.t b/testcases/t/124-move.t index 9d7a235f..a078a9e8 100644 --- a/testcases/t/124-move.t +++ b/testcases/t/124-move.t @@ -136,7 +136,7 @@ is(@{$content}, 1, 'only one nodes on this workspace'); ###################################################################### $tmp = fresh_workspace; -my $floatwin = open_floating_window($x); +my $floatwin = open_floating_window; my ($absolute_before, $top_before) = $floatwin->rect; cmd 'move left'; diff --git a/testcases/t/133-size-hints.t b/testcases/t/133-size-hints.t index 34b5e4a5..d3736e3c 100644 --- a/testcases/t/133-size-hints.t +++ b/testcases/t/133-size-hints.t @@ -23,7 +23,7 @@ wait_for_map $win; $win->hints->aspect($aspect); $x->flush; -sync_with_i3($x); +sync_with_i3; my $rect = $win->rect; my $ar = $rect->width / $rect->height; diff --git a/testcases/t/135-floating-focus.t b/testcases/t/135-floating-focus.t index 37d141b1..c7218130 100644 --- a/testcases/t/135-floating-focus.t +++ b/testcases/t/135-floating-focus.t @@ -36,8 +36,6 @@ cmd 'floating enable'; cmd '[id="' . $second->id . '"] focus'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second con focused'); cmd 'floating enable'; @@ -67,8 +65,6 @@ cmd 'floating enable'; cmd '[id="' . $second->id . '"] focus'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second con focused'); cmd 'floating enable'; @@ -103,13 +99,11 @@ cmd 'floating enable'; cmd '[id="' . $second->id . '"] focus'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second con focused'); cmd 'floating enable'; -sync_with_i3($x); +sync_with_i3; # now kill the second one. focus should fall back to the third one, which is # also floating @@ -132,8 +126,6 @@ $tmp = fresh_workspace; $first = open_window({ background_color => '#ff0000' }); # window 8 $second = open_window({ background_color => '#00ff00' }); # window 9 -sync_with_i3($x); - is($x->input_focus, $second->id, 'second container focused'); cmd 'floating enable'; @@ -142,32 +134,22 @@ is($x->input_focus, $second->id, 'second container focused'); cmd 'focus tiling'; -sync_with_i3($x); - is($x->input_focus, $first->id, 'first (tiling) container focused'); cmd 'focus floating'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second (floating) container focused'); cmd 'focus floating'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second (floating) container still focused'); cmd 'focus mode_toggle'; -sync_with_i3($x); - is($x->input_focus, $first->id, 'first (tiling) container focused'); cmd 'focus mode_toggle'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second (floating) container focused'); ############################################################################# @@ -176,42 +158,30 @@ is($x->input_focus, $second->id, 'second (floating) container focused'); $tmp = fresh_workspace; -$first = open_floating_window($x, { background_color => '#ff0000' });# window 10 -$second = open_floating_window($x, { background_color => '#00ff00' }); # window 11 -$third = open_floating_window($x, { background_color => '#0000ff' }); # window 12 - -sync_with_i3($x); +$first = open_floating_window({ background_color => '#ff0000' });# window 10 +$second = open_floating_window({ background_color => '#00ff00' }); # window 11 +$third = open_floating_window({ background_color => '#0000ff' }); # window 12 is($x->input_focus, $third->id, 'third container focused'); cmd 'focus left'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second container focused'); cmd 'focus left'; -sync_with_i3($x); - is($x->input_focus, $first->id, 'first container focused'); cmd 'focus left'; -sync_with_i3($x); - is($x->input_focus, $third->id, 'focus wrapped to third container'); cmd 'focus right'; -sync_with_i3($x); - is($x->input_focus, $first->id, 'focus wrapped to first container'); cmd 'focus right'; -sync_with_i3($x); - is($x->input_focus, $second->id, 'focus on second container'); done_testing; diff --git a/testcases/t/136-floating-ws-empty.t b/testcases/t/136-floating-ws-empty.t index 1666884e..f17b0ec1 100644 --- a/testcases/t/136-floating-ws-empty.t +++ b/testcases/t/136-floating-ws-empty.t @@ -15,7 +15,7 @@ my $tmp = fresh_workspace; ok(workspace_exists($tmp), "workspace $tmp exists"); # Create a floating window which is smaller than the minimum enforced size of i3 -my $window = open_floating_window($x); +my $window = open_floating_window; ok($window->mapped, 'Window is mapped'); # switch to a different workspace, see if the window is still mapped? diff --git a/testcases/t/137-floating-unmap.t b/testcases/t/137-floating-unmap.t index 29762594..e91870bc 100644 --- a/testcases/t/137-floating-unmap.t +++ b/testcases/t/137-floating-unmap.t @@ -14,14 +14,14 @@ my $tmp = fresh_workspace; ############################################################################# # Create a floating window which is smaller than the minimum enforced size of i3 -my $window = open_floating_window($x); +my $window = open_floating_window; ok($window->mapped, 'Window is mapped'); # switch to a different workspace, see if the window is still mapped? my $otmp = fresh_workspace; -sync_with_i3($x); +sync_with_i3; ok(!$window->mapped, 'Window is not mapped after switching ws'); diff --git a/testcases/t/138-floating-attach.t b/testcases/t/138-floating-attach.t index 71f10ef5..db86e1ca 100644 --- a/testcases/t/138-floating-attach.t +++ b/testcases/t/138-floating-attach.t @@ -14,7 +14,7 @@ my $tmp = fresh_workspace; ############################################################################# # Create a floating window -my $window = open_floating_window($x); +my $window = open_floating_window; ok($window->mapped, 'Window is mapped'); my $ws = get_ws($tmp); @@ -47,7 +47,7 @@ is(@{$ws->{floating_nodes}}, 0, 'no floating nodes so far'); is(@{$ws->{nodes}}, 1, 'one tiling node (stacked con)'); # Create a floating window -$window = open_floating_window($x); +$window = open_floating_window; ok($window->mapped, 'Window is mapped'); $ws = get_ws($tmp); diff --git a/testcases/t/139-ws-numbers.t b/testcases/t/139-ws-numbers.t index aac1debf..78b9191a 100644 --- a/testcases/t/139-ws-numbers.t +++ b/testcases/t/139-ws-numbers.t @@ -13,7 +13,7 @@ sub check_order { my @nums = map { $_->{num} } grep { defined($_->{num}) } @ws; my @sorted = sort @nums; - cmp_deeply(\@nums, \@sorted, $msg); + is_deeply(\@nums, \@sorted, $msg); } check_order('workspace order alright before testing'); diff --git a/testcases/t/140-focus-lost.t b/testcases/t/140-focus-lost.t index 042afcfe..3d78b1bd 100644 --- a/testcases/t/140-focus-lost.t +++ b/testcases/t/140-focus-lost.t @@ -13,7 +13,7 @@ sub check_order { my @nums = map { $_->{num} } grep { defined($_->{num}) } @ws; my @sorted = sort @nums; - cmp_deeply(\@nums, \@sorted, $msg); + is_deeply(\@nums, \@sorted, $msg); } my $tmp = fresh_workspace; @@ -22,8 +22,6 @@ my $left = open_window; my $mid = open_window; my $right = open_window; -sync_with_i3($x); - diag("left = " . $left->id . ", mid = " . $mid->id . ", right = " . $right->id); is($x->input_focus, $right->id, 'Right window focused'); diff --git a/testcases/t/141-resize.t b/testcases/t/141-resize.t index b2c7d0f3..0b429fb0 100644 --- a/testcases/t/141-resize.t +++ b/testcases/t/141-resize.t @@ -10,8 +10,6 @@ cmd 'split v'; my $top = open_window; my $bottom = open_window; -sync_with_i3($x); - diag("top = " . $top->id . ", bottom = " . $bottom->id); is($x->input_focus, $bottom->id, 'Bottom window focused'); diff --git a/testcases/t/146-floating-reinsert.t b/testcases/t/146-floating-reinsert.t index c3a4512a..ca209e1c 100644 --- a/testcases/t/146-floating-reinsert.t +++ b/testcases/t/146-floating-reinsert.t @@ -18,7 +18,7 @@ my ($nodes, $focus) = get_ws_content($tmp); ############################################################################# # Create a floating window -my $window = open_floating_window($x); +my $window = open_floating_window; ok($window->mapped, 'Window is mapped'); ($nodes, $focus) = get_ws_content($tmp); diff --git a/testcases/t/153-floating-originalsize.t b/testcases/t/153-floating-originalsize.t index dcd1144e..83f3e85d 100644 --- a/testcases/t/153-floating-originalsize.t +++ b/testcases/t/153-floating-originalsize.t @@ -17,7 +17,7 @@ cmp_ok($absolute->{width}, '>', 400, 'i3 raised the width'); cmp_ok($absolute->{height}, '>', 150, 'i3 raised the height'); cmd 'floating toggle'; -sync_with_i3($x); +sync_with_i3; ($absolute, $top) = $window->rect; diff --git a/testcases/t/156-fullscreen-focus.t b/testcases/t/156-fullscreen-focus.t index 78323990..c7646e41 100644 --- a/testcases/t/156-fullscreen-focus.t +++ b/testcases/t/156-fullscreen-focus.t @@ -46,7 +46,7 @@ my $third = open_window({ $third->map; -sync_with_i3 $x; +sync_with_i3; diag("third = " . $third->id); @@ -57,9 +57,6 @@ my $tmp2 = get_unused_workspace; cmd "move workspace $tmp2"; # verify that the third window has the focus - -sync_with_i3($x); - is($x->input_focus, $third->id, 'third window focused'); done_testing; diff --git a/testcases/t/162-regress-dock-urgent.t b/testcases/t/162-regress-dock-urgent.t index 39e4eac4..7a0ac487 100644 --- a/testcases/t/162-regress-dock-urgent.t +++ b/testcases/t/162-regress-dock-urgent.t @@ -47,7 +47,7 @@ is($docknode->{rect}->{height}, 30, 'dock node has unchanged height'); $window->add_hint('urgency'); -sync_with_i3($x); +sync_with_i3; does_i3_live; diff --git a/testcases/t/163-wm-state.t b/testcases/t/163-wm-state.t index 468499d5..6df2bcbd 100644 --- a/testcases/t/163-wm-state.t +++ b/testcases/t/163-wm-state.t @@ -9,8 +9,6 @@ use X11::XCB qw(ICCCM_WM_STATE_NORMAL ICCCM_WM_STATE_WITHDRAWN); my $window = open_window; -sync_with_i3($x); - is($window->state, ICCCM_WM_STATE_NORMAL, 'WM_STATE normal'); $window->unmap; diff --git a/testcases/t/164-kill-win-vs-client.t b/testcases/t/164-kill-win-vs-client.t index 20dd50ca..165a32ce 100644 --- a/testcases/t/164-kill-win-vs-client.t +++ b/testcases/t/164-kill-win-vs-client.t @@ -14,8 +14,6 @@ sub two_windows { my $first = open_window; my $second = open_window; - sync_with_i3 $x; - is($x->input_focus, $second->id, 'second window focused'); ok(@{get_ws_content($tmp)} == 2, 'two containers opened'); diff --git a/testcases/t/165-for_window.t b/testcases/t/165-for_window.t index 281f840f..c7601809 100644 --- a/testcases/t/165-for_window.t +++ b/testcases/t/165-for_window.t @@ -124,13 +124,13 @@ cmp_ok(@content, '==', 1, 'one node on this workspace now'); is($content[0]->{border}, 'normal', 'normal border'); $window->name('special borderless title'); -sync_with_i3 $x; +sync_with_i3; @content = @{get_ws_content($tmp)}; is($content[0]->{border}, 'none', 'no border'); $window->name('special title'); -sync_with_i3 $x; +sync_with_i3; cmd 'border normal'; @@ -138,7 +138,7 @@ cmd 'border normal'; is($content[0]->{border}, 'normal', 'border reset to normal'); $window->name('special borderless title'); -sync_with_i3 $x; +sync_with_i3; @content = @{get_ws_content($tmp)}; is($content[0]->{border}, 'normal', 'still normal border'); @@ -235,7 +235,7 @@ wait_for_unmap $window; $window->destroy; # give i3 a chance to delete the window from its tree -sync_with_i3 $x; +sync_with_i3; @content = @{get_ws_content($tmp)}; cmp_ok(@content, '==', 0, 'no nodes on this workspace now'); @@ -457,7 +457,7 @@ $x->change_property( $x->flush; -sync_with_i3 $x; +sync_with_i3; @content = @{get_ws_content($tmp)}; cmp_ok(@content, '==', 1, 'one node on this workspace now'); diff --git a/testcases/t/166-assign.t b/testcases/t/166-assign.t index f42962f3..a10516a6 100644 --- a/testcases/t/166-assign.t +++ b/testcases/t/166-assign.t @@ -135,7 +135,7 @@ $window->map; # We use sync_with_i3 instead of wait_for_map here because i3 will not actually # map the window -- it will be assigned to a different workspace and will only # be mapped once you switch to that workspace -sync_with_i3 $x; +sync_with_i3; ok(@{get_ws_content($tmp)} == 0, 'still no containers'); ok(@{get_ws_content('targetws')} == 2, 'two containers on targetws'); diff --git a/testcases/t/167-workspace_layout.t b/testcases/t/167-workspace_layout.t index d5a02ca6..aeb700ba 100644 --- a/testcases/t/167-workspace_layout.t +++ b/testcases/t/167-workspace_layout.t @@ -26,8 +26,6 @@ ok(@{get_ws_content($tmp)} == 0, 'no containers yet'); my $first = open_window; my $second = open_window; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second window focused'); my @content = @{get_ws_content($tmp)}; ok(@content == 2, 'two containers opened'); @@ -56,8 +54,6 @@ ok(@{get_ws_content($tmp)} == 0, 'no containers yet'); $first = open_window; $second = open_window; -sync_with_i3($x); - is($x->input_focus, $second->id, 'second window focused'); @content = @{get_ws_content($tmp)}; ok(@content == 1, 'one con at workspace level'); diff --git a/testcases/t/170-force_focus_wrapping.t b/testcases/t/170-force_focus_wrapping.t index bf66c44e..30458b00 100644 --- a/testcases/t/170-force_focus_wrapping.t +++ b/testcases/t/170-force_focus_wrapping.t @@ -70,8 +70,6 @@ cmd 'focus parent'; $third = open_window; -sync_with_i3($x); - is($x->input_focus, $third->id, 'third window focused'); cmd 'focus left'; diff --git a/testcases/t/172-start-on-named-ws.t b/testcases/t/172-start-on-named-ws.t index 97ae16e9..34d98776 100644 --- a/testcases/t/172-start-on-named-ws.t +++ b/testcases/t/172-start-on-named-ws.t @@ -18,7 +18,7 @@ EOT my $pid = launch_with_config($config); my @names = @{get_workspace_names()}; -cmp_deeply(\@names, [ '1' ], 'i3 starts on workspace 1 without any configuration'); +is_deeply(\@names, [ '1' ], 'i3 starts on workspace 1 without any configuration'); exit_gracefully($pid); @@ -36,7 +36,7 @@ EOT $pid = launch_with_config($config); @names = @{get_workspace_names()}; -cmp_deeply(\@names, [ 'foobar' ], 'i3 starts on named workspace foobar'); +is_deeply(\@names, [ 'foobar' ], 'i3 starts on named workspace foobar'); exit_gracefully($pid); @@ -54,7 +54,7 @@ EOT $pid = launch_with_config($config); @names = @{get_workspace_names()}; -cmp_deeply(\@names, [ 'foobar' ], 'i3 starts on named workspace foobar'); +is_deeply(\@names, [ 'foobar' ], 'i3 starts on named workspace foobar'); exit_gracefully($pid); diff --git a/testcases/t/173-get-marks.t b/testcases/t/173-get-marks.t index e74c233a..75b6e7a8 100644 --- a/testcases/t/173-get-marks.t +++ b/testcases/t/173-get-marks.t @@ -16,7 +16,7 @@ sub get_marks { my $tmp = fresh_workspace; my $marks = get_marks(); -cmp_deeply($marks, [], 'no marks set so far'); +is_deeply($marks, [], 'no marks set so far'); ############################################################## # 2: check that setting a mark is reflected in the get_marks reply @@ -25,7 +25,7 @@ cmp_deeply($marks, [], 'no marks set so far'); cmd 'open'; cmd 'mark foo'; -cmp_deeply(get_marks(), [ 'foo' ], 'mark foo set'); +is_deeply(get_marks(), [ 'foo' ], 'mark foo set'); ############################################################## # 3: check that the mark is gone after killing the container @@ -33,7 +33,7 @@ cmp_deeply(get_marks(), [ 'foo' ], 'mark foo set'); cmd 'kill'; -cmp_deeply(get_marks(), [ ], 'mark gone'); +is_deeply(get_marks(), [ ], 'mark gone'); ############################################################## # 4: check that duplicate marks are included twice in the get_marks reply @@ -45,6 +45,6 @@ cmd 'mark bar'; cmd 'open'; cmd 'mark bar'; -cmp_deeply(get_marks(), [ 'bar', 'bar' ], 'duplicate mark found twice'); +is_deeply(get_marks(), [ 'bar', 'bar' ], 'duplicate mark found twice'); done_testing; diff --git a/testcases/t/174-border-config.t b/testcases/t/174-border-config.t index 6196b684..009f5094 100644 --- a/testcases/t/174-border-config.t +++ b/testcases/t/174-border-config.t @@ -73,7 +73,7 @@ $tmp = fresh_workspace; ok(@{get_ws_content($tmp)} == 0, 'no containers yet'); -$first = open_floating_window($x); +$first = open_floating_window; my $wscontent = get_ws($tmp); my @floating = @{$wscontent->{floating_nodes}}; @@ -101,7 +101,7 @@ $tmp = fresh_workspace; ok(@{get_ws_content($tmp)} == 0, 'no containers yet'); -$first = open_floating_window($x); +$first = open_floating_window; $wscontent = get_ws($tmp); @floating = @{$wscontent->{floating_nodes}}; diff --git a/testcases/t/175-startup-notification.t b/testcases/t/175-startup-notification.t index a794f70a..3a4dbc81 100644 --- a/testcases/t/175-startup-notification.t +++ b/testcases/t/175-startup-notification.t @@ -103,7 +103,7 @@ $win->map; # We don’t use wait_for_map because the window will not get mapped -- it is on # a different workspace. # We sync with i3 here to make sure $x->input_focus is updated. -sync_with_i3($x); +sync_with_i3; is(@{get_ws_content($second_ws)}, 0, 'still no containers on the second workspace'); is(@{get_ws_content($first_ws)}, 1, 'one container on the first workspace'); @@ -117,7 +117,7 @@ mark_window($leader->id); $win = open_window({ dont_map => 1, client_leader => $leader }); $win->map; -sync_with_i3($x); +sync_with_i3; is(@{get_ws_content($second_ws)}, 0, 'still no containers on the second workspace'); is(@{get_ws_content($first_ws)}, 2, 'two containers on the first workspace'); @@ -128,7 +128,7 @@ is(@{get_ws_content($first_ws)}, 2, 'two containers on the first workspace'); ###################################################################### complete_startup(); -sync_with_i3($x); +sync_with_i3; my $otherwin = open_window; is(@{get_ws_content($second_ws)}, 1, 'one container on the second workspace');