cmd_focus_output: Avoid assertion crash

Happened when the command criteria didn't match any windows. For
example: `[con_mark=doesnotexist] focus output left`.
This commit is contained in:
Orestis Floros
2019-03-21 23:57:24 +02:00
parent 351d891f4c
commit 7fc3bf660e
2 changed files with 36 additions and 14 deletions

View File

@ -86,4 +86,33 @@ is(focused_output, 'fake-1', 'focus on second output');
cmd 'focus output fake-0';
is(focused_output, 'fake-0', 'focus on first output');
################################################################################
# use 'focus output' with command criteria and verify that i3 does not crash
# when they don't match any window
################################################################################
is(focused_output, 'fake-0', 'focus on first output');
cmd '[con_mark=doesnotexist] focus output right';
does_i3_live;
is(focused_output, 'fake-0', 'focus remained on first output');
################################################################################
# use 'focus output' with command criteria and verify that focus gets changed
# appropriately
################################################################################
is(focused_output, 'fake-0', 'focus on first output');
my $window = open_window;
cmd 'focus output right';
is(focused_output, 'fake-1', 'focus on second output');
cmd '[id= . ' . $window->id . '] focus output right';
is(focused_output, 'fake-1', 'focus on second output after command with criteria');
cmd 'focus output right';
is(focused_output, 'fake-0', 'focus on first output after command without criteria');
done_testing;