diff options
Diffstat (limited to 'tests/specs')
| -rw-r--r-- | tests/specs/lsp_spec.lua | 2 | ||||
| -rw-r--r-- | tests/specs/plugins_load_spec.lua | 36 | 
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) | 
