From 08d3df2cd3515878309906c2791d1b934425d78f Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Thu, 24 Mar 2022 16:16:38 +0100 Subject: feat(plugins): add support for packer snapshots (#2351) --- tests/specs/lsp_spec.lua | 2 +- tests/specs/plugins_load_spec.lua | 36 ++++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) (limited to 'tests/specs') diff --git a/tests/specs/lsp_spec.lua b/tests/specs/lsp_spec.lua index 388a24bb..9031d98f 100644 --- a/tests/specs/lsp_spec.lua +++ b/tests/specs/lsp_spec.lua @@ -1,6 +1,6 @@ local a = require "plenary.async_lib.tests" local utils = require "lvim.utils" -local helpers = require "tests.helpers" +local helpers = require "tests.lvim.helpers" local temp_dir = vim.loop.os_getenv "TEMP" or "/tmp" lvim.lsp.templates_dir = join_paths(temp_dir, "lvim", "tests", "artifacts") diff --git a/tests/specs/plugins_load_spec.lua b/tests/specs/plugins_load_spec.lua index 08c96c12..e5f1a09e 100644 --- a/tests/specs/plugins_load_spec.lua +++ b/tests/specs/plugins_load_spec.lua @@ -5,7 +5,7 @@ a.describe("plugin-loader", function() local loader = require "lvim.plugin-loader" a.it("should be able to load default packages without errors", function() - loader:load { plugins, lvim.plugins } + loader.load { plugins, lvim.plugins } -- TODO: maybe there's a way to avoid hard-coding the names of the modules? local startup_plugins = { @@ -18,7 +18,7 @@ a.describe("plugin-loader", function() end) a.it("should be able to load lsp packages without errors", function() - loader:load { plugins, lvim.plugins } + loader.load { plugins, lvim.plugins } require("lvim.lsp").setup() @@ -32,4 +32,36 @@ a.describe("plugin-loader", function() assert.truthy(package.loaded[plugin]) end end) + a.it("should be able to rollback plugins without errors", function() + local plugin = { name = "onedarker.nvim" } + plugin.path = vim.tbl_filter(function(package) + return package:match(plugin.name) + end, vim.api.nvim_list_runtime_paths())[1] + + local get_current_sha = function(repo) + local res = vim.fn.system(string.format("git -C %s log -1 --pretty=%%h", repo)):gsub("\n", "") + return res + end + plugin.test_sha = "316b1c9" + _G.locked_sha = get_current_sha(plugin.path) + loader.load { plugins, lvim.plugins } + + os.execute(string.format("git -C %s fetch --deepen 999 --quiet", plugin.path)) + os.execute(string.format("git -C %s checkout %s --quiet", plugin.path, plugin.test_sha)) + assert.equal(plugin.test_sha, get_current_sha(plugin.path)) + _G.completed = false + _G.verify_sha = function() + if _G.locked_sha ~= get_current_sha(plugin.path) then + error "unmached results!" + else + _G.completed = true + end + end + vim.cmd [[autocmd User PackerComplete lua _G.verify_sha()]] + loader.sync_core_plugins() + local ret = vim.wait(30 * 10 * 1000, function() + return _G.completed == true + end, 200) + assert.True(ret) + end) end) -- cgit v1.2.3 From 7807f147c192fdb6aec7659a3098b4bf31852fcd Mon Sep 17 00:00:00 2001 From: steven_j Date: Mon, 28 Mar 2022 08:59:33 +0200 Subject: refactor(lsp): replace deprecated ocamllsp with ocamlls (#2402) Co-authored-by: kylo252 <59826753+kylo252@users.noreply.github.com> --- tests/specs/lsp_spec.lua | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'tests/specs') diff --git a/tests/specs/lsp_spec.lua b/tests/specs/lsp_spec.lua index 9031d98f..2518b237 100644 --- a/tests/specs/lsp_spec.lua +++ b/tests/specs/lsp_spec.lua @@ -31,7 +31,7 @@ a.describe("lsp workflow", function() lvim.log.level = "debug" local plugins = require "lvim.plugins" - require("lvim.plugin-loader"):load { plugins, lvim.plugins } + require("lvim.plugin-loader").load { plugins, lvim.plugins } if utils.is_file(logfile) then assert.equal(vim.fn.delete(logfile), 0) @@ -51,8 +51,9 @@ a.describe("lsp workflow", function() require("lvim.lsp").setup() for _, file in ipairs(vim.fn.glob(lvim.lsp.templates_dir .. "/*.lua", 1, 1)) do - for _, server in ipairs(lvim.lsp.override) do - assert.False(helpers.file_contains(file, server)) + for _, server_name in ipairs(lvim.lsp.override) do + local setup_cmd = string.format([[require("lvim.lsp.manager").setup(%q)]], server_name) + assert.False(helpers.file_contains(file, setup_cmd)) end end end) -- cgit v1.2.3 From fa710f6ddd6da354f3410d6d7ef42d306a54f145 Mon Sep 17 00:00:00 2001 From: kylo252 <59826753+kylo252@users.noreply.github.com> Date: Sun, 3 Apr 2022 14:32:52 +0200 Subject: refactor: re-enable packer.sync() in LvimReload (#2410) --- tests/specs/config_loader_spec.lua | 22 ++++++++++++++-------- tests/specs/plugins_load_spec.lua | 4 ++-- 2 files changed, 16 insertions(+), 10 deletions(-) (limited to 'tests/specs') diff --git a/tests/specs/config_loader_spec.lua b/tests/specs/config_loader_spec.lua index 54cb4e96..1f2debc7 100644 --- a/tests/specs/config_loader_spec.lua +++ b/tests/specs/config_loader_spec.lua @@ -21,25 +21,31 @@ a.describe("config-loader", function() local test_path = "/tmp/lvim" os.execute(string.format([[echo "vim.opt.undodir = '%s'" >> %s]], test_path, user_config_path)) config:reload() - assert.equal(vim.opt.undodir:get()[1], test_path) + vim.schedule(function() + assert.equal(vim.opt.undodir:get()[1], test_path) + end) end) a.it("should not get interrupted by errors in user-config", function() local test_path = "/tmp/lunarvim" os.execute(string.format([[echo "vim.opt.undodir = '%s'" >> %s]], test_path, user_config_path)) config:reload() - assert.equal(vim.opt.undodir:get()[1], test_path) + vim.schedule(function() + assert.equal(vim.opt.undodir:get()[1], test_path) + end) os.execute(string.format("echo 'bad_string_test' >> %s", user_config_path)) local error_handler = function(msg) return msg end local err = xpcall(config:reload(), error_handler) assert.falsy(err) - assert.equal(vim.opt.undodir:get()[1], test_path) - local errmsg = vim.fn.eval "v:errmsg" - local exception = vim.fn.eval "v:exception" - assert.equal("", errmsg) -- v:errmsg was not updated. - assert.equal("", exception) - os.execute(string.format("echo '' > %s", user_config_path)) + vim.schedule(function() + assert.equal(vim.opt.undodir:get()[1], test_path) + local errmsg = vim.fn.eval "v:errmsg" + local exception = vim.fn.eval "v:exception" + assert.equal("", errmsg) -- v:errmsg was not updated. + assert.equal("", exception) + os.execute(string.format("echo '' > %s", user_config_path)) + end) end) end) diff --git a/tests/specs/plugins_load_spec.lua b/tests/specs/plugins_load_spec.lua index e5f1a09e..d32c521d 100644 --- a/tests/specs/plugins_load_spec.lua +++ b/tests/specs/plugins_load_spec.lua @@ -57,8 +57,8 @@ a.describe("plugin-loader", function() _G.completed = true end end - vim.cmd [[autocmd User PackerComplete lua _G.verify_sha()]] - loader.sync_core_plugins() + vim.cmd [[autocmd User PackerComplete ++once lua _G.verify_sha()]] + loader.load_snapshot() local ret = vim.wait(30 * 10 * 1000, function() return _G.completed == true end, 200) -- cgit v1.2.3