Files
turbo-debug.nvim/tests/test_helpers.lua
T
swaits 85ff3b1688 refactor: extract helpers, dedup patterns, add regression tests
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
2026-04-12 19:42:54 -06:00

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")