testcases: fix race conditions in various tests

This commit is contained in:
Maik Fischer 2011-11-21 16:49:22 +01:00 committed by Michael Stapelberg
parent af793c9030
commit 0f386a96e7
4 changed files with 33 additions and 22 deletions

View File

@ -49,8 +49,7 @@ cmd 'floating enable';
# now kill the third one (it's floating). focus should stay unchanged # now kill the third one (it's floating). focus should stay unchanged
cmd '[id="' . $third->id . '"] kill'; cmd '[id="' . $third->id . '"] kill';
# TODO: wait for unmapnotify wait_for_unmap($x);
sync_with_i3($x);
is($x->input_focus, $second->id, 'second con still focused after killing third'); 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 # now kill the second one. focus should fall back to the third one, which is
# also floating # also floating
cmd 'kill'; cmd 'kill';
wait_for_unmap($x);
# TODO: wait for unmapnotify
sync_with_i3($x);
is($x->input_focus, $third->id, 'third con focused'); is($x->input_focus, $third->id, 'third con focused');
cmd 'kill'; cmd 'kill';
# TODO: wait for unmapnotify wait_for_unmap($x);
sync_with_i3($x);
is($x->input_focus, $first->id, 'first con focused after killing all floating cons'); 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 # now kill the second one. focus should fall back to the third one, which is
# also floating # also floating
cmd 'kill'; cmd 'kill';
wait_for_unmap($x);
# TODO: wait for unmapnotify
sync_with_i3($x);
is($x->input_focus, $third->id, 'third con focused'); is($x->input_focus, $third->id, 'third con focused');
cmd 'kill'; cmd 'kill';
# TODO: wait for unmapnotify wait_for_unmap($x);
sync_with_i3($x);
is($x->input_focus, $first->id, 'first con focused after killing all floating cons'); is($x->input_focus, $first->id, 'first con focused after killing all floating cons');

View File

@ -8,13 +8,17 @@
# #
use i3test; use i3test;
use List::Util qw(sum); use List::Util qw(sum);
use X11::XCB::Connection;
my $x = X11::XCB::Connection->new;
my $tmp = fresh_workspace; my $tmp = fresh_workspace;
cmd 'exec /usr/bin/urxvt'; cmd 'exec /usr/bin/urxvt';
sleep 0.5; wait_for_map $x;
cmd 'exec /usr/bin/urxvt'; cmd 'exec /usr/bin/urxvt';
sleep 0.5; wait_for_map $x;
my ($nodes, $focus) = get_ws_content($tmp); my ($nodes, $focus) = get_ws_content($tmp);
my $old_sum = sum map { $_->{rect}->{width} } @{$nodes}; my $old_sum = sum map { $_->{rect}->{width} } @{$nodes};
#cmd 'open'; #cmd 'open';
@ -22,12 +26,13 @@ cmd 'resize grow left 10 px or 25 ppt';
cmd 'split v'; cmd 'split v';
#cmd 'open'; #cmd 'open';
cmd 'exec /usr/bin/urxvt'; cmd 'exec /usr/bin/urxvt';
sleep 0.5; wait_for_map $x;
cmd 'mode toggle';
sleep 0.5;
cmd 'kill';
sleep 0.5; cmd 'mode toggle';
sync_with_i3 $x;
cmd 'kill';
wait_for_unmap $x;
($nodes, $focus) = get_ws_content($tmp); ($nodes, $focus) = get_ws_content($tmp);
my $new_sum = sum map { $_->{rect}->{width} } @{$nodes}; my $new_sum = sum map { $_->{rect}->{width} } @{$nodes};

View File

@ -237,6 +237,9 @@ cmd 'kill';
wait_for_unmap $x; wait_for_unmap $x;
$window->destroy; $window->destroy;
# give i3 a chance to delete the window from its tree
sync_with_i3 $x;
@content = @{get_ws_content($tmp)}; @content = @{get_ws_content($tmp)};
cmp_ok(@content, '==', 0, 'no nodes on this workspace now'); cmp_ok(@content, '==', 0, 'no nodes on this workspace now');

View File

@ -5,10 +5,20 @@
# Tests if the 'force_focus_wrapping' config directive works correctly. # Tests if the 'force_focus_wrapping' config directive works correctly.
# #
use i3test; 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 # 1: test the wrapping behaviour without force_focus_wrapping