| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 | local a = require "plenary.async_lib.tests"a.describe("plugin-loader", function()  local plugins = require "lvim.plugins"  local loader = require "lvim.plugin-loader"  a.it("should be able to load default packages without errors", function()    loader.load { plugins, lvim.plugins }    -- TODO: maybe there's a way to avoid hard-coding the names of the modules?    local startup_plugins = {      "packer",    }    for _, plugin in ipairs(startup_plugins) do      assert.truthy(package.loaded[plugin])    end  end)  a.it("should be able to load lsp packages without errors", function()    loader.load { plugins, lvim.plugins }    require("lvim.lsp").setup()    local lsp_packages = {      "lspconfig",      "nlspsettings",      "null-ls",    }    for _, plugin in ipairs(lsp_packages) do      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 ++once lua _G.verify_sha()]]    loader.load_snapshot()    local ret = vim.wait(30 * 10 * 1000, function()      return _G.completed == true    end, 200)    assert.True(ret)  end)end)
 |