{"id":13682887,"url":"https://github.com/rcarriga/vim-ultest","last_synced_at":"2025-10-25T09:45:55.393Z","repository":{"id":40486383,"uuid":"305082868","full_name":"rcarriga/vim-ultest","owner":"rcarriga","description":"The ultimate testing plugin for (Neo)Vim","archived":false,"fork":false,"pushed_at":"2023-02-09T13:08:17.000Z","size":337,"stargazers_count":384,"open_issues_count":21,"forks_count":15,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-29T21:05:01.584Z","etag":null,"topics":["neovim","test-runner","vim-test"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rcarriga.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-18T11:10:19.000Z","updated_at":"2025-02-12T18:06:17.000Z","dependencies_parsed_at":"2024-06-20T06:03:10.925Z","dependency_job_id":"dbfae647-299b-4e3d-afc1-ff17bf782f5b","html_url":"https://github.com/rcarriga/vim-ultest","commit_stats":null,"previous_names":[],"tags_count":103,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarriga%2Fvim-ultest","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarriga%2Fvim-ultest/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarriga%2Fvim-ultest/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rcarriga%2Fvim-ultest/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rcarriga","download_url":"https://codeload.github.com/rcarriga/vim-ultest/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247406089,"owners_count":20933803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["neovim","test-runner","vim-test"],"created_at":"2024-08-02T13:01:54.954Z","updated_at":"2025-10-25T09:45:55.299Z","avatar_url":"https://github.com/rcarriga.png","language":"Python","readme":"# vim-ultest\n\n## Deprecation Warning\n\nThis repo is no longer being actively worked on. I've moved my efforts into\n[Neotest](https://github.com/nvim-neotest/neotest). If you use NeoVim then I'd suggest switching to that as it will\ncover all features of vim-ultest. If you're a Vim user, this repo will still work and I will accept PRs but will no\nlonger be adding features.\n\n1. [Introduction](#introduction)\n2. [Features](#features)\n3. [Installation](#installation)\n4. [Usage](#usage)\n   1. [Configuration](#configuration)\n   2. [Commands](#commands)\n   3. [Plug mappings](#plug-mappings)\n5. [Debugging](#debugging)\n6. [Feedback](#feedback)\n\n## Introduction\n\n_The ultimate testing plugin for NeoVim_\n\nRunning tests should be as quick and painless as possible.\n[vim-test](https://github.com/vim-test/vim-test) is a very powerful and extensive testing plugin, but it can be cumbersome to configure and lacks some features to make it feel like an integrated piece of your editor.\n\nRather than replacing vim-test altogether, vim-ultest (in name and practice) builds upon vim-test to make it even better while maintaining the ability to use your existing configuration.\nIf you're already using vim-test then switching to vim-ultest is as easy as installing and... well, that's pretty much it.\n\nThe goal behind vim-ultest is to make running tests as seamless as possible.\n\n## Features\n\n- Run tests and view results individually\n  - Test result markers using signs or virtual text\n  - Failure outputs in a floating window\n  - Key mappings to jump between failed tests\n  - Stop long running tests\n\n![Running Example](https://user-images.githubusercontent.com/24252670/107279654-39d2a980-6a4f-11eb-95f5-074f69b856e6.gif)\n\n- Attach to running processes to debug\n  - Currently experimental so please report issues!\n  - Uses python's readline library to pass input\n\n![debugging](https://user-images.githubusercontent.com/24252670/107827860-8552c380-6d7f-11eb-8f69-04f95e048cfb.gif)\n\n- Summary window\n  - Highlight tests based on current status (running, succeeded, failed)\n  - Show test output\n  - View all tests currently found in all test files\n  - Run tests with key binding\n\n![summary](https://user-images.githubusercontent.com/24252670/118359583-105c7900-b57c-11eb-848d-9fc0cdf7ca0c.gif)\n\n- Multithreaded (not just asynchronous) to prevent blocking\n\n- Use existing vim-test configuration\n\n- Customisable\n\nMore features are being worked on.\nIf you have any ideas, feel free to open an issue!\n\n## Installation\n\n**Requirements**:\n\nAll users:\n\n- Python \u003e= 3.7\n- [Pynvim library](https://pynvim.readthedocs.io/en/latest/installation.html)\n- [vim-test](https://github.com/vim-test/vim-test)\n\nVim only:\n\n- [nvim-yarp](https://github.com/roxma/nvim-yarp)\n- [vim-hug-neovim-rpc](https://github.com/roxma/vim-hug-neovim-rpc)\n\n**Note:** Vim support is maintained with a best effort.\nDue to the differences between Vim and NeoVim and their RPC libraries, it is inevitable that bugs will occur in one and not the other.\nI primarily use NeoVim so I will catch issues in it myself.\nPlease file bug reports for Vim if you find them!\n\nNeoVim \u003e= 0.5 is currently supported.\n\nvim-ultest can be installed as usual with your favourite plugin manager.\n**Note:** NeoVim users must run `:UpdateRemotePlugins` after install if they don't use a plugin manager that already does.\n\n[**dein**](https://github.com/Shougo/dein.vim):\n\n```vim\n\" Vim Only\ncall dein#add(\"roxma/nvim-yarp\")\ncall dein#add(\"roxma/vim-hug-neovim-rpc\")\n\ncall dein#add(\"vim-test/vim-test\")\ncall dein#add(\"rcarriga/vim-ultest\")\n```\n\n[**vim-plug**](https://github.com/junegunn/vim-plug)\n\n```vim\n\" Vim Only\nPlug 'roxma/nvim-yarp'\nPlug 'roxma/vim-hug-neovim-rpc'\n\nPlug 'vim-test/vim-test'\nPlug 'rcarriga/vim-ultest', { 'do': ':UpdateRemotePlugins' }\n```\n\n[packer.nvim](https://github.com/wbthomason/packer.nvim)\n\n```lua\nuse { \"rcarriga/vim-ultest\", requires = {\"vim-test/vim-test\"}, run = \":UpdateRemotePlugins\" }\n```\n\n## Usage\n\n### Configuration\n\n`:help ultest-config`\n\nAny vim-test configuration should carry over to vim-ultest.\nSee the vim-test documentation on further details for changing test runner and options.\nIf you have compatibility problems please raise an issue.\n\nOne change you will notice is that test output is not coloured.\nThis is due to the way the command is run.\nTo work around this you can simply tell your test runner to always output with colour.\nFor example\n\n```vim\nlet test#python#pytest#options = \"--color=yes\"\n\nlet test#javascript#jest#options = \"--color=always\"\n```\n\nAlternatively if you are using a neovim \u003e= 0.5 you can enable PTY\nusage which makes the process think it is in an interactive session\n```vim\nlet g:ultest_use_pty = 1\n```\n\nBecause Ultest runs processes in an interactive way, test runners may wait for\ninput or run in \"watch\" mode. To avoid this you have to pass a flag to your\nrunner to disable this.\n\nFor example with react-scripts\n```vim\nlet test#javascript#reactscripts#options = \"--watchAll=false\"\n```\n\n**Note**: The window to show results relies on the 'updatetime' setting which by default is 4 seconds.\nA longer 'updatetime' will mean the window takes longer to show automatically but a shorter time means (Neo)Vim will write to disk much more often which can degrade SSDs over time and cause slowdowns on HDDs.\n\n### Commands\n\n`:help ultest-commands`\n\nFor example to run the nearest test every time a file is written:\n\n```vim\naugroup UltestRunner\n    au!\n    au BufWritePost * UltestNearest\naugroup END\n```\n\n**Need user contributions**\n\nThe `Ultest` command runs all tests in a file. For some test runners the plugin\ncan parse the output of the runner to get results so that they can all be run\nas a single process. For other runners the tests all have to be run as\ninidividual processes, which can have a significant performance impact. Please\ncheck the wiki to see if your runner is supported.  If it is not please open an\nissue with example output and I can add support for it!\n\n### Plug mappings\n\n`:help ultest-mappings`\n\nFor example to be able to jump between failures in a test file:\n\n```vim\nnmap ]t \u003cPlug\u003e(ultest-next-fail)\nnmap [t \u003cPlug\u003e(ultest-prev-fail)\n```\n\nFor configuration options and more documentation see `:h ultest`\n\n## Debugging\n\n`:help ultest-debugging`\n\nDebugging with nvim-dap is supported but some user configuration is required.\nSee the [debugging recipes](https://github.com/rcarriga/vim-ultest/wiki/Debugging-Recipes) for some working configurations.\nIf you do not see one for your runner/language, please submit a change to the wiki so others can use it too!\n\n## Feedback\n\nFeel free to open an issue for bug reports, feature requests or suggestions.\nI will try address them as soon as I can!\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcarriga%2Fvim-ultest","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frcarriga%2Fvim-ultest","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frcarriga%2Fvim-ultest/lists"}