]> git.sur5r.net Git - i3/i3/commitdiff
testcases: fix race conditions in various tests
authorMaik Fischer <maikf@qu.cx>
Mon, 21 Nov 2011 15:49:22 +0000 (16:49 +0100)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 21 Nov 2011 19:21:14 +0000 (19:21 +0000)
testcases/t/135-floating-focus.t
testcases/t/144-regress-floating-resize.t
testcases/t/165-for_window.t
testcases/t/170-force_focus_wrapping.t

index a1ab211e501d59531bb50e8cb8d86a4bf91cc008..b43f0f7ffbfbffd93298a4100ec8e45e8a207d3d 100644 (file)
@@ -49,8 +49,7 @@ cmd 'floating enable';
 # now kill the third one (it's floating). focus should stay unchanged
 cmd '[id="' . $third->id . '"] kill';
 
-# TODO: wait for unmapnotify
-sync_with_i3($x);
+wait_for_unmap($x);
 
 is($x->input_focus, $second->id, 'second con still focused after killing third');
 
@@ -81,15 +80,12 @@ cmd 'floating enable';
 # now kill the second one. focus should fall back to the third one, which is
 # also floating
 cmd 'kill';
-
-# TODO: wait for unmapnotify
-sync_with_i3($x);
+wait_for_unmap($x);
 
 is($x->input_focus, $third->id, 'third con focused');
 
 cmd 'kill';
-# TODO: wait for unmapnotify
-sync_with_i3($x);
+wait_for_unmap($x);
 
 is($x->input_focus, $first->id, 'first con focused after killing all floating cons');
 
@@ -122,15 +118,12 @@ sync_with_i3($x);
 # now kill the second one. focus should fall back to the third one, which is
 # also floating
 cmd 'kill';
-
-# TODO: wait for unmapnotify
-sync_with_i3($x);
+wait_for_unmap($x);
 
 is($x->input_focus, $third->id, 'third con focused');
 
 cmd 'kill';
-# TODO: wait for unmapnotify
-sync_with_i3($x);
+wait_for_unmap($x);
 
 is($x->input_focus, $first->id, 'first con focused after killing all floating cons');
 
index de33eeb3961e76f581d08c9a7555ca937a81aea9..44a67bc3e4996c22e5660c2e8bec0aa9108a6d72 100644 (file)
@@ -8,13 +8,17 @@
 #
 use i3test;
 use List::Util qw(sum);
+use X11::XCB::Connection;
+
+my $x = X11::XCB::Connection->new;
 
 my $tmp = fresh_workspace;
 
 cmd 'exec /usr/bin/urxvt';
-sleep 0.5;
+wait_for_map $x;
 cmd 'exec /usr/bin/urxvt';
-sleep 0.5;
+wait_for_map $x;
+
 my ($nodes, $focus) = get_ws_content($tmp);
 my $old_sum = sum map { $_->{rect}->{width} } @{$nodes};
 #cmd 'open';
@@ -22,12 +26,13 @@ cmd 'resize grow left 10 px or 25 ppt';
 cmd 'split v';
 #cmd 'open';
 cmd 'exec /usr/bin/urxvt';
-sleep 0.5;
+wait_for_map $x;
+
 cmd 'mode toggle';
-sleep 0.5;
-cmd 'kill';
+sync_with_i3 $x;
 
-sleep 0.5;
+cmd 'kill';
+wait_for_unmap $x;
 
 ($nodes, $focus) = get_ws_content($tmp);
 my $new_sum = sum map { $_->{rect}->{width} } @{$nodes};
index cc100132f8c76723bab38ae14ab42ee17f5fa37d..6e921cef484339b7d72eb3744e611d6498c8bcfe 100644 (file)
@@ -237,6 +237,9 @@ cmd 'kill';
 wait_for_unmap $x;
 $window->destroy;
 
+# give i3 a chance to delete the window from its tree
+sync_with_i3 $x;
+
 @content = @{get_ws_content($tmp)};
 cmp_ok(@content, '==', 0, 'no nodes on this workspace now');
 
index 8a990f23e96dc649880f306de312a2438aaf1f80..48869c1081c75981aa59bd0368a6f50bbb61c588 100644 (file)
@@ -5,10 +5,20 @@
 # Tests if the 'force_focus_wrapping' config directive works correctly.
 #
 use i3test;
-use X11::XCB qw(:all);
-use X11::XCB::Connection;
 
-my $x = X11::XCB::Connection->new;
+{
+    package i3test::X11;
+    use parent 'X11::XCB::Connection';
+
+    sub input_focus {
+        my $self = shift;
+        i3test::sync_with_i3($self);
+
+        return $self->SUPER::input_focus(@_);
+    }
+}
+
+my $x = i3test::X11->new;
 
 #####################################################################
 # 1: test the wrapping behaviour without force_focus_wrapping