diff options
author | Matthew Wild <mwild1@gmail.com> | 2022-10-07 17:43:26 +0100 |
---|---|---|
committer | Matthew Wild <mwild1@gmail.com> | 2022-10-07 17:43:26 +0100 |
commit | aed0c1c5ababe8b44ac8f88ef423b641c0c6ec4f (patch) | |
tree | dcdc35f85e95dce57fbcb32ec6c7cfbaa32b876c /spec | |
parent | d08ddc1f4a1c6d93342bd8efd69c837782656f1f (diff) | |
download | prosody-aed0c1c5ababe8b44ac8f88ef423b641c0c6ec4f.tar.gz prosody-aed0c1c5ababe8b44ac8f88ef423b641c0c6ec4f.zip |
util.promise: Remove some redundant checks, add tests confirming redundancy
This lines don't appear to do anything useful, and all tests pass when they
are removed. Discovered via mutation testing.
I added extra tests to exercise this code, because I wasn't certain that there
were no side-effects caused by removal. Everything appears to be fine, thanks
to the "pending" check at the start of promise_settle().
Diffstat (limited to 'spec')
-rw-r--r-- | spec/util_promise_spec.lua | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/spec/util_promise_spec.lua b/spec/util_promise_spec.lua index 597b56f8..75e9294e 100644 --- a/spec/util_promise_spec.lua +++ b/spec/util_promise_spec.lua @@ -30,6 +30,27 @@ describe("util.promise", function () r("foo"); assert.spy(cb).was_called(1); end); + it("ignores resolve/reject of settled promises", function () + local res, rej; + local p = promise.new(function (resolve, reject) + res, rej = resolve, reject; + end); + local cb = spy.new(function (v) + assert.equal("foo", v); + end); + p:next(cb, cb); + assert.spy(cb).was_called(0); + res("foo"); + assert.spy(cb).was_called(1); + rej("bar"); + assert.spy(cb).was_called(1); + rej(promise.resolve("bar")); + assert.spy(cb).was_called(1); + res(promise.reject("bar")); + assert.spy(cb).was_called(1); + res(promise.resolve("bar")); + assert.spy(cb).was_called(1); + end); it("allows chaining :next() calls", function () local r; local result; |