diff options
Diffstat (limited to 'lua/telescope/pickers/_tests.lua')
| -rw-r--r-- | lua/telescope/pickers/_tests.lua | 167 |
1 files changed, 0 insertions, 167 deletions
diff --git a/lua/telescope/pickers/_tests.lua b/lua/telescope/pickers/_tests.lua deleted file mode 100644 index b18b810..0000000 --- a/lua/telescope/pickers/_tests.lua +++ /dev/null @@ -1,167 +0,0 @@ -local assert = require('luassert') -local builtin = require('telescope.builtin') - -local Job = require("plenary.job") - -local tester = {} - -local replace_terms = function(input) - return vim.api.nvim_replace_termcodes(input, true, false, true) -end - -local nvim_feed = function(text, feed_opts) - feed_opts = feed_opts or "m" - - vim.api.nvim_feedkeys(text, feed_opts, true) -end - -tester.picker_feed = function(input, test_cases, debug) - input = replace_terms(input) - - return coroutine.wrap(function() - for i = 1, #input do - local char = input:sub(i, i) - nvim_feed(char, "") - - -- TODO: I'm not 100% sure this is a hack or not... - -- it's possible these characters could still have an on_complete... but i'm not sure. - if string.match(char, "%g") then - coroutine.yield() - end - end - - vim.wait(100, function() end) - - local timer = vim.loop.new_timer() - timer:start(200, 0, vim.schedule_wrap(function() - if test_cases.post_close then - 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("\n") - end - end - vim.wait(10) - - if debug then - return - end - - vim.defer_fn(function() - vim.cmd [[qa!]] - end, 15) - end)) - - if not debug then - vim.schedule(function() - if test_cases.post_typed then - for k, v in ipairs(test_cases.post_typed) do - io.stderr:write(vim.fn.json_encode({ case = k, expected = v[1], actual = v[2]() })) - io.stderr:write("\n") - end - end - - nvim_feed(replace_terms("<CR>"), "") - end) - end - coroutine.yield() - end) -end - --- local test_cases = { --- post_typed = { --- }, --- post_close = { --- { "README.md", function() return "README.md" end }, --- }, --- } -tester.builtin_picker = function(key, input, test_cases, opts) - opts = opts or {} - local debug = opts.debug or false - - opts.on_complete = { - tester.picker_feed(input, test_cases, debug) - } - - builtin[key](opts) -end - -local get_results_from_file = function(file) - local j = Job:new { - command = 'nvim', - args = { - '--noplugin', - '-u', - 'scripts/minimal_init.vim', - '-c', - 'luafile ' .. file - }, - } - - j:sync() - - local results = j:stderr_result() - local result_table = {} - for _, v in ipairs(results) do - table.insert(result_table, vim.fn.json_decode(v)) - end - - return result_table -end - -local check_results = function(results) - -- TODO: We should get all the test cases here that fail, not just the first one. - for _, v in ipairs(results) do - assert.are.same(v.expected, v.actual) - end -end - -tester.run_string = function(contents) - local tempname = vim.fn.tempname() - - contents = [[ - -- TODO: Add globals! - -- local tester = require('telescope.pickers._tests') - local tester = require('telescope.pickers._tests') - - local get_picker = function() - 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 - - vim.fn.writefile(vim.split(contents, "\n"), tempname) - local result_table = get_results_from_file(tempname) - vim.fn.delete(tempname) - - check_results(result_table) - -- assert.are.same(result_table.expected, result_table.actual) -end - -tester.run_file = function(filename) - local file = './lua/tests/pickers/' .. filename .. '.lua' - - local result_table = get_results_from_file(file) - assert.are.same(result_table.expected, result_table.actual) -end - - - -return tester |
