This directory contains the repo-facing tests and fixtures for libtestvim.
pytest/exercises the publiclibtestvimpackage against this repo's Vim configfixtures/provides stable benchmark inputs for Python, TypeScript, Markdown, and Vimvim/contains the native Vimscript runner andTest_*suites
just # List recipes grouped by purpose
just groups # List recipe groups only
just sync # Install Python test dependencies with uv
just probe # Print the current libtestvim capability report
just test # Fast hermetic suites, no tmux or benchmarks
just test-core # Native core Vimscript suites only
just test-integration # Plugin/executable integration suites
just test-tmux # libtmux-backed terminal smoke test
just benchmark # Generate libtestvim benchmark artifacts and append JSONL history
just compare # Compare this branch against the remote default branch
just compare-multi # Compare current branch against multiple refs
just serve-mcp # Serve libtestvim over stdio via FastMCPGitHub Actions uses the merge-gate path: just probe, just vint, just test-all, just benchmark, and just compare.
- The library bootstraps Vim into a disposable HOME/XDG/state tree for every run and sources this repo's
vimrcthrough a generated wrapper. - Run
just synconce before the recipes sopytest,fastmcp, andlibtmuxcome from the repo'suvenvironment. - The Vim config runs in
g:vim_test_mode, which redirects stateful paths and disables startup side effects such asPlugInstall,xrdb -load, and CoC extension installation. - Core and integration suites still run one Vimscript suite per fresh Vim process through
tests/vim/runner.vim, but the pytest layer now calls the publiclibtestvimpackage instead of reimplementing the runner. - Tmux smoke coverage uses
libtestvim.tmuxpluslibtmuxcontext managers on a dedicated socket. - Pytest runs use disposable artifact roots so benchmark and compare tests do not rewrite the repo's artifact directories.
- User-invoked benchmark recipes emit a run bundle under
artifacts/vim/runs/and can append scenario-level history toartifacts/vim/history.jsonl. - Compare runs emit branch-to-branch reports under
artifacts/vim/compare/. tmuxandhyperfineremain system dependencies;uvmanages the Python side of the harness.
- Add Vimscript assertions under
tests/vim/core/ortests/vim/integration/asTest_*functions. - Use helpers from
tests/vim/helpers.vimfor temp files, cleanup, and common assertions. - Add or update a pytest test only when the suite needs new orchestration behavior, a real terminal, or benchmark reporting.