summaryrefslogtreecommitdiff
path: root/tests/specs
diff options
context:
space:
mode:
authorkylo252 <[email protected]>2022-03-24 16:16:38 +0100
committerGitHub <[email protected]>2022-03-24 16:16:38 +0100
commit08d3df2cd3515878309906c2791d1b934425d78f (patch)
tree1fa487649e33329add38c5c3a8abb12acdfd41d2 /tests/specs
parent1ea836e3601b7ed0ed0496888dc14683bfbcce75 (diff)
feat(plugins): add support for packer snapshots (#2351)
Diffstat (limited to 'tests/specs')
-rw-r--r--tests/specs/lsp_spec.lua2
-rw-r--r--tests/specs/plugins_load_spec.lua36
2 files changed, 35 insertions, 3 deletions
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)