Unbreak ReaderFooter test

Tests: Update the ffi.metatype wrapper

(Better idea: move to busted master).
reviewable/pr7711/r1
NiLuJe 3 years ago
parent 189035cafc
commit 6dc1c1efca

@ -405,7 +405,7 @@ ReaderFooter.default_settings = {
wifi_status = false, wifi_status = false,
book_title = false, book_title = false,
book_chapter = false, book_chapter = false,
bookmark_count = true, bookmark_count = false,
item_prefix = "icons", item_prefix = "icons",
toc_markers_width = 2, -- unscaled_size_check: ignore toc_markers_width = 2, -- unscaled_size_check: ignore
text_font_size = 14, -- unscaled_size_check: ignore text_font_size = 14, -- unscaled_size_check: ignore

@ -1,12 +1,37 @@
-- don't try to overwrite metatables so we can use --auto-insulate-tests -- Check if we're running a busted version recent enough that we don't need to deal with the LuaJIT hacks...
-- shamelessly copied from https://github.com/Olivine-Labs/busted/commit/db6d8b4be8fd099ab387efeb8232cfd905912abb -- That currently means > 2.0.0 (i.e., scm-2, which isn't on LuaRocks...).
local ffi = require "ffi" local busted_ok = false
local old_metatype = ffi.metatype for name, _ in pairs(package.loaded) do
local exists = {} if name == "busted.luajit" then
ffi.metatype = function(def, mttable) busted_ok = true
if exists[def] then return exists[def] end break
exists[def] = old_metatype(def, mttable) end
return exists[def] end
-- Don't try to overwrite metatables so we can use --auto-insulate-tests
-- Shamelessly copied from https://github.com/Olivine-Labs/busted/commit/2dfff99bda01fd3da56fd23415aba5a2a4cc0ffd
if not busted_ok then
local ffi = require "ffi"
local original_metatype = ffi.metatype
local original_store = {}
ffi.metatype = function (primary, ...)
if original_store[primary] then
return original_store[primary]
end
local success, result, err = pcall(original_metatype, primary, ...)
if not success then
-- hard error was thrown
error(result, 2)
end
if not result then
-- soft error was returned
return result, err
end
-- it worked, store and return
original_store[primary] = result
return result
end
end end
require "defaults" require "defaults"

@ -1,5 +1,5 @@
describe("Readerfooter module", function() describe("Readerfooter module", function()
local DocumentRegistry, ReaderUI, DocSettings, UIManager local DocumentRegistry, ReaderUI, ReaderFooter, DocSettings, UIManager
local purgeDir, Screen local purgeDir, Screen
local tapFooterMenu local tapFooterMenu
@ -19,6 +19,7 @@ describe("Readerfooter module", function()
DocumentRegistry = require("document/documentregistry") DocumentRegistry = require("document/documentregistry")
DocSettings = require("docsettings") DocSettings = require("docsettings")
ReaderUI = require("apps/reader/readerui") ReaderUI = require("apps/reader/readerui")
ReaderFooter = require("apps/reader/modules/readerfooter")
UIManager = require("ui/uimanager") UIManager = require("ui/uimanager")
purgeDir = require("ffi/util").purgeDir purgeDir = require("ffi/util").purgeDir
Screen = require("device").screen Screen = require("device").screen
@ -54,6 +55,16 @@ describe("Readerfooter module", function()
end end
error('Menu item not found: "Status bar"!') error('Menu item not found: "Status bar"!')
end end
--[[
function resetSettings()
local settings = G_reader_settings:readSetting("footer", {})
for k, v in pairs(ReaderFooter.default_settings) do
settings[k] = v
end
return settings
end
--]]
end) end)
teardown(function() teardown(function()
@ -64,18 +75,21 @@ describe("Readerfooter module", function()
end) end)
before_each(function() before_each(function()
G_reader_settings:saveSetting("footer", { local settings = G_reader_settings:readSetting("footer", ReaderFooter.default_settings)
disabled = false, -- NOTE: This is screwing with a few of the later tests,
all_at_once = true, -- where we basically do a weird dance of "reset to defaults" -> "disable all this"
toc_markers = true, settings.disabled = false
battery = true, settings.all_at_once = true
time = true, settings.toc_markers = true
page_progress = true, settings.battery = true
pages_left = true, settings.time = true
percentage = true, settings.page_progress = true
book_time_to_read = true, settings.pages_left = true
chapter_time_to_read = true, settings.percentage = true
}) settings.book_time_to_read = true
settings.chapter_time_to_read = true
G_reader_settings:saveSetting("footer", settings)
-- NOTE: Forcefully disable the statistics plugin, as lj-sqlite3 is horribly broken under Busted, -- NOTE: Forcefully disable the statistics plugin, as lj-sqlite3 is horribly broken under Busted,
-- causing it to erratically fail to load, affecting the results of this test... -- causing it to erratically fail to load, affecting the results of this test...
G_reader_settings:saveSetting("plugins_disabled", { G_reader_settings:saveSetting("plugins_disabled", {
@ -101,18 +115,18 @@ describe("Readerfooter module", function()
end) end)
it("should setup footer as visible not in all_at_once", function() it("should setup footer as visible not in all_at_once", function()
G_reader_settings:saveSetting("footer", { local settings = G_reader_settings:readSetting("footer")
disabled = false, settings.disabled = false
all_at_once = false, settings.all_at_once = false
toc_markers = true, settings.toc_markers = true
battery = true, settings.battery = true
time = true, settings.time = true
page_progress = true, settings.page_progress = true
pages_left = true, settings.pages_left = true
percentage = true, settings.percentage = true
book_time_to_read = true, settings.book_time_to_read = true
chapter_time_to_read = true, settings.chapter_time_to_read = true
}) G_reader_settings:saveSetting("footer", settings)
G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("reader_footer_mode", 1)
local sample_pdf = "spec/front/unit/data/2col.pdf" local sample_pdf = "spec/front/unit/data/2col.pdf"
purgeDir(DocSettings:getSidecarDir(sample_pdf)) purgeDir(DocSettings:getSidecarDir(sample_pdf))
@ -390,9 +404,9 @@ describe("Readerfooter module", function()
purgeDir(DocSettings:getSidecarDir(sample_epub)) purgeDir(DocSettings:getSidecarDir(sample_epub))
os.remove(DocSettings:getHistoryPath(sample_epub)) os.remove(DocSettings:getHistoryPath(sample_epub))
G_reader_settings:saveSetting("footer", { local settings = G_reader_settings:readSetting("footer")
toc_markers = true, settings.toc_markers = true
}) G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
@ -419,11 +433,13 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("footer", {
auto_refresh_time = true, local settings = G_reader_settings:readSetting("footer")
all_at_once = true, settings.auto_refresh_time = true
time = true, settings.all_at_once = true
}) settings.time = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -456,12 +472,14 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("footer", {
disabled = true, local settings = G_reader_settings:readSetting("footer")
auto_refresh_time = true, settings.disabled = true
all_at_once = true, settings.auto_refresh_time = true
time = true, settings.all_at_once = true
}) settings.time = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -485,12 +503,14 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("footer", {
disabled = false, local settings = G_reader_settings:readSetting("footer")
auto_refresh_time = true, settings.disabled = false
all_at_once = true, settings.auto_refresh_time = true
time = true, settings.all_at_once = true
}) settings.time = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf), document = DocumentRegistry:openDocument(sample_pdf),
@ -541,12 +561,15 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("reader_footer_mode", 1)
G_reader_settings:saveSetting("footer", { local settings = G_reader_settings:readSetting("footer")
disabled = false, settings.disabled = false
page_progress = true, settings.all_at_once = false
time = true, settings.page_progress = true
}) settings.time = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf), document = DocumentRegistry:openDocument(sample_pdf),
@ -584,11 +607,18 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("footer", {
all_at_once = true, local settings = G_reader_settings:readSetting("footer")
page_progress = true, settings.all_at_once = true
pages_left = true, settings.page_progress = true
}) settings.pages_left = true
settings.battery = false
settings.time = false
settings.percentage = false
settings.book_time_to_read = false
settings.chapter_time_to_read = false
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf), document = DocumentRegistry:openDocument(sample_pdf),
@ -617,12 +647,14 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("reader_footer_mode", 0) G_reader_settings:saveSetting("reader_footer_mode", 0)
G_reader_settings:saveSetting("footer", { local settings = G_reader_settings:readSetting("footer")
all_at_once = true, settings.all_at_once = true
page_progress = true, settings.page_progress = true
pages_left = true, settings.pages_left = true
}) G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_pdf) document = DocumentRegistry:openDocument(sample_pdf)
@ -643,7 +675,19 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
assert.are.same({}, UIManager._task_queue) assert.are.same({}, UIManager._task_queue)
G_reader_settings:saveSetting("footer", {})
G_reader_settings:saveSetting("footer", ReaderFooter.default_settings)
local settings = G_reader_settings:readSetting("footer")
settings.all_at_once = false
settings.battery = false
settings.time = false
settings.page_progress = false
settings.pages_left = false
settings.percentage = false
settings.book_time_to_read = false
settings.chapter_time_to_read = false
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -682,7 +726,10 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
G_reader_settings:saveSetting("reader_footer_mode", 2) G_reader_settings:saveSetting("reader_footer_mode", 2)
G_reader_settings:saveSetting("footer", { time = true }) local settings = G_reader_settings:readSetting("footer")
settings.time = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -703,7 +750,18 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("reader_footer_mode", 1)
G_reader_settings:saveSetting("footer", {}) G_reader_settings:saveSetting("footer", ReaderFooter.default_settings)
local settings = G_reader_settings:readSetting("footer")
settings.all_at_once = false
settings.battery = false
settings.time = false
settings.page_progress = false
settings.pages_left = false
settings.percentage = false
settings.book_time_to_read = false
settings.chapter_time_to_read = false
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -724,7 +782,19 @@ describe("Readerfooter module", function()
UIManager:quit() UIManager:quit()
G_reader_settings:saveSetting("reader_footer_mode", 1) G_reader_settings:saveSetting("reader_footer_mode", 1)
G_reader_settings:saveSetting("footer", {disable_progress_bar = true}) G_reader_settings:saveSetting("footer", ReaderFooter.default_settings)
local settings = G_reader_settings:readSetting("footer")
settings.all_at_once = false
settings.battery = false
settings.time = false
settings.page_progress = false
settings.pages_left = false
settings.percentage = false
settings.book_time_to_read = false
settings.chapter_time_to_read = false
settings.disable_progress_bar = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),
@ -743,7 +813,10 @@ describe("Readerfooter module", function()
os.remove(DocSettings:getHistoryPath(sample_epub)) os.remove(DocSettings:getHistoryPath(sample_epub))
UIManager:quit() UIManager:quit()
G_reader_settings:saveSetting("footer", { disabled = true }) local settings = G_reader_settings:readSetting("footer")
settings.disabled = true
G_reader_settings:saveSetting("footer", settings)
local readerui = ReaderUI:new{ local readerui = ReaderUI:new{
dimen = Screen:getSize(), dimen = Screen:getSize(),
document = DocumentRegistry:openDocument(sample_epub), document = DocumentRegistry:openDocument(sample_epub),

Loading…
Cancel
Save