|
|
|
@ -7,53 +7,21 @@ return { |
|
|
|
"antoinemadec/FixCursorHold.nvim", |
|
|
|
"nvim-neotest/nvim-nio", |
|
|
|
-- Adapters |
|
|
|
"tovijaeschke/neotest-phpunit", |
|
|
|
"olimorris/neotest-phpunit", |
|
|
|
"praem90/neotest-docker-phpunit.nvim", |
|
|
|
"nvim-neotest/neotest-go", |
|
|
|
}, |
|
|
|
config = function() |
|
|
|
local neotest = require("neotest") |
|
|
|
local keymap = vim.keymap |
|
|
|
|
|
|
|
-- Docker service management for PHP tests |
|
|
|
local current_service = "app-fpm" |
|
|
|
local phpunit_adapter = nil |
|
|
|
|
|
|
|
local function get_phpunit_cmd(service) |
|
|
|
service = service or current_service |
|
|
|
return { "docker", "compose", "exec", service, "./vendor/bin/phpunit" } |
|
|
|
end |
|
|
|
|
|
|
|
local function switch_service() |
|
|
|
local services = { "app-fpm", "fpm", "subscription-fpm" } |
|
|
|
vim.ui.select(services, { |
|
|
|
prompt = "Select Docker service for PHPUnit:", |
|
|
|
format_item = function(item) |
|
|
|
return item .. (item == current_service and " (current)" or "") |
|
|
|
end, |
|
|
|
}, function(choice) |
|
|
|
if choice then |
|
|
|
current_service = choice |
|
|
|
vim.notify("PHPUnit service switched to: " .. choice, vim.log.levels.INFO) |
|
|
|
|
|
|
|
-- Recreate the adapter with new service |
|
|
|
phpunit_adapter = require("neotest-phpunit")({ |
|
|
|
root_files = { "phpunit.xml", "composer.json" }, |
|
|
|
phpunit_cmd = get_phpunit_cmd(choice), |
|
|
|
filter_dirs = { "vendor" }, |
|
|
|
mapped_docker_dir = "/var/www", |
|
|
|
append_to_cwd = "/api", |
|
|
|
}) |
|
|
|
|
|
|
|
-- Reinitialize neotest with the new adapter |
|
|
|
vim.notify("Restart Neovim for service change to take full effect", vim.log.levels.WARN) |
|
|
|
end |
|
|
|
end) |
|
|
|
end |
|
|
|
|
|
|
|
-- Environment setup |
|
|
|
vim.env.PROJECT_ROOT = vim.fn.getcwd() .. "/backend/" |
|
|
|
vim.env.ENV_PATH = vim.fn.getcwd() .. "/backend/.env" |
|
|
|
|
|
|
|
-- Container toggle state |
|
|
|
local current_container = "app-fpm" |
|
|
|
|
|
|
|
-- Test running keymaps |
|
|
|
keymap.set("n", "<leader>tr", function() |
|
|
|
neotest.run.run() |
|
|
|
@ -103,58 +71,78 @@ return { |
|
|
|
neotest.jump.next({ status = "failed" }) |
|
|
|
end, { desc = "Jump to next failed test" }) |
|
|
|
|
|
|
|
-- Service switching keymap |
|
|
|
keymap.set("n", "<leader>tc", switch_service, { desc = "Change PHPUnit docker service" }) |
|
|
|
|
|
|
|
-- Setup neotest |
|
|
|
neotest.setup({ |
|
|
|
adapters = { |
|
|
|
require("neotest-phpunit")({ |
|
|
|
root_files = { "phpunit.xml", "composer.json" }, |
|
|
|
phpunit_cmd = get_phpunit_cmd(), |
|
|
|
filter_dirs = { "vendor" }, |
|
|
|
mapped_docker_dir = "/var/www", |
|
|
|
append_to_cwd = "/api", |
|
|
|
}), |
|
|
|
require("neotest-go")({ |
|
|
|
root = function() |
|
|
|
return './backend' |
|
|
|
end, |
|
|
|
experimental = { |
|
|
|
test_table = true, |
|
|
|
}, |
|
|
|
args = { "-count=1", "-timeout=60s" }, |
|
|
|
}), |
|
|
|
}, |
|
|
|
output = { |
|
|
|
enabled = true, |
|
|
|
open_on_run = false, |
|
|
|
}, |
|
|
|
output_panel = { |
|
|
|
enabled = true, |
|
|
|
open = "botright split | resize 15", |
|
|
|
}, |
|
|
|
quickfix = { |
|
|
|
enabled = true, |
|
|
|
open = false, |
|
|
|
-- Setup neotest function |
|
|
|
local cwd = vim.fn.getcwd() |
|
|
|
local app_path = cwd .. "/app/api" |
|
|
|
local subscription_path = cwd .. "/subscription/api" |
|
|
|
|
|
|
|
-- Config table that we can modify |
|
|
|
local docker_config = { |
|
|
|
default = { |
|
|
|
container = current_container, |
|
|
|
volume = (current_container == "subscription-fpm" and subscription_path or app_path) .. ":/var/www", |
|
|
|
standalone = false, |
|
|
|
}, |
|
|
|
status = { |
|
|
|
enabled = true, |
|
|
|
virtual_text = true, |
|
|
|
signs = true, |
|
|
|
}, |
|
|
|
icons = { |
|
|
|
passed = "", |
|
|
|
running = "", |
|
|
|
failed = "", |
|
|
|
unknown = "", |
|
|
|
skipped = "", |
|
|
|
}, |
|
|
|
floating = { |
|
|
|
border = "rounded", |
|
|
|
max_height = 0.8, |
|
|
|
max_width = 0.9, |
|
|
|
}, |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
local function setup_neotest() |
|
|
|
neotest.setup({ |
|
|
|
adapters = { |
|
|
|
require("neotest-docker-phpunit").setup({ |
|
|
|
phpunit_cmd = "neotest-docker-phpunit", |
|
|
|
docker_phpunit = docker_config, |
|
|
|
}), |
|
|
|
require("neotest-go")({ |
|
|
|
root = function() |
|
|
|
return './backend' |
|
|
|
end, |
|
|
|
experimental = { |
|
|
|
test_table = true, |
|
|
|
}, |
|
|
|
args = { "-count=1", "-timeout=60s" }, |
|
|
|
}), |
|
|
|
}, |
|
|
|
output = { |
|
|
|
enabled = true, |
|
|
|
open_on_run = false, |
|
|
|
}, |
|
|
|
output_panel = { |
|
|
|
enabled = true, |
|
|
|
open = "botright split | resize 15", |
|
|
|
}, |
|
|
|
quickfix = { |
|
|
|
enabled = true, |
|
|
|
open = false, |
|
|
|
}, |
|
|
|
status = { |
|
|
|
enabled = true, |
|
|
|
virtual_text = true, |
|
|
|
signs = true, |
|
|
|
}, |
|
|
|
floating = { |
|
|
|
border = "rounded", |
|
|
|
max_height = 0.8, |
|
|
|
max_width = 0.9, |
|
|
|
}, |
|
|
|
}) |
|
|
|
end |
|
|
|
|
|
|
|
-- Initial setup |
|
|
|
setup_neotest() |
|
|
|
|
|
|
|
-- Container toggle keybind |
|
|
|
keymap.set("n", "<leader>tc", function() |
|
|
|
if current_container == "app-fpm" then |
|
|
|
current_container = "subscription-fpm" |
|
|
|
else |
|
|
|
current_container = "app-fpm" |
|
|
|
end |
|
|
|
|
|
|
|
-- Update the config table directly |
|
|
|
docker_config.default.container = current_container |
|
|
|
docker_config.default.volume = (current_container == "subscription-fpm" and subscription_path or app_path) .. ":/var/www" |
|
|
|
|
|
|
|
vim.notify("Switched to container: " .. current_container, vim.log.levels.INFO) |
|
|
|
end, { desc = "Toggle container (app/subscription)" }) |
|
|
|
end, |
|
|
|
} |