summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Gruenbaum <benjamingr@gmail.com>2023-05-17 11:57:21 +0300
committerGitHub <noreply@github.com>2023-05-17 08:57:21 +0000
commit3cf05be50e02fd9e6933efda6cae7e21b8b531ea (patch)
tree2b1d25ee27a035fb043868b8252e427054f1c85d
parent5cb5422b6ff29018c915a497da0ce1a509e1d52c (diff)
downloadnode-new-3cf05be50e02fd9e6933efda6cae7e21b8b531ea.tar.gz
test: fix suite signal
PR-URL: https://github.com/nodejs/node/pull/47800 Fixes: https://github.com/nodejs/node/issues/47882 Reviewed-By: Moshe Atlow <moshe@atlow.co.il> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
-rw-r--r--lib/internal/test_runner/test.js5
-rw-r--r--test/fixtures/test-runner/output/abort_suite.snapshot54
-rw-r--r--test/parallel/test-runner-misc.js10
3 files changed, 58 insertions, 11 deletions
diff --git a/lib/internal/test_runner/test.js b/lib/internal/test_runner/test.js
index 083cc441ae..ea6578e53f 100644
--- a/lib/internal/test_runner/test.js
+++ b/lib/internal/test_runner/test.js
@@ -1,6 +1,7 @@
'use strict';
const {
ArrayPrototypePush,
+ ArrayPrototypePushApply,
ArrayPrototypeReduce,
ArrayPrototypeShift,
ArrayPrototypeSlice,
@@ -760,8 +761,10 @@ class Suite extends Test {
try {
const { ctx, args } = this.getRunArgs();
+ const runArgs = [this.fn, ctx];
+ ArrayPrototypePushApply(runArgs, args);
this.buildSuite = PromisePrototypeThen(
- PromiseResolve(this.runInAsyncScope(this.fn, ctx, args)),
+ PromiseResolve(ReflectApply(this.runInAsyncScope, this, runArgs)),
undefined,
(err) => {
this.fail(new ERR_TEST_FAILURE(err, kTestCodeFailure));
diff --git a/test/fixtures/test-runner/output/abort_suite.snapshot b/test/fixtures/test-runner/output/abort_suite.snapshot
index 995e851221..e2abdadaf5 100644
--- a/test/fixtures/test-runner/output/abort_suite.snapshot
+++ b/test/fixtures/test-runner/output/abort_suite.snapshot
@@ -40,25 +40,61 @@ TAP version 13
not ok 7 - not ok 3
---
duration_ms: ZERO
- failureType: 'cancelledByParent'
- error: 'test did not finish before its parent and was cancelled'
- code: 'ERR_TEST_FAILURE'
+ failureType: 'testAborted'
+ error: 'This operation was aborted'
+ code: 20
+ name: 'AbortError'
+ stack: |-
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
...
# Subtest: not ok 4
not ok 8 - not ok 4
---
duration_ms: ZERO
- failureType: 'cancelledByParent'
- error: 'test did not finish before its parent and was cancelled'
- code: 'ERR_TEST_FAILURE'
+ failureType: 'testAborted'
+ error: 'This operation was aborted'
+ code: 20
+ name: 'AbortError'
+ stack: |-
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
...
# Subtest: not ok 5
not ok 9 - not ok 5
---
duration_ms: ZERO
- failureType: 'cancelledByParent'
- error: 'test did not finish before its parent and was cancelled'
- code: 'ERR_TEST_FAILURE'
+ failureType: 'testAborted'
+ error: 'This operation was aborted'
+ code: 20
+ name: 'AbortError'
+ stack: |-
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
+ *
...
1..9
not ok 1 - describe timeout signal
diff --git a/test/parallel/test-runner-misc.js b/test/parallel/test-runner-misc.js
index 34abaf5c12..abc2715dcf 100644
--- a/test/parallel/test-runner-misc.js
+++ b/test/parallel/test-runner-misc.js
@@ -21,11 +21,19 @@ if (process.argv[2] === 'child') {
})).finally(common.mustCall(() => {
test(() => assert.strictEqual(testSignal.aborted, true));
}));
+
+ // TODO(benjamingr) add more tests to describe + AbortSignal
+ // this just tests the parameter is passed
+ test.describe('Abort Signal in describe', common.mustCall(({ signal }) => {
+ test.it('Supports AbortSignal', () => {
+ assert.strictEqual(signal.aborted, false);
+ });
+ }));
} else assert.fail('unreachable');
} else {
const child = spawnSync(process.execPath, [__filename, 'child', 'abortSignal']);
const stdout = child.stdout.toString();
- assert.match(stdout, /^# pass 1$/m);
+ assert.match(stdout, /^# pass 2$/m);
assert.match(stdout, /^# fail 0$/m);
assert.match(stdout, /^# cancelled 1$/m);
assert.strictEqual(child.status, 1);