mirror of
https://github.com/nodejs/node.git
synced 2026-10-14 10:26:26 -04:00
test_runner: fix passing expectFailure
PR-URL: https://github.com/nodejs/node/pull/61568 Reviewed-By: Jacob Smith <jacob@frende.me> Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com> Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com> Reviewed-By: Jordan Harband <ljharb@gmail.com> Reviewed-By: Chemi Atlow <chemi@atlow.co.il> Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
This commit is contained in:
1 parent
3fbb8b7efc
commit
ea83d326f7
3 files changed
+42
No files matched your search
@@ -82,6 +82,7 @@ const kParentAlreadyFinished = 'parentAlreadyFinished';
|
||||
const kSubtestsFailed = 'subtestsFailed';
|
||||
const kTestCodeFailure = 'testCodeFailure';
|
||||
const kTestTimeoutFailure = 'testTimeoutFailure';
|
||||
const kExpectedFailure = 'expectedFailure';
|
||||
const kHookFailure = 'hookFailed';
|
||||
const kDefaultTimeout = null;
|
||||
const noop = FunctionPrototype;
|
||||
@@ -957,6 +958,14 @@ class Test extends AsyncResource {
|
||||
}
|
||||
|
||||
pass() {
|
||||
if (this.error == null && this.expectFailure === true && !this.skipped) {
|
||||
this.passed = false;
|
||||
this.error = new ERR_TEST_FAILURE(
|
||||
'test was expected to fail but passed',
|
||||
kExpectedFailure,
|
||||
);
|
||||
return;
|
||||
}
|
||||
if (this.error !== null) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('node:assert');
|
||||
const { run, test } = require('node:test');
|
||||
|
||||
if (!process.env.NODE_TEST_CONTEXT) {
|
||||
const stream = run({ files: [__filename] });
|
||||
|
||||
stream.on('test:pass', common.mustNotCall());
|
||||
stream.on('test:fail', common.mustCall((event) => {
|
||||
assert.strictEqual(event.expectFailure, true);
|
||||
assert.strictEqual(event.details.error.code, 'ERR_TEST_FAILURE');
|
||||
assert.strictEqual(event.details.error.failureType, 'expectedFailure');
|
||||
assert.strictEqual(event.details.error.cause, 'test was expected to fail but passed');
|
||||
}, 1));
|
||||
} else {
|
||||
test('passing test', { expectFailure: true }, () => {});
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
'use strict';
|
||||
const common = require('../common');
|
||||
const assert = require('node:assert');
|
||||
const { run, test } = require('node:test');
|
||||
|
||||
if (!process.env.NODE_TEST_CONTEXT) {
|
||||
const stream = run({ files: [__filename] });
|
||||
|
||||
stream.on('test:fail', common.mustNotCall());
|
||||
stream.on('test:pass', common.mustCall((event) => {
|
||||
assert.strictEqual(event.expectFailure, true);
|
||||
}, 1));
|
||||
} else {
|
||||
test('failing test', { expectFailure: true }, () => assert.fail('should not pass'));
|
||||
}
|
||||
Reference in new issue
Block a user