From 0139ed512f42b2fce5899aed9aeb0cf71ead1560 Mon Sep 17 00:00:00 2001 From: Eryn Lynn Date: Sun, 15 Sep 2019 02:50:53 -0400 Subject: [PATCH] Fix Promise.promisify and add test --- lib/init.lua | 4 +++- lib/init.spec.lua | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/init.lua b/lib/init.lua index a8ca86e..3c32a17 100644 --- a/lib/init.lua +++ b/lib/init.lua @@ -339,7 +339,9 @@ function Promise.promisify(callback) return function(...) local length, values = pack(...) return Promise.new(function(resolve) - resolve(coroutine.wrap(callback)(unpack(values, 1, length))) + coroutine.wrap(function() + resolve(callback(unpack(values, 1, length))) + end)() end) end end diff --git a/lib/init.spec.lua b/lib/init.spec.lua index aa8d8ed..1efc15c 100644 --- a/lib/init.spec.lua +++ b/lib/init.spec.lua @@ -582,4 +582,18 @@ return function() expect(promises[2]:getStatus()).to.equal(Promise.Status.Resolved) end) end) + + describe("Promise.promisify", function() + it("should wrap functions", function() + local function test(n) + return n + 1 + end + + local promisified = Promise.promisify(test) + local status, result = promisified(1):awaitStatus() + + expect(status).to.equal(Promise.Status.Resolved) + expect(result).to.equal(2) + end) + end) end \ No newline at end of file