Skip to content

Commit 5b986ed

Browse files
committed
Reset new flag for run_last
Otherwise repeated run_last will stop terminating the running session Closes #878
1 parent 72684a4 commit 5b986ed

File tree

3 files changed

+44
-1
lines changed

3 files changed

+44
-1
lines changed

lua/dap.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,6 +438,7 @@ function M.run(config, opts)
438438
return
439439
end
440440
opts.filetype = opts.filetype or vim.bo.filetype
441+
opts.new = nil
441442
last_run = {
442443
config = config,
443444
opts = opts,

tests/integration_spec.lua

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ local function run_and_wait_until_initialized(conf, server)
3535
-- wait for initialize and launch requests
3636
return (session and session.initialized and #server.spy.requests == 2)
3737
end, 100)
38-
return dap.session()
38+
return assert(dap.session(), "Must have session after run")
3939
end
4040

4141
describe('dap with fake server', function()
@@ -937,3 +937,39 @@ describe('progress support', function()
937937
assert.are.same('Running: Launch file', progress.status())
938938
end)
939939
end)
940+
941+
942+
describe("run_last", function()
943+
local server
944+
before_each(function()
945+
server = require('tests.server').spawn()
946+
dap.adapters.dummy = server.adapter
947+
end)
948+
after_each(function()
949+
server.stop()
950+
dap.terminate()
951+
end)
952+
953+
it('can repeat run_last and it always clears session', function()
954+
server.client.initialize = function(self, request)
955+
self:send_response(request, {
956+
supportsTerminateRequest = true,
957+
})
958+
self:send_event("initialized", {})
959+
end
960+
961+
run_and_wait_until_initialized(config, server)
962+
server.spy.clear()
963+
dap.run_last()
964+
wait(function() return #server.spy.requests == 3 end)
965+
local commands = vim.tbl_map(function(x) return x.command end, server.spy.requests)
966+
assert.are.same({"terminate", "initialize", "launch"}, commands)
967+
assert.are.same(1, vim.tbl_count(dap.sessions()))
968+
969+
dap.run_last()
970+
wait(function() return #server.spy.requests == 3 end)
971+
commands = vim.tbl_map(function(x) return x.command end, server.spy.requests)
972+
assert.are.same({"terminate", "initialize", "launch"}, commands)
973+
assert.are.same(1, vim.tbl_count(dap.sessions()))
974+
end)
975+
end)

tests/server.lua

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ function Client:disconnect(request)
9696
end
9797

9898

99+
function Client:terminate(request)
100+
self:send_event('terminated', {})
101+
self:send_response(request, {})
102+
end
103+
104+
99105
function Client:launch(request)
100106
self:send_response(request, {})
101107
end

0 commit comments

Comments
 (0)