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
Problem:
- tee was vendored in ceb7eb5230 but
forgot to add it to `build.zig`.
- xxd was vendored in 5bb8734fb6 but
the old XXD_URL is still referenced.
Solution:
- update `build.zig`
- remove XXD_URL
Problem:
When building Neovim with Emscripten for WebAssembly, the
`CMAKE_TOOLCHAIN_FILE` is not propagated to dependency builds.
So libuv attempts to include Linux-specific headers like
`sys/epoll.h` which don't exist in the WebAssembly environment.
From #37572:
…/NeovimWeb/external/neovim/.deps/build/src/libuv/src/unix/linux.c:44:10:
fatal error: 'sys/epoll.h' file not found
44 | #include <sys/epoll.h> | ^~~~~~~~~~~~~
Solution:
1. Add initialization for DEPS_CMAKE_ARGS to prevent CMake errors.
2. Implement conditional logic to always pass CMAKE_TOOLCHAIN_FILE to
dependencies.
This allows dependencies like libuv to detect they're building for
WebAssembly and disable incompatible Linux specific features such as
epoll which resolves the sys/epoll.h error.
Fixes compilation/link/installation on Cygwin with bundled dependencies
(cmake.deps). Only builds with LuaJIT are fixed. Linking against PUC LUA still
does not work.
Note: Luajit technically does not support Cygwin:
55a42da36e