117 lines
2.1 KiB
Lua
117 lines
2.1 KiB
Lua
local curl = require "lcurl"
|
|
|
|
local called, active_coroutine = 0
|
|
|
|
-- for Lua 5.1 compat
|
|
local function co_running()
|
|
local co, main = coroutine.running()
|
|
if main == true then return nil end
|
|
return co
|
|
end
|
|
|
|
function on_timer()
|
|
called = called + 1
|
|
-- use `os.exit` because now Lua-cURL did not propogate error from callback
|
|
if co_running() ~= active_coroutine then os.exit(-1) end
|
|
end
|
|
|
|
local function test_1()
|
|
io.write('Test #1 - ')
|
|
|
|
called, active_coroutine = 0
|
|
|
|
local e = curl.easy()
|
|
local m = curl.multi{ timerfunction = on_timer }
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
m:add_handle(e)
|
|
end)
|
|
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 1)
|
|
|
|
active_coroutine = nil
|
|
m:remove_handle(e)
|
|
assert(called == 2)
|
|
|
|
io.write('pass!\n')
|
|
end
|
|
|
|
local function test_2()
|
|
io.write('Test #2 - ')
|
|
|
|
called, active_coroutine = 0
|
|
|
|
local e = curl.easy()
|
|
local m = curl.multi{ timerfunction = on_timer }
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
m:add_handle(e)
|
|
end)
|
|
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 1)
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
m:remove_handle(e)
|
|
end)
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 2)
|
|
|
|
io.write('pass!\n')
|
|
end
|
|
|
|
local function test_3()
|
|
io.write('Test #3 - ')
|
|
|
|
called, active_coroutine = 0
|
|
|
|
local e = curl.easy()
|
|
local m = curl.multi{ timerfunction = on_timer }
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
m:add_handle(e)
|
|
end)
|
|
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 1)
|
|
|
|
active_coroutine = nil
|
|
e:close()
|
|
assert(called == 2)
|
|
|
|
io.write('pass!\n')
|
|
end
|
|
|
|
local function test_4()
|
|
io.write('Test #4 - ')
|
|
|
|
called, active_coroutine = 0
|
|
|
|
local e = curl.easy()
|
|
local m = curl.multi{ timerfunction = on_timer }
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
m:add_handle(e)
|
|
end)
|
|
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 1)
|
|
|
|
active_coroutine = coroutine.create(function()
|
|
e:close()
|
|
end)
|
|
coroutine.resume(active_coroutine)
|
|
assert(called == 2)
|
|
|
|
io.write('pass!\n')
|
|
end
|
|
|
|
test_1()
|
|
|
|
test_2()
|
|
|
|
test_3()
|
|
|
|
test_4()
|