fix: fix flaky test

This commit is contained in:
Steven Arcangeli 2023-08-20 23:33:34 +00:00
parent 7aeb239a6a
commit 9509ae0fee
5 changed files with 38 additions and 33 deletions

View file

@ -11,7 +11,7 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
vim.cmd.edit({ args = { "bar" } })
assert.equals("foo", vim.fn.expand("#"))
end)
@ -19,7 +19,7 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate when editing url file", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
local readme = fs.join(vim.fn.getcwd(), "README.md")
vim.cmd.edit({ args = { "oil://" .. fs.os_to_posix_path(readme) } })
-- We're gonna jump around to 2 different buffers
@ -32,7 +32,7 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate when editing oil://", function()
vim.cmd.edit({ args = { "foo" } })
vim.cmd.edit({ args = { "oil://" .. fs.os_to_posix_path(vim.fn.getcwd()) } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
vim.cmd.edit({ args = { "bar" } })
assert.equals("foo", vim.fn.expand("#"))
end)
@ -41,7 +41,7 @@ a.describe("Alternate buffer", function()
vim.cmd.edit({ args = { "foo" } })
vim.cmd.edit({ args = { "bar" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
vim.cmd.edit({ args = { "bar" } })
assert.equals("foo", vim.fn.expand("#"))
end)
@ -50,7 +50,7 @@ a.describe("Alternate buffer", function()
vim.cmd.edit({ args = { "foo" } })
vim.cmd.edit({ args = { "bar" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.close()
assert.equals("bar", vim.fn.expand("%"))
assert.equals("foo", vim.fn.expand("#"))
@ -59,13 +59,13 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate after multi-dir hops", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
vim.cmd.edit({ args = { "bar" } })
assert.equals("foo", vim.fn.expand("#"))
end)
@ -73,7 +73,7 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate when inside oil buffer", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("foo", vim.fn.expand("#"))
vim.cmd.edit({ args = { "bar" } })
assert.equals("foo", vim.fn.expand("#"))
@ -84,28 +84,28 @@ a.describe("Alternate buffer", function()
a.it("preserves alternate when traversing oil dirs", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("foo", vim.fn.expand("#"))
vim.wait(1000, function()
return oil.get_cursor_entry()
end, 10)
vim.api.nvim_win_set_cursor(0, { 1, 1 })
oil.select()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("foo", vim.fn.expand("#"))
end)
a.it("preserves alternate when opening preview", function()
vim.cmd.edit({ args = { "foo" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("foo", vim.fn.expand("#"))
vim.wait(1000, function()
return oil.get_cursor_entry()
end, 10)
vim.api.nvim_win_set_cursor(0, { 1, 1 })
oil.select({ preview = true })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("foo", vim.fn.expand("#"))
end)
@ -113,7 +113,7 @@ a.describe("Alternate buffer", function()
a.it("sets previous buffer as alternate", function()
vim.cmd.edit({ args = { "foo" } })
oil.open_float()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
-- This is lazy, but testing the actual select logic is more difficult. We can simply
-- replicate it by closing the current window and then doing the edit
vim.api.nvim_win_close(0, true)
@ -125,7 +125,7 @@ a.describe("Alternate buffer", function()
vim.cmd.edit({ args = { "foo" } })
vim.cmd.edit({ args = { "bar" } })
oil.open_float()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
-- This is lazy, but testing the actual select logic is more difficult. We can simply
-- replicate it by closing the current window and then doing the edit
vim.api.nvim_win_close(0, true)
@ -137,7 +137,7 @@ a.describe("Alternate buffer", function()
vim.cmd.edit({ args = { "foo" } })
vim.cmd.edit({ args = { "bar" } })
oil.open_float()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.close()
assert.equals("foo", vim.fn.expand("#"))
end)

View file

@ -152,10 +152,10 @@ a.describe("files adapter", function()
a.it("Editing a new oil://path/ creates an oil buffer", function()
local tmpdir_url = "oil://" .. vim.fn.fnamemodify(tmpdir.path, ":p") .. "/"
vim.cmd.edit({ args = { tmpdir_url } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
local new_url = "oil://" .. vim.fn.fnamemodify(tmpdir.path, ":p") .. "newdir"
vim.cmd.edit({ args = { new_url } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("oil", vim.bo.filetype)
-- The normalization will add a '/'
assert.equals(new_url .. "/", vim.api.nvim_buf_get_name(0))

View file

@ -4,6 +4,7 @@ local constants = require("oil.constants")
local mutator = require("oil.mutator")
local parser = require("oil.mutator.parser")
local test_adapter = require("oil.adapters.test")
local test_util = require("tests.test_util")
local util = require("oil.util")
local view = require("oil.view")
@ -24,6 +25,7 @@ a.describe("mutator", function()
end
test_adapter.test_clear()
cache.clear_everything()
test_util.reset_editor()
end)
describe("parser", function()

View file

@ -2,6 +2,7 @@ require("plenary.async").tests.add_to_env()
local oil = require("oil")
local test_util = require("tests.test_util")
local TmpDir = require("tests.tmpdir")
local view = require("oil.view")
a.describe("regression tests", function()
local tmpdir
@ -26,19 +27,21 @@ a.describe("regression tests", function()
vim.cmd.wincmd({ args = { "p" } })
assert.equals("markdown", vim.bo.filetype)
vim.cmd.edit({ args = { "%:p:h" } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("oil", vim.bo.filetype)
end)
-- https://github.com/stevearc/oil.nvim/issues/37
a.it("places the cursor on correct entry when opening on file", function()
vim.cmd.edit({ args = { "." } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
local entry = oil.get_cursor_entry()
assert.not_nil(entry)
assert.not_equals("README.md", entry and entry.name)
vim.cmd.edit({ args = { "README.md" } })
view.delete_hidden_buffers()
oil.open()
a.util.sleep(10)
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
entry = oil.get_cursor_entry()
assert.equals("README.md", entry and entry.name)
end)
@ -77,7 +80,7 @@ a.describe("regression tests", function()
-- https://github.com/stevearc/oil.nvim/issues/79
a.it("Returns to empty buffer on close", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
oil.close()
assert.not_equals("oil", vim.bo.filetype)
assert.equals("", vim.api.nvim_buf_get_name(0))
@ -88,7 +91,7 @@ a.describe("regression tests", function()
a.util.scheduler()
vim.cmd.edit({ args = { "oil://" .. vim.fn.fnamemodify(tmpdir.path, ":p") } })
local first_dir = vim.api.nvim_get_current_buf()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
test_util.feedkeys({ "dd", "itest/<esc>", "<CR>" }, 10)
vim.wait(1000, function()
return vim.bo.modifiable
@ -108,10 +111,10 @@ a.describe("regression tests", function()
a.it("refreshing buffer doesn't lose track of it", function()
vim.cmd.edit({ args = { "." } })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
local bufnr = vim.api.nvim_get_current_buf()
vim.cmd.edit({ bang = true })
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.are.same({ bufnr }, require("oil.view").get_all_buffers())
end)
end)

View file

@ -10,7 +10,7 @@ a.describe("window options", function()
a.it("Restores window options on close", function()
vim.cmd.edit({ args = { "README.md" } })
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
oil.close()
assert.equals("auto", vim.o.signcolumn)
@ -18,7 +18,7 @@ a.describe("window options", function()
a.it("Restores window options on edit", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
vim.cmd.edit({ args = { "README.md" } })
assert.equals("auto", vim.o.signcolumn)
@ -26,7 +26,7 @@ a.describe("window options", function()
a.it("Restores window options on split <filename>", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
vim.cmd.split({ args = { "README.md" } })
assert.equals("auto", vim.o.signcolumn)
@ -34,7 +34,7 @@ a.describe("window options", function()
a.it("Restores window options on split", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
vim.cmd.split()
vim.cmd.edit({ args = { "README.md" } })
@ -43,7 +43,7 @@ a.describe("window options", function()
a.it("Restores window options on tabnew <filename>", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
vim.cmd.tabnew({ args = { "README.md" } })
assert.equals("auto", vim.o.signcolumn)
@ -51,7 +51,7 @@ a.describe("window options", function()
a.it("Restores window options on tabnew", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.equals("no", vim.o.signcolumn)
vim.cmd.tabnew()
vim.cmd.edit({ args = { "README.md" } })
@ -60,7 +60,7 @@ a.describe("window options", function()
a.it("Sets the window options when re-entering oil buffer", function()
oil.open()
test_util.wait_for_autocmd("BufReadPost")
test_util.wait_for_autocmd({ "User", pattern = "OilEnter" })
assert.truthy(vim.w.oil_did_enter)
vim.cmd.edit({ args = { "README.md" } })
assert.falsy(vim.w.oil_did_enter)