mirror of
https://github.com/neovim/neovim.git
synced 2026-08-28 18:11:47 +00:00
test(harness): migrate away from magic globals
Problem: The magic globals `it`, `describe`, etc., are more trouble than they are worth. - Hooking into `after_each` requires `getfenv()` hacks. - They confuse luals/emmylua, because the top-level `.luarc.json` isn't merged with `test/.luarc.json` (apparently a luals limitation?) - They totally defeat discoverability because the user just has to "know" about the various magic symbols. So they harm DX, which means they serve no purpose at all. Solution: - Expose the test API from `testutil`, so tests can call `t.it()`, `t.describe()`, etc., in the conventional way. - Drop `getfenv()` hacks. - Drop the `setfenv()` injection in `load_chunk`. - Drop `test/_meta.lua`.
This commit is contained in:
@@ -1167,22 +1167,13 @@ local testid = (function()
|
||||
end)()
|
||||
|
||||
return function()
|
||||
local g = getfenv(2)
|
||||
|
||||
--- @type function?
|
||||
local before_each = g.before_each
|
||||
--- @type function?
|
||||
local after_each = g.after_each
|
||||
|
||||
if before_each then
|
||||
before_each(function()
|
||||
if harness.is_defining() then
|
||||
harness.before_each(function()
|
||||
local id = ('T%d'):format(testid())
|
||||
_G._nvim_test_id = id
|
||||
end)
|
||||
end
|
||||
|
||||
if after_each then
|
||||
after_each(function()
|
||||
harness.after_each(function()
|
||||
close_extra_sessions(_G._nvim_test_id, true)
|
||||
if not vim.endswith(_G._nvim_test_id, 'x') then
|
||||
-- Use a different test ID for skipped tests as well as Nvim instances spawned
|
||||
|
||||
Reference in New Issue
Block a user