Implement the tick event

This makes our tests less flaky, shorter, and more readable.

fixes #2988
This commit is contained in:
Michael Stapelberg
2017-09-24 15:40:30 +02:00
parent 14c8cf8622
commit ce21de8dde
29 changed files with 457 additions and 734 deletions

View File

@ -28,24 +28,11 @@ mode "with spaces" {
}
EOT
my $i3 = i3(get_socket_path(0));
$i3->connect->recv;
my @events = events_for(
sub { cmd 'mode "m1"' },
'mode');
my $cv = AnyEvent->condvar;
$i3->subscribe({
mode => sub {
my ($event) = @_;
$cv->send($event->{change} eq 'm1');
}
})->recv;
cmd 'mode "m1"';
# Timeout after 0.5s
my $t;
$t = AnyEvent->timer(after => 0.5, cb => sub { $cv->send(0); });
ok($cv->recv, 'Mode event received');
my @changes = map { $_->{change} } @events;
is_deeply(\@changes, [ 'm1' ], 'Mode event received');
done_testing;