aboutsummaryrefslogtreecommitdiff
path: root/test/functional/lua
diff options
context:
space:
mode:
authorMathias Fussenegger <f.mathias@zignar.net>2023-02-25 11:17:28 +0100
committerMathias Fussenegger <f.mathias@zignar.net>2023-02-25 11:17:28 +0100
commitf0f27e9aef7c237dd55fbb5c2cd47c2f42d01742 (patch)
tree378d8accb3f5a49d41e54bd7529a6cfdeef6bb8e /test/functional/lua
parent5732aa706c639b3d775573d91d1139f24624629c (diff)
downloadrneovim-f0f27e9aef7c237dd55fbb5c2cd47c2f42d01742.tar.gz
rneovim-f0f27e9aef7c237dd55fbb5c2cd47c2f42d01742.tar.bz2
rneovim-f0f27e9aef7c237dd55fbb5c2cd47c2f42d01742.zip
Revert "feat(lsp): implement workspace/didChangeWatchedFiles (#21293)"
This reverts commit 5732aa706c639b3d775573d91d1139f24624629c. Causes editor to freeze in projects with many watcher registrations
Diffstat (limited to 'test/functional/lua')
-rw-r--r--test/functional/lua/watch_spec.lua195
1 files changed, 0 insertions, 195 deletions
diff --git a/test/functional/lua/watch_spec.lua b/test/functional/lua/watch_spec.lua
deleted file mode 100644
index 19bb411ce6..0000000000
--- a/test/functional/lua/watch_spec.lua
+++ /dev/null
@@ -1,195 +0,0 @@
-local helpers = require('test.functional.helpers')(after_each)
-local eq = helpers.eq
-local exec_lua = helpers.exec_lua
-local clear = helpers.clear
-local is_os = helpers.is_os
-local lfs = require('lfs')
-
-describe('vim._watch', function()
- before_each(function()
- clear()
- end)
-
- describe('watch', function()
- it('detects file changes', function()
- local root_dir = helpers.tmpname()
- os.remove(root_dir)
- lfs.mkdir(root_dir)
-
- local result = exec_lua(
- [[
- local root_dir = ...
-
- local events = {}
-
- local expected_events = 0
- local function wait_for_events()
- assert(vim.wait(100, function() return #events == expected_events end), 'Timed out waiting for expected number of events. Current events seen so far: ' .. vim.inspect(events))
- end
-
- local stop = vim._watch.watch(root_dir, {}, function(path, change_type)
- table.insert(events, { path = path, change_type = change_type })
- end)
-
- -- Only BSD seems to need some extra time for the watch to be ready to respond to events
- if vim.fn.has('bsd') then
- vim.wait(50)
- end
-
- local watched_path = root_dir .. '/file'
- local watched, err = io.open(watched_path, 'w')
- assert(not err, err)
-
- expected_events = expected_events + 1
- wait_for_events()
-
- watched:close()
- os.remove(watched_path)
-
- expected_events = expected_events + 1
- wait_for_events()
-
- stop()
- -- No events should come through anymore
-
- local watched_path = root_dir .. '/file'
- local watched, err = io.open(watched_path, 'w')
- assert(not err, err)
-
- vim.wait(50)
-
- watched:close()
- os.remove(watched_path)
-
- vim.wait(50)
-
- return events
- ]],
- root_dir
- )
-
- local expected = {
- {
- change_type = exec_lua([[return vim._watch.FileChangeType.Created]]),
- path = root_dir .. '/file',
- },
- {
- change_type = exec_lua([[return vim._watch.FileChangeType.Deleted]]),
- path = root_dir .. '/file',
- },
- }
-
- -- kqueue only reports events on the watched path itself, so creating a file within a
- -- watched directory results in a "rename" libuv event on the directory.
- if is_os('bsd') then
- expected = {
- {
- change_type = exec_lua([[return vim._watch.FileChangeType.Created]]),
- path = root_dir,
- },
- {
- change_type = exec_lua([[return vim._watch.FileChangeType.Created]]),
- path = root_dir,
- },
- }
- end
-
- eq(expected, result)
- end)
- end)
-
- describe('poll', function()
- it('detects file changes', function()
- local root_dir = helpers.tmpname()
- os.remove(root_dir)
- lfs.mkdir(root_dir)
-
- local result = exec_lua(
- [[
- local root_dir = ...
-
- local events = {}
-
- local poll_interval_ms = 1000
- local poll_wait_ms = poll_interval_ms+200
-
- local expected_events = 0
- local function wait_for_events()
- assert(vim.wait(poll_wait_ms, function() return #events == expected_events end), 'Timed out waiting for expected number of events. Current events seen so far: ' .. vim.inspect(events))
- end
-
- local stop = vim._watch.poll(root_dir, { interval = poll_interval_ms }, function(path, change_type)
- table.insert(events, { path = path, change_type = change_type })
- end)
-
- -- polling generates Created events for the existing entries when it starts.
- expected_events = expected_events + 1
- wait_for_events()
-
- local watched_path = root_dir .. '/file'
- local watched, err = io.open(watched_path, 'w')
- assert(not err, err)
-
- expected_events = expected_events + 2
- wait_for_events()
-
- watched:close()
- os.remove(watched_path)
-
- expected_events = expected_events + 2
- wait_for_events()
-
- stop()
- -- No events should come through anymore
-
- local watched_path = root_dir .. '/file'
- local watched, err = io.open(watched_path, 'w')
- assert(not err, err)
-
- vim.wait(poll_wait_ms)
-
- watched:close()
- os.remove(watched_path)
-
- return events
- ]],
- root_dir
- )
-
- eq(5, #result)
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Created]]),
- path = root_dir,
- }, result[1])
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Created]]),
- path = root_dir .. '/file',
- }, result[2])
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Changed]]),
- path = root_dir,
- }, result[3])
- -- The file delete and corresponding directory change events do not happen in any
- -- particular order, so allow either
- if result[4].path == root_dir then
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Changed]]),
- path = root_dir,
- }, result[4])
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Deleted]]),
- path = root_dir .. '/file',
- }, result[5])
- else
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Deleted]]),
- path = root_dir .. '/file',
- }, result[4])
- eq({
- change_type = exec_lua([[return vim._watch.FileChangeType.Changed]]),
- path = root_dir,
- }, result[5])
- end
- end)
- end)
-end)