2
0
mirror of https://github.com/koreader/koreader synced 2024-10-31 21:20:20 +00:00
koreader/spec/unit/filemanager_spec.lua
NiLuJe 5499d85cbc
Allow running shell scripts from the FileManager/Favorites (#5804)
* Allow running Shell/Python scripts from the FM

* Show an InfoMessage before/after running the script

Since we're blocking the UI ;).

* Allow running scripts from the favorites menu, too.
2020-02-03 20:08:18 +01:00

106 lines
3.8 KiB
Lua

describe("FileManager module", function()
local FileManager, lfs, docsettings, UIManager, Screen, util
setup(function()
require("commonrequire")
package.unloadAll()
require("document/canvascontext"):init(require("device"))
FileManager = require("apps/filemanager/filemanager")
Screen = require("device").screen
UIManager = require("ui/uimanager")
docsettings = require("docsettings")
lfs = require("libs/libkoreader-lfs")
util = require("ffi/util")
end)
it("should show file manager", function()
UIManager:quit()
local filemanager = FileManager:new{
dimen = Screen:getSize(),
root_path = "../../test",
}
UIManager:show(filemanager)
UIManager:scheduleIn(1, function() UIManager:close(filemanager) end)
UIManager:run()
end)
it("should show error on non-existent file", function()
local filemanager = FileManager:new{
dimen = Screen:getSize(),
root_path = "../../test",
}
local old_show = UIManager.show
local tmp_fn = "/abc/123/test/foo.bar.baz.tmp.epub.pdf"
UIManager.show = function(self, w)
assert.Equals(w.text, "File "..tmp_fn.." not found")
end
assert.is_nil(lfs.attributes(tmp_fn))
filemanager:deleteFile(tmp_fn)
UIManager.show = old_show
end)
it("should not delete settings for non-document file", function()
local filemanager = FileManager:new{
dimen = Screen:getSize(),
root_path = "../../test",
}
local tmp_fn = "../../test/2col.test.tmp.foo"
util.copyFile("../../test/2col.pdf", tmp_fn)
local tmp_sidecar = docsettings:getSidecarDir(util.realpath(tmp_fn))
lfs.mkdir(tmp_sidecar)
local tmp_history = docsettings:getHistoryPath(tmp_fn)
local tmpfp = io.open(tmp_history, "w")
tmpfp:write("{}")
tmpfp:close()
local old_show = UIManager.show
-- make sure file exists
assert.is_not_nil(lfs.attributes(tmp_fn))
assert.is_not_nil(lfs.attributes(tmp_sidecar))
assert.is_not_nil(lfs.attributes(tmp_history))
UIManager.show = function(self, w)
assert.Equals(w.text, "Deleted "..tmp_fn)
end
filemanager:deleteFile(tmp_fn)
UIManager.show = old_show
-- make sure history file exists
assert.is_nil(lfs.attributes(tmp_fn))
assert.is_not_nil(lfs.attributes(tmp_sidecar))
assert.is_not_nil(lfs.attributes(tmp_history))
os.remove(tmp_sidecar)
os.remove(tmp_history)
end)
it("should delete document with its settings", function()
local filemanager = FileManager:new{
dimen = Screen:getSize(),
root_path = "../../test",
}
local tmp_fn = "../../test/2col.test.tmp.pdf"
util.copyFile("../../test/2col.pdf", tmp_fn)
local tmp_sidecar = docsettings:getSidecarDir(util.realpath(tmp_fn))
lfs.mkdir(tmp_sidecar)
local tmp_history = docsettings:getHistoryPath(tmp_fn)
local tmpfp = io.open(tmp_history, "w")
tmpfp:write("{}")
tmpfp:close()
local old_show = UIManager.show
-- make sure file exists
assert.is_not_nil(lfs.attributes(tmp_fn))
assert.is_not_nil(lfs.attributes(tmp_sidecar))
assert.is_not_nil(lfs.attributes(tmp_history))
UIManager.show = function(self, w)
assert.Equals(w.text, "Deleted "..tmp_fn)
end
filemanager:deleteFile(tmp_fn)
UIManager.show = old_show
assert.is_nil(lfs.attributes(tmp_fn))
assert.is_nil(lfs.attributes(tmp_sidecar))
assert.is_nil(lfs.attributes(tmp_history))
end)
end)