mirror of
https://github.com/folke/lazy.nvim.git
synced 2025-04-20 05:16:45 +00:00
refactor: use new async code for runner and simplify task class
This commit is contained in:
parent
768de1ebf6
commit
765773a176
5 changed files with 133 additions and 205 deletions
|
@ -30,12 +30,11 @@ describe("runner", function()
|
|||
end,
|
||||
}
|
||||
package.loaded["lazy.manage.task.test"]["async" .. i] = {
|
||||
---@async
|
||||
---@param task LazyTask
|
||||
run = function(task)
|
||||
task:async(function()
|
||||
coroutine.yield()
|
||||
table.insert(runs, { plugin = task.plugin.name, task = task.name })
|
||||
end)
|
||||
coroutine.yield()
|
||||
table.insert(runs, { plugin = task.plugin.name, task = task.name })
|
||||
end,
|
||||
}
|
||||
end
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
---@module 'luassert'
|
||||
--# selene:allow(incorrect_standard_library_use)
|
||||
local Task = require("lazy.manage.task")
|
||||
|
||||
|
@ -20,12 +21,10 @@ describe("task", function()
|
|||
|
||||
it("simple function", function()
|
||||
local task = Task.new(plugin, "test", function() end, opts)
|
||||
assert(not task:has_started())
|
||||
assert(not task:is_running())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
task:wait()
|
||||
assert(not task:is_running())
|
||||
assert(task:is_done())
|
||||
assert(task_result.done)
|
||||
end)
|
||||
|
||||
|
@ -33,11 +32,9 @@ describe("task", function()
|
|||
local task = Task.new(plugin, "test", function()
|
||||
error("test")
|
||||
end, opts)
|
||||
assert(not task:has_started())
|
||||
assert(not task:is_running())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
task:wait()
|
||||
assert(task:is_done())
|
||||
assert(not task:is_running())
|
||||
assert(task_result.done)
|
||||
assert(task_result.error)
|
||||
|
@ -46,21 +43,17 @@ describe("task", function()
|
|||
|
||||
it("async", function()
|
||||
local running = true
|
||||
local task = Task.new(plugin, "test", function(task)
|
||||
task:async(function()
|
||||
coroutine.yield()
|
||||
running = false
|
||||
end)
|
||||
---@async
|
||||
local task = Task.new(plugin, "test", function()
|
||||
coroutine.yield()
|
||||
running = false
|
||||
end, opts)
|
||||
assert(not task:is_running())
|
||||
assert(not task:has_started())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
assert(running)
|
||||
assert(task:is_running())
|
||||
assert(not task:is_done())
|
||||
task:wait()
|
||||
assert(not running)
|
||||
assert(task:is_done())
|
||||
assert(not task:is_running())
|
||||
assert(task_result.done)
|
||||
assert(not task.error)
|
||||
|
@ -70,8 +63,8 @@ describe("task", function()
|
|||
local task = Task.new(plugin, "spawn_errors", function(task)
|
||||
task:spawn("foobar")
|
||||
end, opts)
|
||||
assert(not task:is_running())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
task:wait()
|
||||
assert(not task:is_running())
|
||||
assert(task_result.done)
|
||||
|
@ -82,13 +75,11 @@ describe("task", function()
|
|||
local task = Task.new(plugin, "test", function(task)
|
||||
task:spawn("echo", { args = { "foo" } })
|
||||
end, opts)
|
||||
assert(not task:is_running())
|
||||
assert(not task:has_started())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
task:wait()
|
||||
assert(task:is_done())
|
||||
assert.same(task.output, "foo\n")
|
||||
assert(task_result.done)
|
||||
assert(not task.error)
|
||||
|
@ -99,8 +90,8 @@ describe("task", function()
|
|||
task:spawn("echo", { args = { "foo" } })
|
||||
task:spawn("echo", { args = { "bar" } })
|
||||
end, opts)
|
||||
assert(not task:is_running())
|
||||
task:start()
|
||||
assert(task:has_started())
|
||||
assert(task:is_running())
|
||||
assert(task:is_running())
|
||||
task:wait()
|
||||
assert(task.output == "foo\nbar\n" or task.output == "bar\nfoo\n", task.output)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue