fix: dedupe missing quest lookup logs
This commit is contained in:
+20
-4
@@ -129,6 +129,10 @@ end
|
||||
|
||||
QuestieDB.private.GetLearnerSpawnTable = GetSpawnTable
|
||||
QuestieDB.private.NormalizeLearnerSpawnEntry = NormalizeLearnerSpawnEntry
|
||||
QuestieDB.private.missingQuestLog = QuestieDB.private.missingQuestLog or {}
|
||||
QuestieDB.private.missingNpcLog = QuestieDB.private.missingNpcLog or {}
|
||||
QuestieDB.private.missingObjectLog = QuestieDB.private.missingObjectLog or {}
|
||||
QuestieDB.private.missingItemLog = QuestieDB.private.missingItemLog or {}
|
||||
|
||||
local function _MergeOverride(result, override, rawdata, keyMap)
|
||||
for stringKey, intKey in pairs(keyMap) do
|
||||
@@ -680,7 +684,10 @@ function QuestieDB:GetObject(objectId)
|
||||
end
|
||||
|
||||
if not rawdata and not override then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetObject] data not found for objectID:", objectId)
|
||||
if not QuestieDB.private.missingObjectLog[objectId] then
|
||||
QuestieDB.private.missingObjectLog[objectId] = true
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB:GetObject] data not found for objectID:", objectId)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
@@ -740,7 +747,10 @@ function QuestieDB:GetItem(itemId)
|
||||
end
|
||||
|
||||
if not rawdata and not override then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetItem] data not found for itemID:", itemId)
|
||||
if not QuestieDB.private.missingItemLog[itemId] then
|
||||
QuestieDB.private.missingItemLog[itemId] = true
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB:GetItem] data not found for itemID:", itemId)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
@@ -1628,7 +1638,10 @@ function QuestieDB.GetQuest(questId, ...) -- /dump QuestieDB.GetQuest(867)
|
||||
if (not rawdata) then
|
||||
rawdata = overrideData
|
||||
if (not rawdata) then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB.GetQuest] rawdata is nil for questID:", questId)
|
||||
if not QuestieDB.private.missingQuestLog[questId] then
|
||||
QuestieDB.private.missingQuestLog[questId] = true
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB.GetQuest] rawdata is nil for questID:", questId)
|
||||
end
|
||||
if questId == 0 then
|
||||
Questie:Error("[QuestieDB.GetQuest] rawdata is nil for questID:", questId)
|
||||
end
|
||||
@@ -2243,7 +2256,10 @@ function QuestieDB:GetNPC(npcId)
|
||||
end
|
||||
|
||||
if not rawdata and not override then
|
||||
Questie:Debug(Questie.DEBUG_CRITICAL, "[QuestieDB:GetNPC] data not found for npcID:", npcId)
|
||||
if not QuestieDB.private.missingNpcLog[npcId] then
|
||||
QuestieDB.private.missingNpcLog[npcId] = true
|
||||
Questie:Debug(Questie.DEBUG_INFO, "[QuestieDB:GetNPC] data not found for npcID:", npcId)
|
||||
end
|
||||
return nil
|
||||
end
|
||||
|
||||
|
||||
@@ -242,6 +242,74 @@ describe("QuestieDB quest build guards missing objective tables", function()
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("QuestieDB missing quest logs are deduplicated", function()
|
||||
local originalImport
|
||||
local originalDebug
|
||||
local originalQueryQuest
|
||||
|
||||
before_each(function()
|
||||
dofile("Tests/wow_api_mock.lua")
|
||||
|
||||
local questieLib = {
|
||||
GetTbcLevel = function()
|
||||
return 1, 1
|
||||
end,
|
||||
}
|
||||
local questieCorrections = {
|
||||
hiddenQuests = {},
|
||||
killCreditObjectiveFirst = {},
|
||||
}
|
||||
|
||||
originalImport = QuestieLoader.ImportModule
|
||||
QuestieLoader.ImportModule = function(self, name)
|
||||
if name == "QuestieLib" then
|
||||
return questieLib
|
||||
end
|
||||
if name == "QuestieCorrections" then
|
||||
return questieCorrections
|
||||
end
|
||||
return originalImport(self, name)
|
||||
end
|
||||
|
||||
dofile("Database/QuestieDB.lua")
|
||||
dofile("Database/questDB.lua")
|
||||
|
||||
QuestieDB.private.questCache = {}
|
||||
QuestieDB.private.missingQuestLog = {}
|
||||
|
||||
originalDebug = Questie.Debug
|
||||
Questie.Debug = function(self, level, ...)
|
||||
_G._questie_debug_calls = (_G._questie_debug_calls or 0) + 1
|
||||
end
|
||||
|
||||
originalQueryQuest = QuestieDB.QueryQuest
|
||||
QuestieDB.QueryQuest = function()
|
||||
return nil
|
||||
end
|
||||
end)
|
||||
|
||||
after_each(function()
|
||||
if originalQueryQuest then
|
||||
QuestieDB.QueryQuest = originalQueryQuest
|
||||
end
|
||||
if originalDebug then
|
||||
Questie.Debug = originalDebug
|
||||
end
|
||||
if originalImport then
|
||||
QuestieLoader.ImportModule = originalImport
|
||||
end
|
||||
_G._questie_debug_calls = nil
|
||||
end)
|
||||
|
||||
it("logs a missing quest only once per quest id", function()
|
||||
local questId = 900002
|
||||
|
||||
assert.is_nil(QuestieDB:GetQuest(questId))
|
||||
assert.is_nil(QuestieDB:GetQuest(questId))
|
||||
assert.equals(1, _G._questie_debug_calls)
|
||||
end)
|
||||
end)
|
||||
|
||||
describe("QuestieLearner quest accept resolution", function()
|
||||
local QuestieLearner
|
||||
local originalGetNumQuestLogEntries
|
||||
|
||||
Reference in New Issue
Block a user