2021-09-20 06:55:48 +02:00
|
|
|
local naughty = require("naughty")
|
|
|
|
local notification = require("naughty.notification")
|
|
|
|
|
|
|
|
local steps = {}
|
|
|
|
|
|
|
|
-- Hijack the naughty.layout.box to track them.
|
|
|
|
local real_box = getmetatable(naughty.layout.box).__call
|
|
|
|
local boxes = {}
|
|
|
|
|
|
|
|
getmetatable(naughty.layout.box).__call = function(_, args)
|
|
|
|
local ret = real_box(_, args)
|
|
|
|
|
|
|
|
table.insert(boxes, ret)
|
|
|
|
|
|
|
|
return ret
|
|
|
|
end
|
|
|
|
|
|
|
|
naughty.suspended = true
|
|
|
|
|
|
|
|
local display_count, notifs = 0, setmetatable({}, {__mode = "v"})
|
|
|
|
|
|
|
|
naughty.connect_signal("request::display", function()
|
|
|
|
display_count = display_count + 1
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
notifs[1] = notification {
|
|
|
|
title = "test1"
|
|
|
|
}
|
|
|
|
|
|
|
|
notifs[2] = notification {
|
|
|
|
title = "test2"
|
|
|
|
}
|
|
|
|
|
|
|
|
assert(display_count == 0)
|
|
|
|
assert((not notifs[1].timer) or not notifs[1].timer.started)
|
|
|
|
assert((not notifs[2].timer) or not notifs[2].timer.started)
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
assert(display_count == 0)
|
|
|
|
|
|
|
|
naughty.suspended = false
|
|
|
|
|
|
|
|
assert(display_count == 2)
|
|
|
|
assert(#boxes == 2)
|
|
|
|
assert(notifs[1].timer.started)
|
|
|
|
assert(notifs[2].timer.started)
|
|
|
|
|
|
|
|
notifs[3] = notification {
|
|
|
|
title = "test2"
|
|
|
|
}
|
|
|
|
|
|
|
|
naughty.suspended = true
|
|
|
|
|
|
|
|
assert(display_count == 3)
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
assert(display_count == 3)
|
|
|
|
assert(not boxes[1].visible)
|
|
|
|
assert(not boxes[2].visible)
|
|
|
|
assert((not notifs[1].timer) or not notifs[1].timer.started)
|
|
|
|
assert((not notifs[2].timer) or not notifs[2].timer.started)
|
|
|
|
assert((not notifs[3].timer) or not notifs[3].timer.started)
|
|
|
|
|
|
|
|
naughty.suspended = false
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
assert(display_count == 6)
|
|
|
|
assert(not boxes[1].visible)
|
|
|
|
assert(not boxes[2].visible)
|
|
|
|
assert(boxes[4].visible)
|
|
|
|
assert(boxes[5].visible)
|
|
|
|
assert(boxes[6].visible)
|
|
|
|
|
|
|
|
assert(notifs[1].timer.started)
|
|
|
|
assert(notifs[2].timer.started)
|
|
|
|
assert(notifs[3].timer.started)
|
|
|
|
|
|
|
|
setmetatable(boxes, {__mode = "v"})
|
|
|
|
|
|
|
|
notifs[1]:destroy()
|
|
|
|
notifs[2]:destroy()
|
|
|
|
notifs[3]:destroy()
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
collectgarbage("collect")
|
|
|
|
|
|
|
|
if #notifs > 0 then return end
|
|
|
|
if #boxes > 0 then return end
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
2021-10-14 22:59:45 +02:00
|
|
|
-- Test `ignore_suspend`.
|
|
|
|
table.insert(steps, function()
|
|
|
|
naughty.suspended = true
|
|
|
|
display_count = 0
|
|
|
|
|
|
|
|
notifs[1] = notification {
|
|
|
|
title = "test3",
|
|
|
|
ignore_suspend = true,
|
|
|
|
}
|
|
|
|
|
|
|
|
notifs[2] = notification {
|
|
|
|
title = "test4"
|
|
|
|
}
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
if display_count ~= 1 then return end
|
|
|
|
|
|
|
|
notifs[2]:destroy()
|
|
|
|
|
|
|
|
naughty.suspended = false
|
|
|
|
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
|
|
|
table.insert(steps, function()
|
|
|
|
if display_count ~= 1 then return end
|
|
|
|
|
|
|
|
notifs[1]:destroy()
|
|
|
|
|
|
|
|
return true
|
|
|
|
end)
|
|
|
|
|
2021-09-20 06:55:48 +02:00
|
|
|
require("_runner").run_steps(steps)
|