summaryrefslogtreecommitdiff
path: root/tests/specs/config_loader_spec.lua
blob: 73679c9de715d91c520dec56097b5e35eacd58ef (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
local a = require "plenary.async_lib.tests"
local config = require "lvim.config"
local fmt = string.format

a.describe("config-loader", function()
  local user_config_path = join_paths(get_config_dir(), "config.lua")
  local default_config_path = join_paths(get_lvim_base_dir(), "utils", "installer", "config.example.lua")

  before_each(function()
    os.execute(fmt("cp -f %s %s", default_config_path, user_config_path))
    vim.cmd [[
	    let v:errmsg = ""
      let v:errors = []
    ]]
  end)

  after_each(function()
    local errmsg = vim.fn.eval "v:errmsg"
    local exception = vim.fn.eval "v:exception"
    local errors = vim.fn.eval "v:errors"
    assert.equal("", errmsg)
    assert.equal("", exception)
    assert.True(vim.tbl_isempty(errors))
  end)

  a.it("should be able to find user-config", function()
    assert.equal(user_config_path, get_config_dir() .. "/config.lua")
  end)

  a.it("should be able to load user-config without errors", function()
    config.load(user_config_path)
  end)

  a.it("should be able to reload user-config without errors", function()
    config.load(user_config_path)
    local test_path = "/tmp/lvim"
    os.execute(string.format([[echo "vim.opt.undodir = '%s'" >> %s]], test_path, user_config_path))
    config.reload()
    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.load(user_config_path)
    assert.equal(vim.opt.undodir:get()[1], test_path)
    require("lvim.core.log"):set_level "error"
    os.execute(string.format("echo 'invalid_function()' >> %s", user_config_path))
    config.load(user_config_path)
    require("lvim.core.log"):set_level "error"
    assert.equal(vim.opt.undodir:get()[1], test_path)
  end)
end)