Mercurial > prosody-hg
diff spec/util_events_spec.lua @ 11058:c99afee1c548
util.events: Add set_debug_hook() method
Hook signature:
ret = debug_hook(handler, event_name, event_data)
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Thu, 03 Sep 2020 12:59:43 +0100 |
| parents | befffddf1b25 |
| children | 19dd9522f107 |
line wrap: on
line diff
--- a/spec/util_events_spec.lua Sat Aug 29 18:51:13 2020 +0200 +++ b/spec/util_events_spec.lua Thu Sep 03 12:59:43 2020 +0100 @@ -208,5 +208,43 @@ assert.spy(h).was_called(2); end); end); + + describe("debug hooks", function () + it("should get called", function () + local d = spy.new(function (handler, event_name, event_data) + return handler(event_data); + end); + + e.add_handler("myevent", h); + e.fire_event("myevent"); + + assert.spy(h).was_called(1); + assert.spy(d).was_called(0); + + assert.is_nil(e.set_debug_hook(d)); + + e.fire_event("myevent", { mydata = true }); + + assert.spy(h).was_called(2); + assert.spy(d).was_called(1); + assert.spy(d).was_called_with(h, "myevent", { mydata = true }); + + assert.equal(d, e.set_debug_hook(nil)); + + e.fire_event("myevent", { mydata = false }); + + assert.spy(h).was_called(3); + assert.spy(d).was_called(1); + end); + it("setting should return any existing debug hook", function () + local function f() end + local function g() end + assert.is_nil(e.set_debug_hook(f)); + assert.is_equal(f, e.set_debug_hook(g)); + assert.is_equal(g, e.set_debug_hook(f)); + assert.is_equal(f, e.set_debug_hook(nil)); + assert.is_nil(e.set_debug_hook(f)); + end); + end); end); end);
