diff options
author | kylo252 <[email protected]> | 2022-03-24 16:16:38 +0100 |
---|---|---|
committer | GitHub <[email protected]> | 2022-03-24 16:16:38 +0100 |
commit | 08d3df2cd3515878309906c2791d1b934425d78f (patch) | |
tree | 1fa487649e33329add38c5c3a8abb12acdfd41d2 /tests | |
parent | 1ea836e3601b7ed0ed0496888dc14683bfbcce75 (diff) |
feat(plugins): add support for packer snapshots (#2351)
Diffstat (limited to 'tests')
-rw-r--r-- | tests/lvim/helpers.lua (renamed from tests/helpers.lua) | 9 | ||||
-rw-r--r-- | tests/minimal_init.lua | 12 | ||||
-rw-r--r-- | tests/specs/lsp_spec.lua | 2 | ||||
-rw-r--r-- | tests/specs/plugins_load_spec.lua | 36 |
4 files changed, 44 insertions, 15 deletions
diff --git a/tests/helpers.lua b/tests/lvim/helpers.lua index ada83267..2d8477de 100644 --- a/tests/helpers.lua +++ b/tests/lvim/helpers.lua @@ -13,11 +13,11 @@ function M.search_file(file, args) end, }) :sync() - return stdout, ret, stderr + return ret, stdout, stderr end function M.file_contains(file, query) - local stdout, ret, stderr = M.search_file(file, query) + local ret, stdout, stderr = M.search_file(file, query) if ret == 0 then return true end @@ -32,7 +32,7 @@ end function M.log_contains(query) local logfile = require("lvim.core.log"):get_path() - local stdout, ret, stderr = M.search_file(logfile, query) + local ret, stdout, stderr = M.search_file(logfile, query) if ret == 0 then return true end @@ -42,9 +42,6 @@ function M.log_contains(query) if not vim.tbl_isempty(stdout) then error(vim.inspect(stdout)) end - if not vim.tbl_isempty(stderr) then - error(vim.inspect(stderr)) - end return false end diff --git a/tests/minimal_init.lua b/tests/minimal_init.lua index 0178514b..91579243 100644 --- a/tests/minimal_init.lua +++ b/tests/minimal_init.lua @@ -2,11 +2,11 @@ local path_sep = vim.loop.os_uname().version:match "Windows" and "\\" or "/" local base_dir = os.getenv "LUNARVIM_RUNTIME_DIR" .. path_sep .. "lvim" local tests_dir = base_dir .. path_sep .. "tests" -vim.opt.rtp = { base_dir, tests_dir, os.getenv "VIMRUNTIME" } +vim.opt.rtp:append(tests_dir) +vim.opt.rtp:append(base_dir) -vim.opt.swapfile = false +require("lvim.bootstrap"):init(base_dir) --- load helper functions before any other plugin to avoid name-collisions -pcall(require, "tests.helpers") - -require("lvim.bootstrap"):init() +-- NOTE: careful about name collisions +-- see https://github.com/nvim-lualine/lualine.nvim/pull/621 +require "tests.lvim.helpers" 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) |