Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/V13Axel/neotest-pest
Neotest adapter for Pest 2.0
https://github.com/V13Axel/neotest-pest
Last synced: 7 days ago
JSON representation
Neotest adapter for Pest 2.0
- Host: GitHub
- URL: https://github.com/V13Axel/neotest-pest
- Owner: V13Axel
- License: mit
- Created: 2024-02-05T21:48:29.000Z (9 months ago)
- Default Branch: main
- Last Pushed: 2024-06-13T13:58:58.000Z (5 months ago)
- Last Synced: 2024-08-02T16:45:36.894Z (3 months ago)
- Language: Lua
- Homepage:
- Size: 87.9 KB
- Stars: 14
- Watchers: 0
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# neotest-pest
This plugin provides a [Pest](https://pestphp.com) adapter for the [Neotest](https://github.com/nvim-neotest/neotest) framework.
This is a fork of `neotest-pest` originally by [@theutz](https://github.com/theutz/neotest-pest), with some fixes and updates:
- Updated to work with [Pest](https://pestphp.com) 2.0
- Support for (and automatic detection of) Laravel Sail
- Note: This also moves junit output files into `storage/app/`
- Parallel testing support:warning: _Ive only focused on making this work for me. Please test against your Pest tests_ :warning:
## :package: Installation
Install the plugin using your favorite package manager.
Here's an example using lazy.nvim:
```lua
{
'nvim-neotest/neotest',
dependencies = {
...,
'V13Axel/neotest-pest',
},
config = function()
require('neotest').setup({
...,
adapters = {
require('neotest-pest'),
}
})
end
}
```## :wrench: Configuration
> [!TIP]
> Any of these options can be set to a lua function that returns the desired result. For example, wanna run tests in parallel, one for each CPU core?
> `parallel = function() return #vim.loop.cpu_info() end,````lua
adapters = {
require('neotest-pest')({
-- Ignore these directories when looking for tests
-- -- Default: { "vendor", "node_modules" }
ignore_dirs = { "vendor", "node_modules" }-- Ignore any projects containing "phpunit-only.tests"
-- -- Default: {}
root_ignore_files = { "phpunit-only.tests" },-- Specify suffixes for files that should be considered tests
-- -- Default: { "Test.php" }
test_file_suffixes = { "Test.php", "_test.php", "PestTest.php" },-- Sail not properly detected? Explicitly enable it.
-- -- Default: function() that checks for sail presence
sail_enabled = function() return false end,-- Custom sail executable. Not running in Sail, but running bare Docker?
-- Set `sail_enabled` = true and `sail_executable` to { "docker", "exec", "[somecontainer]" }
-- -- Default: "vendor/bin/sail"
sail_executable = "vendor/bin/sail",-- Custom sail project root path.
-- -- Default: "/var/www/html"
sail_project_path = "/var/www/html",-- Custom pest binary.
-- -- Default: function that checks for sail presence
pest_cmd = "vendor/bin/pest",-- Run N tests in parallel, <=1 doesn't pass --parallel to pest at all
-- -- Default: 0
parallel = 16-- Enable ["compact" output printer](https://pestphp.com/docs/optimizing-tests#content-compact-printer)
-- -- Default: false
compact = false,-- Set a custom path for the results XML file, parsed by this adapter
--
------------------------------------------------------------------------------------
-- NOTE: This must be a path accessible by both your test runner AND your editor! --
------------------------------------------------------------------------------------
--
-- -- Default: function that checks for sail presence.
-- -- - If no sail: Numbered file in randomized /tmp/ directory (using async.fn.tempname())
-- -- - If sail: "storage/app/" .. os.date("junit-%Y%m%d-%H%M%S")
results_path = function() "/some/accessible/path" end,
}),
}
```## :rocket: Usage
#### Test single method
To test a single test, hover over the test and run `lua require('neotest').run.run()`.
As an example, I have mine setup with t(est)n(earest) as such:
```lua
vim.keymap.set('n', 'tn', function() require('neotest').run.run() end)
```#### Test file
To test a file run `lua require('neotest').run.run(vim.fn.expand('%'))`
Example - t(est)f(ile):
```lua
vim.keymap.set('n', 'tf', function() require('neotest').run.run(vim.fn.expand('%')) end)
```#### Test directory
To test a directory run `lua require('neotest').run.run("path/to/directory")`
#### Test suite
To test the full test suite run `lua require('neotest').run.run({ suite = true })`
## :gift: Contributing
I'm just one guy, maintaining this in my spare time and when I can get to it. Please raise a PR if you are interested in adding new functionality or fixing any bugs. When submitting a bug, please include an example test that I can test against.
To trigger the tests for the adapter, run:
```sh
./scripts/test
```## :clap: Prior Art
This package is a fork of [neotest-pest](https://github.com/theutz/neotest-pest) by [@theutz](https://github.com/olimorris), which relied _heavily_ on [olimorris/neotest-phpunit](https://github.com/olimorris/neotest-phpunit) by [@olimorris](https://github.com/olimorris).