In order to maintain plenary compatibility (for now, and slightly for other edgecase reasons), avoid converting backslashes to forward slashes.
149 lines
3.5 KiB
Lua
149 lines
3.5 KiB
Lua
local utils = require "telescope.utils"
|
|
|
|
describe("path_expand()", function()
|
|
it("removes trailing /", function()
|
|
assert.is.equal("/home/user", utils.path_expand "/home/user/")
|
|
end)
|
|
|
|
it("works with /", function()
|
|
assert.is.equal("/", utils.path_expand "/")
|
|
end)
|
|
|
|
it("works with ~", function()
|
|
assert.is.equal(vim.loop.os_homedir() .. "/src/foo", utils.path_expand "~/src/foo")
|
|
end)
|
|
|
|
it("handles duplicate /", function()
|
|
assert.is.equal("/home/user", utils.path_expand "/home///user")
|
|
end)
|
|
|
|
it("preserves fake whitespace characters and whitespace", function()
|
|
local path_space = "/home/user/hello world"
|
|
assert.is.equal(path_space, utils.path_expand(path_space))
|
|
local path_newline = [[/home/user/hello\nworld]]
|
|
assert.is.equal(path_newline, utils.path_expand(path_newline))
|
|
end)
|
|
end)
|
|
|
|
describe("is_uri", function()
|
|
describe("detects valid uris", function()
|
|
local uris = {
|
|
[[https://www.example.com/index.html]],
|
|
[[ftp://ftp.example.com/files/document.pdf]],
|
|
[[mailto:user@example.com]],
|
|
[[tel:+1234567890]],
|
|
[[file:///home/user/documents/report.docx]],
|
|
[[news:comp.lang.python]],
|
|
[[ldap://ldap.example.com:389/dc=example,dc=com]],
|
|
[[git://github.com/user/repo.git]],
|
|
[[steam://run/123456]],
|
|
[[magnet:?xt=urn:btih:6B4C3343E1C63A1BC36AEB8A3D1F52C4EDEEB096]],
|
|
}
|
|
|
|
for _, uri in ipairs(uris) do
|
|
it(uri, function()
|
|
assert.True(utils.is_uri(uri))
|
|
end)
|
|
end
|
|
end)
|
|
|
|
describe("detects invalid uris/paths", function()
|
|
local inputs = {
|
|
"hello",
|
|
"hello:",
|
|
"123",
|
|
"",
|
|
}
|
|
for _, input in ipairs(inputs) do
|
|
it(input, function()
|
|
assert.False(utils.is_uri(input))
|
|
end)
|
|
end
|
|
end)
|
|
|
|
describe("handles windows paths", function()
|
|
local paths = {
|
|
[[C:\Users\Usuario\Documents\archivo.txt]],
|
|
[[D:\Projects\project_folder\source_code.py]],
|
|
[[E:\Music\song.mp3]],
|
|
}
|
|
|
|
for _, uri in ipairs(paths) do
|
|
it(uri, function()
|
|
assert.False(utils.is_uri(uri))
|
|
end)
|
|
end
|
|
end)
|
|
|
|
describe("handles linux paths", function()
|
|
local paths = {
|
|
[[/home/usuario/documents/archivo.txt]],
|
|
[[/var/www/html/index.html]],
|
|
[[/mnt/backup/backup_file.tar.gz]],
|
|
}
|
|
|
|
for _, path in ipairs(paths) do
|
|
it(path, function()
|
|
assert.False(utils.is_uri(path))
|
|
end)
|
|
end
|
|
end)
|
|
|
|
describe("handles macos paths", function()
|
|
local paths = {
|
|
[[/Users/Usuario/Documents/archivo.txt]],
|
|
[[/Applications/App.app/Contents/MacOS/app_executable]],
|
|
[[/Volumes/ExternalDrive/Data/file.xlsx]],
|
|
}
|
|
|
|
for _, path in ipairs(paths) do
|
|
it(path, function()
|
|
assert.False(utils.is_uri(path))
|
|
end)
|
|
end
|
|
end)
|
|
end)
|
|
|
|
describe("__separates_file_path_location", function()
|
|
local suites = {
|
|
{
|
|
input = "file.txt:12:4",
|
|
file = "file.txt",
|
|
row = 12,
|
|
col = 4,
|
|
},
|
|
{
|
|
input = "file.txt:12",
|
|
file = "file.txt",
|
|
row = 12,
|
|
col = 0,
|
|
},
|
|
{
|
|
input = "file:12:4",
|
|
file = "file",
|
|
row = 12,
|
|
col = 4,
|
|
},
|
|
{
|
|
input = "file:12:",
|
|
file = "file",
|
|
row = 12,
|
|
col = 0,
|
|
},
|
|
{
|
|
input = "file:",
|
|
file = "file",
|
|
},
|
|
}
|
|
|
|
for _, suite in ipairs(suites) do
|
|
it("separtates file path for " .. suite.input, function()
|
|
local file, row, col = utils.__separate_file_path_location(suite.input)
|
|
|
|
assert.are.equal(file, suite.file)
|
|
assert.are.equal(row, suite.row)
|
|
assert.are.equal(col, suite.col)
|
|
end)
|
|
end
|
|
end)
|