v1.0 with SW PWA enabled

This commit is contained in:
Blomios
2026-01-01 17:40:53 +01:00
parent 1c0e22aac1
commit 3c8bebb2ad
29775 changed files with 2197201 additions and 119080 deletions

View File

@ -289,3 +289,37 @@ test('drained should handle undefined drain function', async function (t) {
t.pass('drained resolved successfully with undefined drain')
})
test('abort rejects all pending promises', async function (t) {
const queue = buildQueue(worker, 1)
const promises = []
let rejectedCount = 0
// Pause queue to prevent tasks from starting
queue.pause()
for (let i = 0; i < 10; i++) {
promises.push(queue.push(i))
}
queue.abort()
// All promises should be rejected
for (const promise of promises) {
try {
await promise
t.fail('promise should have been rejected')
} catch (err) {
t.equal(err.message, 'abort', 'error message is abort')
rejectedCount++
}
}
t.equal(rejectedCount, 10, 'all promises were rejected')
t.equal(queue.length(), 0, 'queue is empty')
async function worker (arg) {
await sleep(500)
return arg
}
})

View File

@ -651,3 +651,83 @@ test('paused flag', function (t) {
queue.pause()
t.equal(queue.paused, true)
})
test('abort', function (t) {
t.plan(11)
var queue = buildQueue(worker, 1)
var abortedTasks = 0
var predrain = queue.drain
queue.drain = function drain () {
t.fail('drain should never be called')
}
// Pause queue to prevent tasks from starting
queue.pause()
queue.push(1, doneAborted)
queue.push(4, doneAborted)
queue.unshift(3, doneAborted)
queue.unshift(2, doneAborted)
// Abort all queued tasks
queue.abort()
// Verify state after abort
t.equal(queue.length(), 0, 'no queued tasks after abort')
t.equal(queue.drain, predrain, 'drain is back to default')
setImmediate(function () {
t.equal(abortedTasks, 4, 'all queued tasks were aborted')
})
function doneAborted (err) {
t.ok(err, 'error is present')
t.equal(err.message, 'abort', 'error message is abort')
abortedTasks++
}
function worker (arg, cb) {
t.fail('worker should not be called')
setImmediate(function () {
cb(null, true)
})
}
})
test('abort with error handler', function (t) {
t.plan(7)
var queue = buildQueue(worker, 1)
var errorHandlerCalled = 0
queue.error(function (err, task) {
t.equal(err.message, 'abort', 'error handler receives abort error')
t.ok(task !== null, 'error handler receives task value')
errorHandlerCalled++
})
// Pause queue to prevent tasks from starting
queue.pause()
queue.push(1, doneAborted)
queue.push(2, doneAborted)
// Abort all queued tasks
queue.abort()
setImmediate(function () {
t.equal(errorHandlerCalled, 2, 'error handler called for all aborted tasks')
})
function doneAborted (err) {
t.ok(err, 'callback receives error')
}
function worker (arg, cb) {
t.fail('worker should not be called')
setImmediate(function () {
cb(null, true)
})
}
})