Software /
code /
prosody
Comparison
spec/util_async_spec.lua @ 8615:e77b37de482e
util.async: Behaviour change: continue to process queued items after errors
author | Matthew Wild <mwild1@gmail.com> |
---|---|
date | Sat, 17 Mar 2018 14:54:48 +0000 |
parent | 8614:bfbafeced0c4 |
child | 8616:a15c891c6232 |
comparison
equal
deleted
inserted
replaced
8614:bfbafeced0c4 | 8615:e77b37de482e |
---|---|
154 last_error = nil; | 154 last_error = nil; |
155 r:run("hello again"); | 155 r:run("hello again"); |
156 assert.equal(r.state, "ready"); | 156 assert.equal(r.state, "ready"); |
157 assert.equal(last_processed_item, "hello again"); | 157 assert.equal(last_processed_item, "hello again"); |
158 end); | 158 end); |
159 | |
160 it("should continue to process work items", function () | |
161 local wait, done, last_item; | |
162 local runner_func = spy.new(function (item) | |
163 if item == "error" then | |
164 error("test error"); | |
165 elseif item == "wait-error" then | |
166 wait, done = async.waiter(); | |
167 wait(); | |
168 error("test error"); | |
169 end | |
170 last_item = item; | |
171 end); | |
172 local runner = async.runner(runner_func, { error = spy.new(function () end) }); | |
173 runner:enqueue("one"); | |
174 runner:enqueue("error"); | |
175 runner:enqueue("two"); | |
176 runner:run(); | |
177 assert.equal(r.state, "ready"); | |
178 assert.equal(r.state, r.notified_state); | |
179 assert.spy(runner_func).was.called(3); | |
180 assert.spy(runner.watchers.error).was.called(1); | |
181 assert.equal(last_item, "two"); | |
182 end); | |
159 end); | 183 end); |
160 end); | 184 end); |
161 describe("#waiter", function() | 185 describe("#waiter", function() |
162 it("should error outside of async context", function () | 186 it("should error outside of async context", function () |
163 assert.has_error(function () | 187 assert.has_error(function () |