66 lines
2.3 KiB
Lua
66 lines
2.3 KiB
Lua
describe("cc.shell.completion", function()
|
|
local c = require "cc.shell.completion"
|
|
|
|
describe("dirOrFile", function()
|
|
it("completes both", function()
|
|
expect(c.dirOrFile(shell, "rom/")):same {
|
|
"apis/", "apis", "autorun/", "autorun", "help/", "help",
|
|
"modules/", "modules", "motd.txt", "programs/", "programs", "startup.lua",
|
|
}
|
|
end)
|
|
|
|
it("adds a space", function()
|
|
expect(c.dirOrFile(shell, "rom/", nil, true)):same {
|
|
"apis/", "apis ", "autorun/", "autorun ", "help/", "help ",
|
|
"modules/", "modules ", "motd.txt ", "programs/", "programs ", "startup.lua ",
|
|
}
|
|
end)
|
|
end)
|
|
|
|
describe("program", function()
|
|
it("completes programs", function()
|
|
expect(c.program(shell, "rom/")):same {
|
|
"apis/", "autorun/", "help/", "modules/", "motd.txt", "programs/", "startup.lua",
|
|
}
|
|
end)
|
|
end)
|
|
|
|
describe("programWithArgs", function()
|
|
it("completes program name", function()
|
|
shell.setCompletionFunction("rom/motd.txt", function() end)
|
|
expect(c.programWithArgs(shell, "rom/", { "rom/programs/shell.lua" }, 2)):same {
|
|
"apis/", "autorun/", "help/", "modules/", "motd.txt ", "programs/", "startup.lua",
|
|
}
|
|
end)
|
|
|
|
it("completes program arguments", function()
|
|
expect(c.programWithArgs(shell, "", { "rom/programs/shell.lua", "pastebin" }, 2)):same {
|
|
"put ", "get ", "run ",
|
|
}
|
|
end)
|
|
|
|
end)
|
|
|
|
describe("build", function()
|
|
it("completes multiple arguments", function()
|
|
local spec = c.build(
|
|
function() return { "a", "b", "c" } end,
|
|
nil,
|
|
{ c.choice, { "d", "e", "f" } }
|
|
)
|
|
|
|
expect(spec(shell, 1, "")):same { "a", "b", "c" }
|
|
expect(spec(shell, 2, "")):same(nil)
|
|
expect(spec(shell, 3, "")):same { "d", "e", "f" }
|
|
expect(spec(shell, 4, "")):same(nil)
|
|
end)
|
|
|
|
it("supports variadic completions", function()
|
|
local spec = c.build({ function() return { "a", "b", "c" } end, many = true })
|
|
|
|
expect(spec(shell, 1, "")):same({ "a", "b", "c" })
|
|
expect(spec(shell, 2, "")):same({ "a", "b", "c" })
|
|
end)
|
|
end)
|
|
end)
|