Vibeleaderboard
Index / tool
Visit github.com
Category
Developer Tools
Rank
No. 1829Tools index

Previous survey · No. 1837 ·

Pricing
Open Source
Type
TOOL
GitHub
1 stars
Date

About

Lightweight self-contained busted-style testing harness for Neovim. Drop-in test runner for plugin authors.

What it does

Plentest runs Lua specifications inside separate headless Neovim processes, discovers spec files in a directory, and reports colored pass, failure, pending, and error results. Its familiar suite syntax includes nested descriptions, per-test setup and teardown, assertions, spies, mocks, and stubs.

Why it's ranked here

The appeal is tight scope and controlled dependencies: the assertion and message libraries are vendored, while tests execute against Neovim itself. The decisive caveat is unusually explicit. Its own documentation says it is not intended for public use and directs readers to another project.

What's good

Each specification receives its own headless Neovim process, which gives plugin code a real editor runtime. Directory discovery, configurable initialization, timeouts, exit codes, nested suites, hooks, pending cases, and detailed assertion helpers cover the practical core of automated plugin checks without an external assertion installation.

Tradeoffs

The public-use warning makes long-term adoption hard to justify outside its intended internal context. Several exposed options appear inert, including sequential execution, continued execution, and window settings. Pending cases are printed but excluded from the summary, and the runner does not distinguish assertion failures from other test errors inside individual cases.

How to use it well

It best fits maintainers who control a Neovim plugin repository and want compact, process-isolated Lua checks in automation. Pin the dependency, supply a minimal editor configuration when isolation matters, and treat timeout behavior carefully. It does not cover supported public distribution, broader editor integration testing, or a general-purpose Lua test environment outside Neovim.

Technical notes+

lua/plentest.lua discovers *_spec.lua files with vim.fs.find, builds one --headless Neovim command per path, launches every command through vim.system, and maps nonzero child codes to :1cq. minimal_init adds --clean -u <path>, while timeout is passed to vim.wait and exported as PLENTEST_TIMEOUT. The sequential, keep_going, and winopts defaults are never consumed. lua/busted.lua installs global describe, it, pending, before_each, after_each, clear, and assert, loads specs with loadfile, and exits through :cq. It records suite-level exceptions separately, but failed test bodies all enter results.fail. lua/luassert/ contains the vendored assertion, spy, mock, stub, matcher, array, utility, and state machinery; lua/say.lua supplies namespaced messages.

Observed

License
MIT License
Primary language
Lua, configured for a LuaJIT runtime
Interface
Neovim Lua module that launches headless Neovim child processes
Test discovery
Recursively finds files whose names end with _spec.lua
Bundling
Vendors luassert and say; the harness is forked from plenary.test_harness
Supported context
Requires Neovim APIs and is explicitly marked not for public use

Read from README.md, LICENSE, .luarc.json, .stylua.toml, lua/say.lua, lua/busted.lua, lua/plentest.lua, lua/luassert/spy.lua, lua/luassert/init.lua, lua/luassert/mock.lua, lua/luassert/stub.lua, lua/luassert/util.lua, lua/luassert/array.lua, lua/luassert/match.lua, lua/luassert/state.lua.

What it can do

  • Run busted-style tests

    Test files with busted syntaxTest execution results

  • Execute plugin tests

    Neovim plugin test suitesPass/fail status and test reports

  • Provide drop-in test running

    Existing test configurationsCompatible test execution without setup changes

  • Generate test output reports

    Test execution dataFormatted test results and statistics

  • Validate plugin functionality

    Plugin code and test specificationsVerification of plugin behavior correctness

Tags

neovimtestingluaplugin-devbusted

Tech Stack

Lua

Comments (0)

No comments yet

Editorially curated, with community endorsements as a secondary signal. Corrections welcome.