Refactor and improve test 514
Patch status: merged
Patch by Tony Crisci
Long description:
Split test 514's assertion into three assertions to make it more explicit what is being tested, and why a run might fail. Move critical test code out of the event handler to clarify flow and allow a query of the actual current workspace to use in assertions. Works around an issue which caused this test to fail spurriously because of pointer-related quirks in the i3 test suite which would sometimes cause i3 to open on workspace 2 (However, the test is now agnostic to the initial workspace or output).
To apply this patch, use:
curl http://cr.i3wm.org/patch/340/raw.patch | git am
b/testcases/t/514-ipc-workspace-multi-monitor.t
23 |
@@ -19,6 +19,10 @@ |
24 |
|
25 |
use i3test i3_autostart => 0; |
26 |
|
27 |
+# Ensure the pointer is at (0, 0) so that we really start on the first |
28 |
+# (the left) workspace. |
29 |
+$x->root->warp_pointer(0, 0); |
30 |
+ |
31 |
my $config = <<EOT; |
32 |
# i3 config file (v4) |
33 |
font -misc-fixed-medium-r-normal--13-120-75-75-C-70-iso10646-1 |
34 |
@@ -35,7 +39,7 @@ $i3->connect()->recv; |
35 |
# Workspaces requests and events |
36 |
################################ |
37 |
|
38 |
-my $focused = get_ws(focused_ws()); |
39 |
+my $old_ws = get_ws(focused_ws); |
40 |
|
41 |
# Events |
42 |
|
43 |
@@ -46,17 +50,11 @@ $i3->subscribe({ |
44 |
workspace => sub { |
45 |
my ($event) = @_; |
46 |
if ($event->{change} eq 'focus') { |
47 |
- # Check that we have the old and new workspace |
48 |
- $focus->send( |
49 |
- $event->{current}->{name} == '2' && |
50 |
- $event->{old}->{name} == $focused->{name} |
51 |
- ); |
52 |
+ $focus->send($event); |
53 |
} |
54 |
} |
55 |
})->recv; |
56 |
|
57 |
-cmd 'focus output right'; |
58 |
- |
59 |
my $t; |
60 |
$t = AnyEvent->timer( |
61 |
after => 0.5, |
62 |
@@ -65,7 +63,15 @@ $t = AnyEvent->timer( |
63 |
} |
64 |
); |
65 |
|
66 |
-ok($focus->recv, 'Workspace "focus" event received'); |
67 |
+cmd 'focus output right'; |
68 |
+ |
69 |
+my $event = $focus->recv; |
70 |
+ |
71 |
+my $current_ws = get_ws(focused_ws); |
72 |
+ |
73 |
+ok($event, 'Workspace "focus" event received'); |
74 |
+is($event->{current}->{id}, $current_ws->{id}, 'Event gave correct current workspace'); |
75 |
+is($event->{old}->{id}, $old_ws->{id}, 'Event gave correct old workspace'); |
76 |
|
77 |
exit_gracefully($pid); |
78 |
|