awesome/tests/test-urgent.lua
Uli Schlachter 5ccdb933bf C-API: Return screen objects instead of indicies
This commit makes all C code that previously returned a screen index now return
a screen object, continuing the deprecation of screen indicies. Note that this
is an API break and will likely cause all kinds of problems for users.

The change also breaks some tests which are suitably fixed in this commit.

Signed-off-by: Uli Schlachter <psychon@znc.in>
2016-03-26 18:09:24 +01:00

115 lines
3.7 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.
awful.tag.viewonly(tags[awful.screen.focused()][1])
runner.add_to_default_rules({ rule = { class = "XTerm" },
properties = { tag = tags[awful.screen.focused()][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.
awful.tag.viewonly(tags[awful.screen.focused()][1])
runner.add_to_default_rules({ rule = { class = "XTerm" },
properties = { tag = tags[awful.screen.focused()][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 = tags[awful.screen.focused()][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