Mechanical cleanup pass, behavior-preserving: - remove dead code: reposition_bars (unused), sbar click infrastructure (zones never populated, handler iterated empty list) - extract helpers in mode.lua: win_ok, buf_ok, is_dapui_pane_ft, for_each_dapui_pane (asymmetric filter preserved), safe_extmark, bar_set_lines, safe_set_height, if_still_active, invalidate_dead_bars, focus_source_win, unset_and_restore - inline install_cs_listener inside define_highlights to dedup the three ColorScheme augroup+autocmd triples (italic, key, sep) - data-drive sign_define in breakpoints.lua - data-drive python interpreter candidate probing - add tests/test_render_bars.lua pinning sbar/cbar output dimensions, zones, and overflow fallback behavior - add tests/test_highlights_cs.lua verifying ColorScheme augroups and highlight group existence / re-apply on event - add tests/test_helpers.lua unit-testing keyof and source_window - expose M._test (direct function refs) so render/highlight internals are testable in headless mode
50 lines
1.8 KiB
Lua
50 lines
1.8 KiB
Lua
-- Unit tests for the helpers introduced during cleanup refactor.
|
|
-- Exercises helpers indirectly via observable side effects on bar/pane state.
|
|
|
|
local h = require("helpers")
|
|
local assert_eq = h.assert_eq
|
|
local assert_true = h.assert_true
|
|
local assert_false = h.assert_false
|
|
|
|
local mode = require("turbo-debug.mode")
|
|
local config = require("turbo-debug.config")
|
|
config.merge({})
|
|
|
|
-- keyof ---------------------------------------------------------------------
|
|
-- Reset, then exercise the three return paths.
|
|
config.merge({})
|
|
assert_eq(mode._test.keyof("continue", "c"), "c", "default key")
|
|
config.merge({ keys = { continue = "n" } })
|
|
assert_eq(mode._test.keyof("continue", "c"), "n", "user override")
|
|
config.merge({ keys = { continue = false } })
|
|
assert_eq(mode._test.keyof("continue", "c"), nil, "disabled returns nil")
|
|
config.merge({})
|
|
|
|
-- source_window -------------------------------------------------------------
|
|
-- Skips bars/dapui-panes; returns a source window when one exists.
|
|
do
|
|
local buf = vim.api.nvim_create_buf(false, true)
|
|
vim.bo[buf].filetype = "lua"
|
|
vim.api.nvim_set_current_buf(buf)
|
|
local w = mode._test.source_window()
|
|
assert_true(w ~= nil, "source_window finds lua buffer")
|
|
end
|
|
|
|
do
|
|
-- Switch current to a dapui-pane filetype; source_window should still
|
|
-- find another source window if one exists.
|
|
local buf = vim.api.nvim_create_buf(false, true)
|
|
vim.bo[buf].filetype = "dapui_scopes"
|
|
vim.cmd("split")
|
|
vim.api.nvim_set_current_buf(buf)
|
|
local w = mode._test.source_window()
|
|
if w then
|
|
local ft = vim.bo[vim.api.nvim_win_get_buf(w)].filetype
|
|
assert_false(ft:match("^dapui_"), "source_window skips dapui_* filetypes")
|
|
assert_true(ft ~= "dap-repl", "source_window skips dap-repl")
|
|
assert_true(ft ~= "TurboDebugBar", "source_window skips TurboDebugBar")
|
|
end
|
|
end
|
|
|
|
print("ALL HELPER TESTS PASSED")
|