Files
telescope.nvim/lua/tests/automated/utils_spec.lua
T
Dmitriy Kovalenko 0dfe9e1edf feat: Support Line Column in file pickers
Original issue: When selecting files in telescope iti is impossible to
enter paths from compiler that includes cursor locations, you need to clear it from the path.

This commit fixes the problem by stripping out the location from path
(important: only for file pickes) and using this location to set the
cursor when openning the file and highlight the line or poisition in the
previewer.

This feature requires a new option for a picker, whichi for now is basically
enabling location stripping but it is helpful for any file picker
builtin or external one.

By default equals `false` becuase most of pickers like live grep,
current buffer fuzy are messed up with locations stripping. It is only
useful for file searches.

Added test suite that covers alghoritm of stripping the location to the
`utils_spec.lua`
2023-11-20 10:39:49 +01:00

126 lines
2.8 KiB
Lua

local utils = require "telescope.utils"
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",
row = 0,
col = 0,
},
}
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)