50 lines
1.1 KiB
Lua
50 lines
1.1 KiB
Lua
-- Tests Copas timeout mnechanism, when a timeout handler errors out
|
|
--
|
|
-- Run the test file, it should exit successfully without hanging.
|
|
|
|
-- make sure we are pointing to the local copas first
|
|
package.path = string.format("../src/?.lua;%s", package.path)
|
|
local copas = require("copas")
|
|
|
|
|
|
local tests = {}
|
|
|
|
|
|
function tests.error_on_timeout()
|
|
local err_received
|
|
|
|
copas.addthread(function()
|
|
copas.setErrorHandler(function(err, coro, skt)
|
|
err_received = err
|
|
end, true)
|
|
print "setting timeout in 0.1 seconds"
|
|
copas.timeout(0.1, function()
|
|
print "throwing an error now..."
|
|
error("oops...")
|
|
end)
|
|
print "going to sleep for 1 second"
|
|
copas.pause(1)
|
|
|
|
if not (err_received or ""):find("oops...", 1, true) then
|
|
print("expected to find the error string 'oops...', but got: " .. tostring(err_received))
|
|
os.exit(1)
|
|
end
|
|
end)
|
|
|
|
copas.loop()
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
-- test "framework"
|
|
for name, test in pairs(tests) do
|
|
print("testing: "..tostring(name))
|
|
local status, err = pcall(test)
|
|
if not status then
|
|
error(err)
|
|
end
|
|
end
|
|
|
|
print("[✓] all tests completed successuly")
|