@@ -30,17 +30,16 @@ tester.picker_feed = function(input, test_cases, debug)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.wait(100, function() end)
|
vim.wait(10, function() end)
|
||||||
|
|
||||||
local timer = vim.loop.new_timer()
|
local timer = vim.loop.new_timer()
|
||||||
timer:start(200, 0, vim.schedule_wrap(function()
|
timer:start(20, 0, vim.schedule_wrap(function()
|
||||||
if test_cases.post_close then
|
if test_cases.post_close then
|
||||||
for k, v in ipairs(test_cases.post_close) do
|
for k, v in ipairs(test_cases.post_close) do
|
||||||
io.stderr:write(vim.fn.json_encode({ case = k, expected = v[1], actual = v[2]() }))
|
io.stderr:write(vim.fn.json_encode({ case = k, expected = v[1], actual = v[2]() }))
|
||||||
io.stderr:write("\n")
|
io.stderr:write("\n")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
vim.wait(10)
|
|
||||||
|
|
||||||
if debug then
|
if debug then
|
||||||
return
|
return
|
||||||
@@ -48,7 +47,7 @@ tester.picker_feed = function(input, test_cases, debug)
|
|||||||
|
|
||||||
vim.defer_fn(function()
|
vim.defer_fn(function()
|
||||||
vim.cmd [[qa!]]
|
vim.cmd [[qa!]]
|
||||||
end, 15)
|
end, 10)
|
||||||
end))
|
end))
|
||||||
|
|
||||||
if not debug then
|
if not debug then
|
||||||
@@ -74,10 +73,25 @@ end
|
|||||||
-- { "README.md", function() return "README.md" end },
|
-- { "README.md", function() return "README.md" end },
|
||||||
-- },
|
-- },
|
||||||
-- }
|
-- }
|
||||||
|
|
||||||
|
local _VALID_KEYS = {
|
||||||
|
post_typed = true,
|
||||||
|
post_close = true,
|
||||||
|
}
|
||||||
|
|
||||||
tester.builtin_picker = function(key, input, test_cases, opts)
|
tester.builtin_picker = function(key, input, test_cases, opts)
|
||||||
opts = opts or {}
|
opts = opts or {}
|
||||||
local debug = opts.debug or false
|
local debug = opts.debug or false
|
||||||
|
|
||||||
|
for k, _ in pairs(test_cases) do
|
||||||
|
if not _VALID_KEYS[k] then
|
||||||
|
-- TODO: Make an error type for the json protocol.
|
||||||
|
io.stderr:write(vim.fn.json_encode({ case = k, expected = '<a valid key>', actual = k }))
|
||||||
|
io.stderr:write("\n")
|
||||||
|
vim.cmd [[qa!]]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
opts.on_complete = {
|
opts.on_complete = {
|
||||||
tester.picker_feed(input, test_cases, debug)
|
tester.picker_feed(input, test_cases, debug)
|
||||||
}
|
}
|
||||||
@@ -119,32 +133,10 @@ tester.run_string = function(contents)
|
|||||||
local tempname = vim.fn.tempname()
|
local tempname = vim.fn.tempname()
|
||||||
|
|
||||||
contents = [[
|
contents = [[
|
||||||
-- TODO: Add globals!
|
local tester = require('telescope.pickers._test')
|
||||||
-- local tester = require('telescope.pickers._tests')
|
local helper = require('telescope.pickers._test_helpers')
|
||||||
local tester = require('telescope.pickers._tests')
|
|
||||||
|
|
||||||
local get_picker = function()
|
helper.make_globals()
|
||||||
local state = require('telescope.state')
|
|
||||||
return state.get_status(vim.api.nvim_get_current_buf()).picker
|
|
||||||
end
|
|
||||||
|
|
||||||
local get_results_bufnr = function()
|
|
||||||
local state = require('telescope.state')
|
|
||||||
return state.get_status(vim.api.nvim_get_current_buf()).results_bufnr
|
|
||||||
end
|
|
||||||
|
|
||||||
local GetFile = function() return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":t") end
|
|
||||||
|
|
||||||
local GetPrompt = function() return vim.api.nvim_buf_get_lines(0, 0, -1, false)[1] end
|
|
||||||
|
|
||||||
local GetResults = function()
|
|
||||||
return vim.api.nvim_buf_get_lines(get_results_bufnr(), 0, -1, false)
|
|
||||||
end
|
|
||||||
|
|
||||||
local GetLastResult = function()
|
|
||||||
local results = GetResults()
|
|
||||||
return results[#results]
|
|
||||||
end
|
|
||||||
]] .. contents
|
]] .. contents
|
||||||
|
|
||||||
vim.fn.writefile(vim.split(contents, "\n"), tempname)
|
vim.fn.writefile(vim.split(contents, "\n"), tempname)
|
||||||
@@ -162,6 +154,4 @@ tester.run_file = function(filename)
|
|||||||
assert.are.same(result_table.expected, result_table.actual)
|
assert.are.same(result_table.expected, result_table.actual)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return tester
|
return tester
|
||||||
50
lua/telescope/pickers/_test_helpers.lua
Normal file
50
lua/telescope/pickers/_test_helpers.lua
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
local test_helpers = {}
|
||||||
|
|
||||||
|
test_helpers.get_picker = function()
|
||||||
|
local state = require('telescope.state')
|
||||||
|
return state.get_status(vim.api.nvim_get_current_buf()).picker
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_results_bufnr = function()
|
||||||
|
local state = require('telescope.state')
|
||||||
|
return state.get_status(vim.api.nvim_get_current_buf()).results_bufnr
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_file = function()
|
||||||
|
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":t")
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_prompt = function()
|
||||||
|
return vim.api.nvim_buf_get_lines(0, 0, -1, false)[1]
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_results = function()
|
||||||
|
return vim.api.nvim_buf_get_lines(test_helpers.get_results_bufnr(), 0, -1, false)
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_last_result = function()
|
||||||
|
local results = test_helpers.get_results()
|
||||||
|
return results[#results]
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_selection = function()
|
||||||
|
local state = require('telescope.state')
|
||||||
|
return state.get_global_key('selected_entry')
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.get_selection_value = function()
|
||||||
|
return test_helpers.get_selection().value
|
||||||
|
end
|
||||||
|
|
||||||
|
test_helpers.make_globals = function()
|
||||||
|
GetFile = test_helpers.get_file -- luacheck: globals GetFile
|
||||||
|
GetPrompt = test_helpers.get_prompt -- luacheck: globals GetPrompt
|
||||||
|
|
||||||
|
GetResults = test_helpers.get_results -- luacheck: globals GetResults
|
||||||
|
GetLastResult = test_helpers.get_last_result -- luacheck: globals GetLastResult
|
||||||
|
|
||||||
|
GetSelection = test_helpers.get_selection -- luacheck: globals GetSelection
|
||||||
|
GetSelectionValue = test_helpers.get_selection_value -- luacheck: globals GetSelectionValue
|
||||||
|
end
|
||||||
|
|
||||||
|
return test_helpers
|
||||||
@@ -1,12 +1,16 @@
|
|||||||
require('plenary.reload').reload_module('telescope')
|
require('plenary.reload').reload_module('telescope')
|
||||||
|
|
||||||
local tester = require('telescope.pickers._tests')
|
local tester = require('telescope.pickers._test')
|
||||||
|
|
||||||
describe('builtin.find_files', function()
|
describe('builtin.find_files', function()
|
||||||
it('should find the readme', function()
|
it('should find the readme', function()
|
||||||
tester.run_file('find_files__readme')
|
tester.run_file('find_files__readme')
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('should be able to move selections', function()
|
||||||
|
tester.run_file('find_files__with_ctrl_n')
|
||||||
|
end)
|
||||||
|
|
||||||
it('should not display devicons when disabled', function()
|
it('should not display devicons when disabled', function()
|
||||||
tester.run_string [[
|
tester.run_string [[
|
||||||
tester.builtin_picker('find_files', 'README.md', {
|
tester.builtin_picker('find_files', 'README.md', {
|
||||||
@@ -105,4 +109,14 @@ describe('builtin.find_files', function()
|
|||||||
})
|
})
|
||||||
]]
|
]]
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('should be able to get the current selection', function()
|
||||||
|
tester.run_string [[
|
||||||
|
tester.builtin_picker('find_files', 'fixtures/file_abc', {
|
||||||
|
post_typed = {
|
||||||
|
{ 'lua/tests/fixtures/file_abc.txt', GetSelectionValue },
|
||||||
|
}
|
||||||
|
})
|
||||||
|
]]
|
||||||
|
end)
|
||||||
end)
|
end)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
local tester = require('telescope.pickers._tests')
|
local tester = require('telescope.pickers._test')
|
||||||
|
|
||||||
tester.builtin_picker('find_files', 'README.md', {
|
tester.builtin_picker('find_files', 'README.md', {
|
||||||
post_close = {
|
post_close = {
|
||||||
|
|||||||
@@ -1,24 +1,9 @@
|
|||||||
pcall(function() RELOAD('telescope') end)
|
local tester = require('telescope.pickers._test')
|
||||||
|
local helper = require('telescope.pickers._test_helpers')
|
||||||
|
|
||||||
local builtin = require('telescope.builtin')
|
tester.builtin_picker('find_files', 'fixtures/file<c-p>', {
|
||||||
local tester = require('telescope.pickers._tests')
|
post_close = {
|
||||||
|
{ 'lua/tests/fixtures/file_2.txt', helper.get_file }
|
||||||
local key = 'find_files'
|
},
|
||||||
local input = 'fixtures/file<c-p>'
|
|
||||||
local expected = 'lua/tests/fixtures/file_2.txt'
|
|
||||||
local get_actual = function()
|
|
||||||
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":.")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- local on_complete_item = tester.picker_feed(input, expected, get_actual, true)
|
|
||||||
--
|
|
||||||
-- builtin[key] {
|
|
||||||
-- on_complete = { on_complete_item }
|
|
||||||
-- }
|
|
||||||
|
|
||||||
tester.builtin_picker('find_files', 'fixtures/file<c-p>', 'lua/tests/fixtures/file_2.txt', function()
|
|
||||||
return vim.fn.fnamemodify(vim.api.nvim_buf_get_name(0), ":.")
|
|
||||||
end, {
|
|
||||||
debug = false,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user