mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 09:00:06 +08:00
43 lines
1.3 KiB
Lua
Vendored
43 lines
1.3 KiB
Lua
Vendored
local scandir = require "plenary.scandir"
|
|
local Path = require "plenary.path"
|
|
|
|
local eq = assert.are.same
|
|
|
|
describe("plenary.popup", function()
|
|
local allowed_imports = {
|
|
["plenary.window"] = true,
|
|
["plenary.window.border"] = true,
|
|
}
|
|
|
|
local matches_any_import = function(line)
|
|
local matched = string.match(line, [[require."(.*)"]])
|
|
if matched and not vim.startswith(matched, "plenary.popup") then
|
|
if not allowed_imports[matched] then
|
|
return true, string.format("Not an allowed import for popup: %s. Line: %s", matched, line)
|
|
end
|
|
end
|
|
|
|
return false, nil
|
|
end
|
|
|
|
-- Tests to make sure that we're matching both types of requires
|
|
it("should match these kinds of patterns", function()
|
|
eq(true, matches_any_import [[local x = require "plenary.other"]])
|
|
eq(true, matches_any_import [[local x = require("plenary.module").something]])
|
|
end)
|
|
|
|
it("must not require anything other than Window and Border from plenary", function()
|
|
local result = scandir.scan_dir("./lua/plenary/popup", { depth = 1 })
|
|
|
|
for _, file in ipairs(result) do
|
|
local popup_file = Path:new(file)
|
|
local lines = popup_file:readlines()
|
|
|
|
for _, line in ipairs(lines) do
|
|
local matches, msg = matches_any_import(line)
|
|
eq(false, matches, msg)
|
|
end
|
|
end
|
|
end)
|
|
end)
|