From d12585b5b8404b4da91fc05eecb0f8c148aeafa1 Mon Sep 17 00:00:00 2001 From: V13Axel Date: Fri, 16 Feb 2024 17:04:10 -0500 Subject: [PATCH] Make this even slicker --- lua/neotest-pest/config.lua | 49 ++++++++++++++++++++++++++++++------- lua/neotest-pest/init.lua | 49 ++++--------------------------------- 2 files changed, 45 insertions(+), 53 deletions(-) diff --git a/lua/neotest-pest/config.lua b/lua/neotest-pest/config.lua index e8675e5..9647496 100644 --- a/lua/neotest-pest/config.lua +++ b/lua/neotest-pest/config.lua @@ -1,10 +1,41 @@ +local is_callable = function(obj) + return type(obj) == "function" or (type(obj) == "table" and obj.__call) +end + local M = {} +M.opts = {} + +M.available_opts = { + "enable_sail", + "pest_cmd", + "root_ignore_files", + "root_files", + "filter_dirs", + "env", +} + +M.get = function(key) + if M.opts[key] then + if is_callable(M.opts[key]) then + return M.opts[key]() + end + + return M.opts[key] + end + + if M[key] then + return M[key]() + end + + return {} +end + M.enable_sail = function() return vim.fn.filereadable("vendor/bin/sail") == 1 end -M.get_pest_cmd = function() +M.pest_cmd = function() local binary = "pest" if vim.fn.filereadable("vendor/bin/pest") == 1 then @@ -14,20 +45,20 @@ M.get_pest_cmd = function() return binary end -M.get_env = function() - return {} +M.env = function() + return {} end -M.get_root_ignore_files = function() - return {} +M.root_ignore_files = function() + return {} end -M.get_root_files = function() - return { "tests/Pest.php" } +M.root_files = function() + return { "tests/Pest.php" } end -M.get_filter_dirs = function() - return { ".git", "node_modules", "vendor" } +M.filter_dirs = function() + return { ".git", "node_modules", "vendor" } end return M diff --git a/lua/neotest-pest/init.lua b/lua/neotest-pest/init.lua index eb4ddf7..9f53923 100644 --- a/lua/neotest-pest/init.lua +++ b/lua/neotest-pest/init.lua @@ -18,7 +18,7 @@ function NeotestAdapter.root(dir) logger.info("Finding root...") - for _, root_ignore_file in ipairs(config.get_root_ignore_files()) do + for _, root_ignore_file in ipairs(config.get("root_ignore_files")) do logger.info("Checking root ignore file", root_ignore_file) result = lib.files.match_root_pattern(root_ignore_file)(dir) @@ -29,7 +29,7 @@ function NeotestAdapter.root(dir) end end - for _, root_file in ipairs(config.get_root_files()) do + for _, root_file in ipairs(config.get("root_files")) do logger.info("Checking root file", root_file) result = lib.files.match_root_pattern(root_file)(dir) @@ -83,10 +83,6 @@ function NeotestAdapter.discover_positions(path) }) end -local is_callable = function(obj) - return type(obj) == "function" or (type(obj) == "table" and obj.__call) -end - ---@param args neotest.RunArgs ---@return neotest.RunSpec | nil function NeotestAdapter.build_spec(args) @@ -164,44 +160,9 @@ end setmetatable(NeotestAdapter, { __call = function(_, opts) logger.info("Initializing opts") - if is_callable(opts.pest_cmd) then - config.get_pest_cmd = opts.pest_cmd - elseif opts.pest_cmd then - config.get_pest_cmd = function() - return opts.pest_cmd - end - end - if is_callable(opts.root_ignore_files) then - config.get_root_ignore_files = opts.root_ignore_files - elseif opts.root_ignore_files then - config.get_root_ignore_files = function() - return opts.root_ignore_files - end - end - if is_callable(opts.root_files) then - config.get_root_files = opts.root_files - elseif opts.root_files then - config.get_root_files = function() - return opts.root_files - end - end - if is_callable(opts.filter_dirs) then - config.get_filter_dirs = opts.filter_dirs - elseif opts.filter_dirs then - config.get_filter_dirs = function() - return opts.filter_dirs - end - end - if is_callable(opts.env) then - config.get_env = opts.env - elseif type(opts.env) == "table" then - config.get_env = function() - return opts.env - end - end - if type(opts.dap) == "table" then - dap_configuration = opts.dap - end + + config.opts = opts or {} + return NeotestAdapter end, })