awesome/tests/test-urgent.lua

116 lines
3.6 KiB
Lua

--- Tests for urgent property.
local awful = require("awful")
local runner = require("_runner")
-- This uses the global "tags" array set in the default config
-- luacheck: globals tags
-- Some basic assertion that the tag is not marked "urgent" already.
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent") == nil)
-- Setup signal handler which should be called.
-- TODO: generalize and move to runner.
local urgent_cb_done
client.connect_signal("property::urgent", function (c)
urgent_cb_done = true
assert(c.class == "XTerm", "Client should be xterm!")
end)
local manage_cb_done
client.connect_signal("manage", function (c)
manage_cb_done = true
assert(c.class == "XTerm", "Client should be xterm!")
end)
-- Steps to do for this test.
local steps = {
-- Step 1: tag 2 should become urgent, when a client gets tagged via rules.
function(count)
if count == 1 then -- Setup.
urgent_cb_done = false
-- Select first tag.
tags[awful.screen.focused()][1]:view_only()
runner.add_to_default_rules({ rule = { class = "XTerm" },
properties = { tag = "2", focus = true } })
awful.spawn("xterm")
end
if urgent_cb_done then
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent") == true)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent_count") == 1)
return true
end
end,
-- Step 2: when switching to tag 2, it should not be urgent anymore.
function(count)
if count == 1 then
-- Setup: switch to tag.
root.fake_input("key_press", "Super_L")
root.fake_input("key_press", "2")
root.fake_input("key_release", "2")
root.fake_input("key_release", "Super_L")
elseif awful.tag.selectedlist()[1] == tags[awful.screen.focused()][2] then
assert(#client.get() == 1)
local c = client.get()[1]
assert(not c.urgent, "Client is not urgent anymore.")
assert(c == client.focus, "Client is focused.")
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent") == false)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent_count") == 0)
return true
end
end,
-- Step 3: tag 2 should not be urgent, but switched to.
function(count)
if count == 1 then -- Setup.
urgent_cb_done = false
-- Select first tag.
tags[awful.screen.focused()][1]:view_only()
runner.add_to_default_rules({ rule = { class = "XTerm" },
properties = { tag = "2", focus = true, switchtotag = true }})
awful.spawn("xterm")
elseif awful.tag.selectedlist()[1] == tags[awful.screen.focused()][2] then
assert(not urgent_cb_done)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent") == false)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent_count") == 0)
assert(awful.tag.selectedlist()[2] == nil)
return true
end
end,
-- Step 4: tag 2 should not become urgent, when a client gets tagged via
-- rules with focus=false.
function(count)
if count == 1 then -- Setup.
client.get()[1]:kill()
manage_cb_done = false
runner.add_to_default_rules({rule = { class = "XTerm" },
properties = { tag = "2", focus = false }})
awful.spawn("xterm")
end
if manage_cb_done then
assert(client.get()[1].urgent == false)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent") == false)
assert(awful.tag.getproperty(tags[awful.screen.focused()][2], "urgent_count") == 0)
return true
end
end,
}
runner.run_steps(steps)
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80