mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
Fix f_jobstop() failed loudly
The return value of jobstop() @return 1 for valid job id 0 for invalid id, including jobs have exited or stopped
This commit is contained in:
parent
270cd623ef
commit
041ec8997a
@ -5502,6 +5502,9 @@ jobstop({id}) *jobstop()*
|
|||||||
(if any) will be invoked.
|
(if any) will be invoked.
|
||||||
See |job-control|.
|
See |job-control|.
|
||||||
|
|
||||||
|
Returns 1 for valid job id, 0 for invalid id, including jobs have
|
||||||
|
exited or stopped.
|
||||||
|
|
||||||
jobwait({jobs}[, {timeout}]) *jobwait()*
|
jobwait({jobs}[, {timeout}]) *jobwait()*
|
||||||
Waits for jobs and their |on_exit| handlers to complete.
|
Waits for jobs and their |on_exit| handlers to complete.
|
||||||
|
|
||||||
|
@ -12706,7 +12706,7 @@ static void f_jobstop(typval_T *argvars, typval_T *rettv, FunPtr fptr)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Channel *data = find_job(argvars[0].vval.v_number, true);
|
Channel *data = find_job(argvars[0].vval.v_number, false);
|
||||||
if (!data) {
|
if (!data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -306,16 +306,16 @@ describe('jobs', function()
|
|||||||
end))
|
end))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('disallows jobsend/stop on a non-existent job', function()
|
it('disallows jobsend on a non-existent job', function()
|
||||||
eq(false, pcall(eval, "jobsend(-1, 'lol')"))
|
eq(false, pcall(eval, "jobsend(-1, 'lol')"))
|
||||||
eq(false, pcall(eval, "jobstop(-1)"))
|
eq(0, eval('jobstop(-1)'))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('disallows jobstop twice on the same job', function()
|
it('jobstop twice on the stopped or exited job return 0', function()
|
||||||
nvim('command', "let j = jobstart(['cat', '-'], g:job_opts)")
|
nvim('command', "let j = jobstart(['cat', '-'], g:job_opts)")
|
||||||
neq(0, eval('j'))
|
neq(0, eval('j'))
|
||||||
eq(true, pcall(eval, "jobstop(j)"))
|
eq(1, eval("jobstop(j)"))
|
||||||
eq(false, pcall(eval, "jobstop(j)"))
|
eq(0, eval("jobstop(j)"))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
it('will not leak memory if we leave a job running', function()
|
it('will not leak memory if we leave a job running', function()
|
||||||
@ -919,6 +919,13 @@ describe('jobs', function()
|
|||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
it('jobstop on same id before stopped', function()
|
||||||
|
nvim('command', 'let j = jobstart(["cat", "-"], g:job_opts)')
|
||||||
|
neq(0, eval('j'))
|
||||||
|
|
||||||
|
eq({1, 0}, eval('[jobstop(j), jobstop(j)]'))
|
||||||
|
end)
|
||||||
|
|
||||||
describe('running tty-test program', function()
|
describe('running tty-test program', function()
|
||||||
if helpers.pending_win32(pending) then return end
|
if helpers.pending_win32(pending) then return end
|
||||||
local function next_chunk()
|
local function next_chunk()
|
||||||
|
Loading…
Reference in New Issue
Block a user