Implement the tick event
This makes our tests less flaky, shorter, and more readable. fixes #2988
This commit is contained in:
@ -16,61 +16,25 @@
|
||||
|
||||
use i3test;
|
||||
|
||||
my $i3 = i3(get_socket_path());
|
||||
$i3->connect()->recv;
|
||||
|
||||
################################
|
||||
# Workspaces requests and events
|
||||
################################
|
||||
|
||||
my $old_ws = get_ws(focused_ws());
|
||||
|
||||
# Events
|
||||
|
||||
# We are switching to an empty workpspace from an empty workspace, so we expect
|
||||
# to receive "init", "focus", and "empty".
|
||||
my $init = AnyEvent->condvar;
|
||||
my $focus = AnyEvent->condvar;
|
||||
my $empty = AnyEvent->condvar;
|
||||
$i3->subscribe({
|
||||
workspace => sub {
|
||||
my ($event) = @_;
|
||||
if ($event->{change} eq 'init') {
|
||||
$init->send($event);
|
||||
} elsif ($event->{change} eq 'focus') {
|
||||
$focus->send($event);
|
||||
} elsif ($event->{change} eq 'empty') {
|
||||
$empty->send($event);
|
||||
}
|
||||
}
|
||||
})->recv;
|
||||
|
||||
cmd 'workspace 2';
|
||||
|
||||
my $t;
|
||||
$t = AnyEvent->timer(
|
||||
after => 0.5,
|
||||
cb => sub {
|
||||
$init->send(0);
|
||||
$focus->send(0);
|
||||
$empty->send(0);
|
||||
}
|
||||
);
|
||||
|
||||
my $init_event = $init->recv;
|
||||
my $focus_event = $focus->recv;
|
||||
my $empty_event = $empty->recv;
|
||||
my @events = events_for(
|
||||
sub { cmd 'workspace 2' },
|
||||
'workspace');
|
||||
|
||||
my $current_ws = get_ws(focused_ws());
|
||||
|
||||
ok($init_event, 'workspace "init" event received');
|
||||
is($init_event->{current}->{id}, $current_ws->{id}, 'the "current" property should contain the initted workspace con');
|
||||
is(scalar @events, 3, 'Received 3 events');
|
||||
is($events[0]->{change}, 'init', 'First event has change = init');
|
||||
is($events[0]->{current}->{id}, $current_ws->{id}, 'the "current" property contains the initted workspace con');
|
||||
|
||||
ok($focus_event, 'workspace "focus" event received');
|
||||
is($focus_event->{current}->{id}, $current_ws->{id}, 'the "current" property should contain the focused workspace con');
|
||||
is($focus_event->{old}->{id}, $old_ws->{id}, 'the "old" property should contain the workspace con that was focused last');
|
||||
is($events[1]->{change}, 'focus', 'Second event has change = focus');
|
||||
is($events[1]->{current}->{id}, $current_ws->{id}, 'the "current" property should contain the focused workspace con');
|
||||
is($events[1]->{old}->{id}, $old_ws->{id}, 'the "old" property should contain the workspace con that was focused last');
|
||||
|
||||
ok($empty_event, 'workspace "empty" event received');
|
||||
is($empty_event->{current}->{id}, $old_ws->{id}, 'the "current" property should contain the emptied workspace con');
|
||||
is($events[2]->{change}, 'empty', 'Third event has change = empty');
|
||||
is($events[2]->{current}->{id}, $old_ws->{id}, 'the "current" property should contain the emptied workspace con');
|
||||
|
||||
done_testing;
|
||||
|
Reference in New Issue
Block a user