Skip to content

Commit

Permalink
Fix check for "exited or ran" to reset every time #213
Browse files Browse the repository at this point in the history
  • Loading branch information
sakhnik committed Jan 25, 2025
1 parent 45aa967 commit 78e3dcc
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 21 deletions.
7 changes: 5 additions & 2 deletions lua/nvimgdb/backend/gdb.lua
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,11 @@ function C.create_parser(actions, proxy)
if #location == 2 then
local fname = location[1]
local line = location[2]
if (fname ~= self.prev_fname or line ~= self.prev_line) or
proxy:query('has-exited-or-ran') then
-- The "exited or ran" check is stateful, call it every time
-- before any other check to ensure the state is reset.
if proxy:query('has-exited-or-ran')
or (fname ~= self.prev_fname or line ~= self.prev_line)
then
self.prev_line = line
self.prev_fname = fname
self.actions:jump_to_source(fname, line)
Expand Down
40 changes: 21 additions & 19 deletions test/12_navigation_spec.lua
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,27 @@ local eng = require'engine'
describe("navigation", function()
conf.backend(function(backend)
it(backend.name .. ' no undesired jump', function()
conf.post_terminal_end(function()
eng.feed(backend.launch)
assert.is_true(eng.wait_paused())
eng.feed("b Baz<cr>")
eng.feed("r<cr>")
assert.is_true(eng.wait_signs({cur = 'lib.hpp:7', brk = {[1] = {7}}}))
eng.feed("n<cr>")
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8', brk = {[1] = {7}}}))
eng.feed('<esc><c-w>w')
eng.feed(':e src/test.cpp<cr>')
-- check that the breakpoints aren't visible (moved to test.cpp)
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
eng.feed('<c-w>wi')
eng.feed('p')
-- check that we stay in test.cpp
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
eng.feed(' ret<cr>')
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
end)
if backend.name == 'gdb' then
conf.post_terminal_end(function()
eng.feed(backend.launch)
assert.is_true(eng.wait_paused())
eng.feed("b Baz<cr>")
eng.feed("r<cr>")
assert.is_true(eng.wait_signs({cur = 'lib.hpp:7', brk = {[1] = {7}}}))
eng.feed("n<cr>")
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8', brk = {[1] = {7}}}))
eng.feed('<esc><c-w>w')
eng.feed(':e src/test.cpp<cr>')
-- check that the breakpoints aren't visible (moved to test.cpp)
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
eng.feed('<c-w>wi')
eng.feed('p')
-- check that we stay in test.cpp
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
eng.feed(' ret<cr>')
assert.is_true(eng.wait_signs({cur = 'lib.hpp:8'}))
end)
end
end)
end)
end)

0 comments on commit 78e3dcc

Please sign in to comment.