mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
@@ -1,5 +1,8 @@
|
||||
describe("docsettings module", function()
|
||||
local DataStorage, docsettings, docsettings_dir, ffiutil, lfs
|
||||
local getSidecarFile = function(doc_path)
|
||||
return docsettings:getSidecarDir(doc_path).."/"..docsettings.getSidecarFilename(doc_path)
|
||||
end
|
||||
|
||||
setup(function()
|
||||
require("commonrequire")
|
||||
@@ -33,20 +36,15 @@ describe("docsettings module", function()
|
||||
|
||||
it("should generate sidecar metadata file (book folder)", function()
|
||||
G_reader_settings:saveSetting("document_metadata_folder", "doc")
|
||||
assert.Equals("../../foo.sdr/metadata.pdf.lua",
|
||||
docsettings:getSidecarFile("../../foo.pdf"))
|
||||
assert.Equals("/foo/bar.sdr/metadata.pdf.lua",
|
||||
docsettings:getSidecarFile("/foo/bar.pdf"))
|
||||
assert.Equals("baz.sdr/metadata.epub.lua",
|
||||
docsettings:getSidecarFile("baz.epub"))
|
||||
assert.Equals("../../foo.sdr/metadata.pdf.lua", getSidecarFile("../../foo.pdf"))
|
||||
assert.Equals("/foo/bar.sdr/metadata.pdf.lua", getSidecarFile("/foo/bar.pdf"))
|
||||
assert.Equals("baz.sdr/metadata.epub.lua", getSidecarFile("baz.epub"))
|
||||
end)
|
||||
|
||||
it("should generate sidecar metadata file (docsettings folder)", function()
|
||||
G_reader_settings:saveSetting("document_metadata_folder", "dir")
|
||||
assert.Equals(docsettings_dir.."/foo/bar.sdr/metadata.pdf.lua",
|
||||
docsettings:getSidecarFile("/foo/bar.pdf"))
|
||||
assert.Equals(docsettings_dir.."baz.sdr/metadata.epub.lua",
|
||||
docsettings:getSidecarFile("baz.epub"))
|
||||
assert.Equals(docsettings_dir.."/foo/bar.sdr/metadata.pdf.lua", getSidecarFile("/foo/bar.pdf"))
|
||||
assert.Equals(docsettings_dir.."baz.sdr/metadata.epub.lua", getSidecarFile("baz.epub"))
|
||||
end)
|
||||
|
||||
it("should read legacy history file", function()
|
||||
@@ -65,9 +63,9 @@ describe("docsettings module", function()
|
||||
}
|
||||
|
||||
for _, f in ipairs(legacy_files) do
|
||||
assert.False(os.rename(d.doc_sidecar_file, f) == nil)
|
||||
assert.False(os.rename(d.doc_sidecar_dir.."/"..d.sidecar_filename, f) == nil)
|
||||
d = docsettings:open(file)
|
||||
assert.True(os.remove(d.doc_sidecar_file) == nil)
|
||||
assert.True(os.remove(d.doc_sidecar_dir.."/"..d.sidecar_filename) == nil)
|
||||
-- Legacy history files should not be removed before flush has been
|
||||
-- called.
|
||||
assert.Equals(lfs.attributes(f, "mode"), "file")
|
||||
@@ -80,7 +78,7 @@ describe("docsettings module", function()
|
||||
assert.True(os.remove(f) == nil)
|
||||
end
|
||||
|
||||
assert.False(os.remove(d.doc_sidecar_file) == nil)
|
||||
assert.False(os.remove(d.doc_sidecar_dir.."/"..d.sidecar_filename) == nil)
|
||||
d:purge()
|
||||
end)
|
||||
|
||||
@@ -98,7 +96,7 @@ describe("docsettings module", function()
|
||||
for i, v in ipairs(legacy_files) do
|
||||
d:saveSetting("a", i)
|
||||
d:flush()
|
||||
assert.False(os.rename(d.doc_sidecar_file, v.."1") == nil)
|
||||
assert.False(os.rename(d.doc_sidecar_dir.."/"..d.sidecar_filename, v.."1") == nil)
|
||||
end
|
||||
|
||||
d:close()
|
||||
@@ -127,33 +125,33 @@ describe("docsettings module", function()
|
||||
d:saveSetting("a", "a")
|
||||
d:flush()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
d:flush()
|
||||
-- metadata.pdf.lua.old should not yet be generated.
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
-- make metadata.pdf.lua older to bypass 60s age needed for .old rotation
|
||||
local minutes_ago = os.time() - 120
|
||||
lfs.touch(d.doc_sidecar_file, minutes_ago)
|
||||
lfs.touch(d.doc_sidecar_dir.."/"..d.sidecar_filename, minutes_ago)
|
||||
d:close()
|
||||
-- metadata.pdf.lua and metadata.pdf.lua.old should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
|
||||
-- write some garbage to sidecar-file.
|
||||
local f_out = io.open(d.doc_sidecar_file, "w")
|
||||
local f_out = io.open(d.doc_sidecar_dir.."/"..d.sidecar_filename, "w")
|
||||
f_out:write("bla bla bla")
|
||||
f_out:close()
|
||||
|
||||
d = docsettings:open(file)
|
||||
-- metadata.pdf.lua should be removed.
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
assert.Equals("a", d:readSetting("a"))
|
||||
d:saveSetting("a", "b")
|
||||
d:close()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
-- The contents in sidecar_file and sidecar_file.old are different.
|
||||
-- a:b v.s. a:a
|
||||
|
||||
@@ -161,21 +159,21 @@ describe("docsettings module", function()
|
||||
-- The content should come from sidecar_file.
|
||||
assert.Equals("b", d:readSetting("a"))
|
||||
-- write some garbage to sidecar-file.
|
||||
f_out = io.open(d.doc_sidecar_file, "w")
|
||||
f_out = io.open(d.doc_sidecar_dir.."/"..d.sidecar_filename, "w")
|
||||
f_out:write("bla bla bla")
|
||||
f_out:close()
|
||||
|
||||
-- do not flush the result, open docsettings again.
|
||||
d = docsettings:open(file)
|
||||
-- metadata.pdf.lua should be removed.
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
-- The content should come from sidecar_file.old.
|
||||
assert.Equals("a", d:readSetting("a"))
|
||||
d:close()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
end)
|
||||
|
||||
describe("ignore empty sidecar file", function()
|
||||
@@ -186,29 +184,29 @@ describe("docsettings module", function()
|
||||
d:saveSetting("a", "a")
|
||||
d:flush()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
-- make metadata.pdf.lua older to bypass 60s age needed for .old rotation
|
||||
local minutes_ago = os.time() - 120
|
||||
lfs.touch(d.doc_sidecar_file, minutes_ago)
|
||||
lfs.touch(d.doc_sidecar_dir.."/"..d.sidecar_filename, minutes_ago)
|
||||
d:close()
|
||||
-- metadata.pdf.lua and metadata.pdf.lua.old should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
|
||||
-- reset the sidecar_file to an empty file.
|
||||
local f_out = io.open(d.doc_sidecar_file, "w")
|
||||
local f_out = io.open(d.doc_sidecar_dir.."/"..d.sidecar_filename, "w")
|
||||
f_out:close()
|
||||
|
||||
d = docsettings:open(file)
|
||||
-- metadata.pdf.lua should be removed.
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
assert.Equals("a", d:readSetting("a"))
|
||||
d:saveSetting("a", "b")
|
||||
d:close()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
-- The contents in sidecar_file and sidecar_file.old are different.
|
||||
-- a:b v.s. a:a
|
||||
end)
|
||||
@@ -220,30 +218,30 @@ describe("docsettings module", function()
|
||||
d:saveSetting("a", "a")
|
||||
d:flush()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
-- make metadata.pdf.lua older to bypass 60s age needed for .old rotation
|
||||
local minutes_ago = os.time() - 120
|
||||
lfs.touch(d.doc_sidecar_file, minutes_ago)
|
||||
lfs.touch(d.doc_sidecar_dir.."/"..d.sidecar_filename, minutes_ago)
|
||||
d:close()
|
||||
-- metadata.pdf.lua and metadata.pdf.lua.old should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
|
||||
-- reset the sidecar_file to an empty file.
|
||||
local f_out = io.open(d.doc_sidecar_file, "w")
|
||||
local f_out = io.open(d.doc_sidecar_dir.."/"..d.sidecar_filename, "w")
|
||||
f_out:write("{ } ")
|
||||
f_out:close()
|
||||
|
||||
d = docsettings:open(file)
|
||||
-- metadata.pdf.lua should be removed.
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.are.not_equal("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
assert.Equals("a", d:readSetting("a"))
|
||||
d:saveSetting("a", "b")
|
||||
d:close()
|
||||
-- metadata.pdf.lua should be generated.
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_file .. ".old", "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename, "mode"))
|
||||
assert.Equals("file", lfs.attributes(d.doc_sidecar_dir.."/"..d.sidecar_filename .. ".old", "mode"))
|
||||
-- The contents in sidecar_file and sidecar_file.old are different.
|
||||
-- a:b v.s. a:a
|
||||
end)
|
||||
|
||||
Reference in New Issue
Block a user