87 lines
2.8 KiB
Lua
87 lines
2.8 KiB
Lua
describe("Questie debug throttle", function()
|
|
local originalPrint
|
|
local originalGetTime
|
|
local originalImport
|
|
|
|
before_each(function()
|
|
dofile("Tests/wow_api_mock.lua")
|
|
Questie.Print = nil
|
|
_G.IsLoggedIn = function()
|
|
return false
|
|
end
|
|
_G.C_Timer = _G.C_Timer or {}
|
|
_G.C_Timer.After = function()
|
|
end
|
|
originalImport = QuestieLoader.ImportModule
|
|
QuestieLoader.ImportModule = function(self, name)
|
|
if name == "QuestieLib" then
|
|
return { AddonPath = "" }
|
|
elseif name == "QuestieValidateGameCache" then
|
|
return { StartCheck = function() end }
|
|
end
|
|
return originalImport(self, name)
|
|
end
|
|
dofile("Questie.lua")
|
|
|
|
originalPrint = _G.print
|
|
originalGetTime = _G.GetTime
|
|
|
|
_G._questie_debug_lines = {}
|
|
_G.print = function(...)
|
|
local parts = {}
|
|
for i = 1, select("#", ...) do
|
|
parts[#parts + 1] = tostring(select(i, ...))
|
|
end
|
|
table.insert(_G._questie_debug_lines, table.concat(parts, " "))
|
|
end
|
|
end)
|
|
|
|
after_each(function()
|
|
_G.print = originalPrint
|
|
_G.GetTime = originalGetTime
|
|
QuestieLoader.ImportModule = originalImport
|
|
_G._questie_debug_lines = nil
|
|
end)
|
|
|
|
it("suppresses rapid debug lines until the throttle window reopens", function()
|
|
local now = 0
|
|
_G.GetTime = function()
|
|
return now
|
|
end
|
|
|
|
Questie.db.profile.debugEnabled = true
|
|
Questie.db.profile.debugEnabledPrint = true
|
|
Questie.db.profile.debugLevel = Questie.DEBUG_INFO
|
|
Questie.db.profile.debugMessageThrottle = 0.5
|
|
|
|
Questie:Debug(Questie.DEBUG_INFO, "alpha")
|
|
now = 0.1
|
|
Questie:Debug(Questie.DEBUG_INFO, "beta")
|
|
now = 0.6
|
|
Questie:Debug(Questie.DEBUG_INFO, "gamma")
|
|
|
|
assert.equals(2, table.getn(_G._questie_debug_lines))
|
|
assert.is_true(string.find(_G._questie_debug_lines[1], "alpha", 1, true) ~= nil)
|
|
assert.is_true(string.find(_G._questie_debug_lines[2], "gamma", 1, true) ~= nil)
|
|
end)
|
|
|
|
it("throttles critical messages too because fatal output is separate", function()
|
|
local now = 0
|
|
_G.GetTime = function()
|
|
return now
|
|
end
|
|
|
|
Questie.db.profile.debugEnabled = true
|
|
Questie.db.profile.debugEnabledPrint = true
|
|
Questie.db.profile.debugLevel = Questie.DEBUG_INFO + Questie.DEBUG_CRITICAL
|
|
Questie.db.profile.debugMessageThrottle = 0.5
|
|
|
|
Questie:Debug(Questie.DEBUG_INFO, "alpha")
|
|
now = 0.1
|
|
Questie:Debug(Questie.DEBUG_CRITICAL, "boom")
|
|
|
|
assert.equals(1, table.getn(_G._questie_debug_lines))
|
|
assert.is_true(string.find(_G._questie_debug_lines[1], "alpha", 1, true) ~= nil)
|
|
end)
|
|
end)
|