Skip to content

Commit a2f053a

Browse files
authored
test: wait for changedtick before asserting buffer changes (#1857)
1 parent 6ae25da commit a2f053a

File tree

2 files changed

+33
-8
lines changed

2 files changed

+33
-8
lines changed

tests/neo-tree/ui/icons_spec.lua

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ pcall(require, "luacov")
22

33
local ns_id = require("neo-tree.ui.highlights").ns_id
44
local u = require("tests.utils")
5+
local events = require("neo-tree.events")
56

67
describe("ui/icons", function()
78
local req_switch = u.get_require_switch()
@@ -61,13 +62,13 @@ describe("ui/icons", function()
6162
" * 1.md",
6263
})
6364

65+
local wait = u.changedtick_waiter(bufnr, 2)
6466
vim.api.nvim_win_set_cursor(winid, { 2, 0 })
6567
u.feedkeys("<CR>")
6668

6769
vim.api.nvim_win_set_cursor(winid, { 3, 0 })
6870
u.feedkeys("<CR>")
69-
70-
vim.wait(100)
71+
wait()
7172

7273
u.assert_buf_lines(bufnr, {
7374
string.format("  %s", fs_tree.abspath):sub(1, 42),
@@ -98,13 +99,13 @@ describe("ui/icons", function()
9899
"  1.md",
99100
})
100101

102+
local wait = u.changedtick_waiter(bufnr, 4)
101103
vim.api.nvim_win_set_cursor(winid, { 2, 0 })
102104
u.feedkeys("<CR>")
103105

104106
vim.api.nvim_win_set_cursor(winid, { 3, 0 })
105107
u.feedkeys("<CR>")
106-
107-
vim.wait(100)
108+
wait()
108109

109110
u.assert_buf_lines(bufnr, {
110111
vim.fn.strcharpart(string.format("  %s", fs_tree.abspath), 0, 40),
@@ -159,13 +160,13 @@ describe("ui/icons", function()
159160
" f 1.md",
160161
})
161162

163+
local wait = u.changedtick_waiter(bufnr, 4)
162164
vim.api.nvim_win_set_cursor(winid, { 2, 0 })
163165
u.feedkeys("<CR>")
164166

165167
vim.api.nvim_win_set_cursor(winid, { 3, 0 })
166168
u.feedkeys("<CR>")
167-
168-
vim.wait(100)
169+
wait()
169170

170171
u.assert_buf_lines(bufnr, {
171172
string.format(" o %s", fs_tree.abspath):sub(1, 40),
@@ -196,13 +197,13 @@ describe("ui/icons", function()
196197
"  1.md",
197198
})
198199

200+
local wait = u.changedtick_waiter(bufnr, 4)
199201
vim.api.nvim_win_set_cursor(winid, { 2, 0 })
200202
u.feedkeys("<CR>")
201203

202204
vim.api.nvim_win_set_cursor(winid, { 3, 0 })
203205
u.feedkeys("<CR>")
204-
205-
vim.wait(100)
206+
wait()
206207

207208
u.assert_buf_lines(bufnr, {
208209
vim.fn.strcharpart(string.format(" o %s", fs_tree.abspath), 0, 40),

tests/utils/init.lua

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
local mod = {
22
fs = require("tests.utils.fs"),
33
}
4+
local events = require("neo-tree.events")
45

56
function mod.clear_environment()
67
-- Create fresh window
@@ -188,4 +189,27 @@ function mod.wait_for_neo_tree(options)
188189
end, options)
189190
end
190191

192+
function mod.changedtick_waiter(bufnr, offset_goal, timeout)
193+
local changedtick = vim.b[bufnr].changedtick
194+
timeout = timeout or 4000
195+
return function()
196+
assert(
197+
vim.wait(timeout, function()
198+
local offset = vim.b[bufnr].changedtick - changedtick
199+
return offset >= offset_goal
200+
end),
201+
("expected changedtick offset of %s or more, got %s - %s. lines: %s"):format(
202+
offset_goal,
203+
vim.b[bufnr].changedtick,
204+
changedtick,
205+
table.concat(mod.buflines(bufnr), "\n")
206+
)
207+
)
208+
end
209+
end
210+
211+
function mod.buflines(bufnr)
212+
return vim.api.nvim_buf_get_lines(bufnr, 0, -1, false)
213+
end
214+
191215
return mod

0 commit comments

Comments
 (0)