test: replace busted with local harness

Replace the busted-based Lua test runner with a repo-local harness.

The new harness runs spec files directly under `nvim -ll`, ships its own
reporter and lightweight `luassert` shim, and keeps the helper/preload
flow used by the functional and unit test suites.

Keep the file boundary model shallow and busted-like by restoring `_G`,
`package.loaded`, `package.preload`, `arg`, and the process environment
between files, without carrying extra reset APIs or custom assertion
machinery.

Update the build and test entrypoints to use the new runner, add
black-box coverage for the harness itself, and drop the bundled
busted/luacheck dependency path.

AI-assisted: Codex
This commit is contained in:
Lewis Russell
2026-03-25 13:33:17 +00:00
parent e289f9579c
commit 55f9c2136e
45 changed files with 3899 additions and 659 deletions

View File

@@ -1,6 +1,7 @@
local uv = vim.uv
local t = require('test.testutil')
local busted = require('busted')
---@type test.harness
local harness = require('test.harness')
local Session = require('test.client.session')
local uv_stream = require('test.client.uv_stream')
@@ -528,7 +529,7 @@ function M.new_session(keep, ...)
return new_session
end
busted.subscribe({ 'suite', 'end' }, function()
harness.on_suite_end(function()
M.check_close(true)
local timed_out = false
local timer = assert(vim.uv.new_timer())