]> git.sur5r.net Git - i3/i3/commitdiff
tests: add sync_with_i3 after open_window
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 3 Oct 2017 07:58:10 +0000 (09:58 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Mon, 23 Oct 2017 19:04:20 +0000 (21:04 +0200)
We need to set dont_map => 1 on the sync window to prevent an endless loop.

Further, t/219-ipc-window-focus.t made assumptions about windows being named
incrementally, and that assumption is broken by the sync window opened by the
first sync_with_i3 call from open_window, so use the more reliable ->name.

testcases/lib/i3test.pm.in
testcases/t/219-ipc-window-focus.t

index 5b24ab39144a28c8422201092eda9ca95c074a2a..1e4eea75137c52a584a0f2edc7f1ccdb32cc31f4 100644 (file)
@@ -350,6 +350,12 @@ sub open_window {
 
     $window->map;
     wait_for_map($window);
+
+    # MapWindow is sent before i3 even starts rendering: the window is placed at
+    # temporary off-screen coordinates first, and x_push_changes() sends further
+    # X11 requests to set focus etc. Hence, we sync with i3 before continuing.
+    sync_with_i3();
+
     return $window;
 }
 
@@ -688,6 +694,7 @@ sub sync_with_i3 {
         $_sync_window = open_window(
             rect => [ -15, -15, 10, 10 ],
             override_redirect => 1,
+            dont_map => 1,
         );
     }
 
index 5baf68a80163a200110cbe340f1571730da9ce4d..b1c8ba1836148b377a706da4848143d040a2b951 100644 (file)
@@ -44,11 +44,11 @@ sub focus_subtest {
     is($events[0]->{container}->{name}, $name, "$name focused");
 }
 
-subtest 'focus left (1)', \&focus_subtest, 'focus left', 'Window 1';
-subtest 'focus left (2)', \&focus_subtest, 'focus left', 'Window 0';
-subtest 'focus right (1)', \&focus_subtest, 'focus right', 'Window 1';
-subtest 'focus right (2)', \&focus_subtest, 'focus right', 'Window 2';
-subtest 'focus right (3)', \&focus_subtest, 'focus right', 'Window 0';
-subtest 'focus left', \&focus_subtest, 'focus left', 'Window 2';
+subtest 'focus left (1)', \&focus_subtest, 'focus left', $win1->name;
+subtest 'focus left (2)', \&focus_subtest, 'focus left', $win0->name;
+subtest 'focus right (1)', \&focus_subtest, 'focus right', $win1->name;
+subtest 'focus right (2)', \&focus_subtest, 'focus right', $win2->name;
+subtest 'focus right (3)', \&focus_subtest, 'focus right', $win0->name;
+subtest 'focus left', \&focus_subtest, 'focus left', $win2->name;
 
 done_testing;