2016-03-29 06:37:15 +00:00
|
|
|
describe("Dbg module", function()
|
2016-08-12 06:05:18 +00:00
|
|
|
local dbg, dbg_on
|
2016-03-29 06:37:15 +00:00
|
|
|
setup(function()
|
|
|
|
package.path = "?.lua;common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path
|
|
|
|
dbg = require("dbg")
|
2016-08-12 06:05:18 +00:00
|
|
|
dbg_on = dbg.is_on
|
|
|
|
end)
|
|
|
|
|
|
|
|
after_each(function()
|
|
|
|
if dbg_on then
|
|
|
|
dbg:turnOn()
|
|
|
|
else
|
|
|
|
dbg:turnOff()
|
|
|
|
end
|
2016-03-29 06:37:15 +00:00
|
|
|
end)
|
|
|
|
|
|
|
|
it("setup mt.__call and guard after tunrnOn is called", function()
|
2016-08-12 06:05:18 +00:00
|
|
|
dbg:turnOff()
|
2016-03-29 06:37:15 +00:00
|
|
|
local old_call = getmetatable(dbg).__call
|
|
|
|
local old_guard = dbg.guard
|
|
|
|
dbg:turnOn()
|
|
|
|
assert.is_not.same(old_call, getmetatable(dbg).__call)
|
|
|
|
assert.is_not.same(old_guard, dbg.guard)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("should call pre_gard callback", function()
|
|
|
|
local called = false
|
|
|
|
local foo = {}
|
|
|
|
function foo:bar() end
|
|
|
|
assert.is.falsy(called)
|
|
|
|
|
|
|
|
dbg:turnOff()
|
|
|
|
assert.is.falsy(called)
|
|
|
|
|
|
|
|
dbg:turnOn()
|
|
|
|
dbg:guard(foo, 'bar', function() called = true end)
|
|
|
|
foo:bar()
|
|
|
|
assert.is.truthy(called)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("should call post_gard callback", function()
|
|
|
|
local called = false
|
|
|
|
local foo = {}
|
|
|
|
function foo:bar() end
|
|
|
|
assert.is.falsy(called)
|
|
|
|
|
|
|
|
dbg:turnOff()
|
|
|
|
assert.is.falsy(called)
|
|
|
|
|
|
|
|
dbg:turnOn()
|
|
|
|
dbg:guard(foo, 'bar', nil, function() called = true end)
|
|
|
|
foo:bar()
|
|
|
|
assert.is.truthy(called)
|
|
|
|
end)
|
|
|
|
|
|
|
|
it("should return all values returned by the guarded function", function()
|
2017-08-08 20:35:40 +00:00
|
|
|
local called = false
|
|
|
|
local re
|
2016-03-29 06:37:15 +00:00
|
|
|
local foo = {}
|
|
|
|
function foo:bar() return 1 end
|
|
|
|
assert.is.falsy(called)
|
|
|
|
|
|
|
|
dbg:turnOn()
|
|
|
|
dbg:guard(foo, 'bar', function() called = true end)
|
|
|
|
re = {foo:bar()}
|
|
|
|
assert.is.truthy(called)
|
|
|
|
assert.is.same(re, {1})
|
|
|
|
|
|
|
|
called = false
|
|
|
|
function foo:bar() return 1, 2, 3 end
|
|
|
|
dbg:guard(foo, 'bar', function() called = true end)
|
|
|
|
assert.is.falsy(called)
|
|
|
|
re = {foo:bar()}
|
|
|
|
assert.is.same(re, {1, 2, 3})
|
|
|
|
end)
|
|
|
|
end)
|