From 7c2f871ac339710845cee925207f5d6a62a8ad0e Mon Sep 17 00:00:00 2001 From: Timo Tijhof Date: Sun, 26 Jan 2025 00:06:25 +0000 Subject: [PATCH] Core: Add memory to the `error` event to allow late event listeners Cherry-picked from 15acb3604372e64faac9190286676225c8557a36 (3.0.0-dev). > HTML Reporter: Add support for displaying early errors > Ref https://github.com/qunitjs/qunit/pull/1786. --- src/events.js | 3 ++- test/cli/fixtures/event-error-memory.js | 26 ++++++++++++++++++++ test/cli/fixtures/event-error-memory.tap.txt | 24 ++++++++++++++++++ 3 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 test/cli/fixtures/event-error-memory.js create mode 100644 test/cli/fixtures/event-error-memory.tap.txt diff --git a/src/events.js b/src/events.js index 5be7b5327..5a0ef5f14 100644 --- a/src/events.js +++ b/src/events.js @@ -12,6 +12,7 @@ const SUPPORTED_EVENTS = [ 'runEnd' ]; const MEMORY_EVENTS = [ + 'error', 'runEnd' ]; @@ -40,7 +41,7 @@ export function emit (eventName, data) { callbacks[i](data); } - if (inArray(MEMORY_EVENTS, eventName)) { + if (inArray(eventName, MEMORY_EVENTS)) { config._event_memory[eventName] = data; } } diff --git a/test/cli/fixtures/event-error-memory.js b/test/cli/fixtures/event-error-memory.js new file mode 100644 index 000000000..cde879695 --- /dev/null +++ b/test/cli/fixtures/event-error-memory.js @@ -0,0 +1,26 @@ +QUnit.on('error', function (error) { + console.log(`# early error ${error}`); + + Promise.resolve().then(function () { + QUnit.on('error', function (error) { + console.log(`# late error ${error}`); + }); + }); +}); + +setTimeout(function () { + boom(); // eslint-disable-line +}); + +QUnit.module('First', function () { + QUnit.test('A', function (assert) { + assert.true(true); + }); + QUnit.test('B', function (assert) { + const done = assert.async(); + setTimeout(function () { + assert.true(true); + done(); + }); + }); +}); diff --git a/test/cli/fixtures/event-error-memory.tap.txt b/test/cli/fixtures/event-error-memory.tap.txt new file mode 100644 index 000000000..c43544814 --- /dev/null +++ b/test/cli/fixtures/event-error-memory.tap.txt @@ -0,0 +1,24 @@ +# command: ["qunit", "event-error-memory.js"] + +TAP version 13 +not ok 1 global failure + --- + message: ReferenceError: boom is not defined + severity: failed + stack: | + ReferenceError: boom is not defined + at /qunit/test/cli/fixtures/event-error-memory.js:12:3 + at internal + ... +Bail out! ReferenceError: boom is not defined +# early error ReferenceError: boom is not defined +# late error ReferenceError: boom is not defined +ok 2 First > A +ok 3 First > B +1..3 +# pass 2 +# skip 0 +# todo 0 +# fail 1 + +# exit code: 1