Add docsettings unittest

pull/2063/head
Hzj_jie 8 years ago
parent 016aaa92b9
commit cf8c0aa81f

@ -63,15 +63,19 @@ function DocSettings:open(docfile)
-- can handle two files with only different suffixes. -- can handle two files with only different suffixes.
new.sidecar_file = sidecar.."/metadata.".. new.sidecar_file = sidecar.."/metadata."..
docfile:match(".*%.(.*)")..".lua" docfile:match(".*%.(.*)")..".lua"
if docfile:find("/") then
new.legacy_sidecar_file = sidecar.."/"..
docfile:match(".*%/(.*)")..".lua"
else
new.legacy_sidecar_file = sidecar.."/"..docfile..".lua"
end
end end
new.candidates = {} new.candidates = {}
-- New sidecar file -- New sidecar file
table.insert(new.candidates, buildCandidate(new.sidecar_file)) table.insert(new.candidates, buildCandidate(new.sidecar_file))
-- Legacy sidecar file -- Legacy sidecar file
table.insert(new.candidates, buildCandidate( table.insert(new.candidates, buildCandidate(new.legacy_sidecar_file))
sidecar.."/"..
docfile:match(".*%/(.*)")..".lua"))
-- Legacy history folder -- Legacy history folder
table.insert(new.candidates, buildCandidate(new.history_file)) table.insert(new.candidates, buildCandidate(new.history_file))
-- Legacy kpdfview setting -- Legacy kpdfview setting

@ -1,40 +1,76 @@
describe("docsettings module", function() describe("docsettings module", function()
local docsettings local docsettings, lfs
setup(function() setup(function()
require("commonrequire") require("commonrequire")
docsettings = require("docsettings") docsettings = require("docsettings")
lfs = require("libs/libkoreader-lfs")
end) end)
it("should generate sidecar directory path", function() it("should generate sidecar directory path", function()
assert.Equals("../../foo.sdr", docsettings:getSidecarDir("../../foo.pdf")) assert.Equals("../../foo.sdr", docsettings:getSidecarDir("../../foo.pdf"))
assert.Equals("/foo/bar.sdr", docsettings:getSidecarDir("/foo/bar.pdf")) assert.Equals("/foo/bar.sdr", docsettings:getSidecarDir("/foo/bar.pdf"))
assert.Equals("baz.sdr", docsettings:getSidecarDir("baz.pdf")) assert.Equals("baz.sdr", docsettings:getSidecarDir("baz.pdf"))
end) end)
it("should read legacy history file", function() it("should read legacy history file", function()
local file = "file.pdf" local file = "file.pdf"
local d = docsettings:open(file) local d = docsettings:open(file)
d:saveSetting("a", "b") d:saveSetting("a", "b")
d:saveSetting("c", "d")
d:close() d:close()
-- Now the sidecar file should be written. -- Now the sidecar file should be written.
assert.False(os.rename(d.sidecar_file, d.history_file) == nil) local legacy_files = {
d = docsettings:open(file) d.history_file,
assert.Equals(d:readSetting("a"), "b") d.sidecar .. "/file.pdf.lua",
d:close() "file.pdf.kpdfview.lua",
-- history_file should be removed as sidecar_file is preferred. }
for _, f in pairs(legacy_files) do
assert.False(os.rename(d.sidecar_file, f) == nil)
d = docsettings:open(file)
assert.True(os.remove(d.sidecar_file) == nil)
-- Legacy history files should not be removed before flush has been
-- called.
assert.Equals(lfs.attributes(f, "mode"), "file")
assert.Equals(d:readSetting("a"), "b")
assert.Equals(d:readSetting("c"), "d")
assert.Equals(d:readSetting("e"), nil)
d:close()
-- legacy history files should be removed as sidecar_file is
-- preferred.
assert.True(os.remove(f) == nil)
end
assert.False(os.remove(d.sidecar_file) == nil) assert.False(os.remove(d.sidecar_file) == nil)
assert.True(os.remove(d.history_file) == nil) d:purge()
end)
it("should respect newest history file", function()
local file = "file.pdf"
local d = docsettings:open(file)
local legacy_files = {
d.history_file,
d.sidecar .. "/file.pdf.lua",
"file.pdf.kpdfview.lua",
}
-- docsettings:flush will remove legacy files.
for i, v in pairs(legacy_files) do
d:saveSetting("a", i)
d:flush()
assert.False(os.rename(d.sidecar_file, v.."1") == nil)
end
assert.False(os.rename(d.sidecar_file, d.sidecar .. "/file.lua") == nil)
d = docsettings:open(file)
assert.Equals(d:readSetting("a"), "b")
d:close() d:close()
for _, v in pairs(legacy_files) do
assert.False(os.rename(v.."1", v) == nil)
end
assert.False(os.rename(d.sidecar_file, "file.kpdfview.lua") == nil)
d = docsettings:open(file) d = docsettings:open(file)
assert.Equals(d:readSetting("a"), "b") assert.Equals(d:readSetting("a"), #legacy_files)
d:close() d:close()
d:purge() d:purge()
end) end)
end) end)

Loading…
Cancel
Save