aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua/loader_spec.lua
blob: 34c36b04ef889d6681bcd59cca63e74a6f322290 (plain) (blame)
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
56
-- Test suite for testing interactions with API bindings
local helpers = require('test.functional.helpers')(after_each)

local exec_lua = helpers.exec_lua
local command = helpers.command
local eq = helpers.eq

describe('vim.loader', function()
  before_each(helpers.clear)

  it('handles changing files (#23027)', function()
    exec_lua[[
      vim.loader.enable()
    ]]

    local tmp = helpers.tmpname()
    command('edit ' .. tmp)

    eq(1, exec_lua([[
      vim.api.nvim_buf_set_lines(0, 0, -1, true, {'_G.TEST=1'})
      vim.cmd.write()
      loadfile(...)()
      return _G.TEST
    ]], tmp))

    -- fs latency
    helpers.sleep(10)

    eq(2, exec_lua([[
      vim.api.nvim_buf_set_lines(0, 0, -1, true, {'_G.TEST=2'})
      vim.cmd.write()
      loadfile(...)()
      return _G.TEST
    ]], tmp))
  end)

  it('handles % signs in modpath (#24491)', function()
    exec_lua[[
      vim.loader.enable()
    ]]

    local tmp1, tmp2 = (function (t)
      assert(os.remove(t))
      assert(helpers.mkdir(t))
      assert(helpers.mkdir(t .. '/%'))
      return t .. '/%/x', t .. '/%%x'
    end)(helpers.tmpname())

    helpers.write_file(tmp1, 'return 1', true)
    helpers.write_file(tmp2, 'return 2', true)
    vim.uv.fs_utime(tmp1, 0, 0)
    vim.uv.fs_utime(tmp2, 0, 0)
    eq(1, exec_lua('return loadfile(...)()', tmp1))
    eq(2, exec_lua('return loadfile(...)()', tmp2))
  end)
end)