Implement `kill' action keyword
When invoked, will kill the client returned by `layout.current_client`. ICCCM WM_DELETE_WINDOW is used instead if the window reports to support this protocol.
This commit is contained in:
parent
10ad5d9a76
commit
1cc1f98ad2
11
features/actions/kill.feature
Normal file
11
features/actions/kill.feature
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
Feature: `kill' action keyword
|
||||||
|
|
||||||
|
@icccm_window
|
||||||
|
Scenario: kills current client
|
||||||
|
Given uhwm is running with this run control file:
|
||||||
|
"""
|
||||||
|
key(:f) { kill_current }
|
||||||
|
"""
|
||||||
|
And an ICCCM compliant window is mapped
|
||||||
|
When I press the alt+f keys
|
||||||
|
Then the ICCCM window must be unmapped by the manager
|
@ -1,3 +1,10 @@
|
|||||||
|
Given /^an ICCCM compliant window is mapped$/ do
|
||||||
|
icccm_window_start
|
||||||
|
timeout_until 'window not mapped after %d seconds' do
|
||||||
|
x_window_map_state(icccm_window_name) == 'IsViewable'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
Given /^a(?:\s(\w+))? window is mapped$/ do |ident|
|
Given /^a(?:\s(\w+))? window is mapped$/ do |ident|
|
||||||
x_client(ident).map.sync
|
x_client(ident).map.sync
|
||||||
timeout_until 'window not mapped after %d seconds' do
|
timeout_until 'window not mapped after %d seconds' do
|
||||||
@ -42,6 +49,10 @@ Then /^the(?:\s(\w+))? window must be mapped$/ do |ident|
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Then /^the ICCCM window must be unmapped by the manager$/ do
|
||||||
|
uhwm_wait_output /unmanag.+#{icccm_window_name}/i
|
||||||
|
end
|
||||||
|
|
||||||
Then /^the window must be focused$/ do
|
Then /^the window must be focused$/ do
|
||||||
timeout_until 'window not focused after %d seconds' do
|
timeout_until 'window not focused after %d seconds' do
|
||||||
x_focused_window_id == x_client.window_id
|
x_focused_window_id == x_client.window_id
|
||||||
|
@ -38,6 +38,10 @@ module Uh
|
|||||||
Process.waitpid pid
|
Process.waitpid pid
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def kill_current
|
||||||
|
layout.current_client.kill
|
||||||
|
end
|
||||||
|
|
||||||
def log_separator
|
def log_separator
|
||||||
log '- ' * 24
|
log '- ' * 24
|
||||||
end
|
end
|
||||||
|
@ -24,6 +24,21 @@ module Uh
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#kill_current' do
|
||||||
|
let(:client) { instance_spy Client }
|
||||||
|
|
||||||
|
context 'when layout has a client' do
|
||||||
|
before do
|
||||||
|
allow(actions.layout).to receive(:current_client) { client }
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'kills layout current client' do
|
||||||
|
expect(client).to receive :kill
|
||||||
|
actions.kill_current
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#log_separator' do
|
describe '#log_separator' do
|
||||||
it 'logs a separator' do
|
it 'logs a separator' do
|
||||||
expect(env).to receive(:log).with /(?:- ){20,}/
|
expect(env).to receive(:log).with /(?:- ){20,}/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user