refactor: use new async code for runner and simplify task class

This commit is contained in:
Folke Lemaitre 2024-06-26 17:06:56 +02:00
parent 768de1ebf6
commit 765773a176
No known key found for this signature in database
GPG key ID: 41F8B1FBACAE2040
5 changed files with 133 additions and 205 deletions

View file

@ -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

View file

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