145 lines
5.8 KiB
JavaScript
145 lines
5.8 KiB
JavaScript
// Flags: --test-only
|
|
'use strict';
|
|
const common = require('../../../common');
|
|
const { test, describe, it } = require('node:test');
|
|
|
|
// These tests should be skipped based on the 'only' option.
|
|
test('only = undefined', common.mustNotCall());
|
|
test('only = undefined, skip = string', { skip: 'skip message' }, common.mustNotCall());
|
|
test('only = undefined, skip = true', { skip: true }, common.mustNotCall());
|
|
test('only = undefined, skip = false', { skip: false }, common.mustNotCall());
|
|
test('only = false', { only: false }, common.mustNotCall());
|
|
test('only = false, skip = string', { only: false, skip: 'skip message' }, common.mustNotCall());
|
|
test('only = false, skip = true', { only: false, skip: true }, common.mustNotCall());
|
|
test('only = false, skip = false', { only: false, skip: false }, common.mustNotCall());
|
|
|
|
// These tests should be skipped based on the 'skip' option.
|
|
test('only = true, skip = string', { only: true, skip: 'skip message' }, common.mustNotCall());
|
|
test('only = true, skip = true', { only: true, skip: true }, common.mustNotCall());
|
|
|
|
// An 'only' test with subtests.
|
|
test('only = true, with subtests', { only: true }, common.mustCall(async (t) => {
|
|
// These subtests should run.
|
|
await t.test('running subtest 1', common.mustCall());
|
|
await t.test('running subtest 2', common.mustCall());
|
|
|
|
// Switch the context to only execute 'only' tests.
|
|
t.runOnly(true);
|
|
await t.test('skipped subtest 1', common.mustNotCall());
|
|
await t.test('skipped subtest 2', common.mustNotCall());
|
|
await t.test('running subtest 3', { only: true }, common.mustCall());
|
|
|
|
// Switch the context back to execute all tests.
|
|
t.runOnly(false);
|
|
await t.test('running subtest 4', common.mustCall(async (t) => {
|
|
// These subtests should run.
|
|
await t.test('running sub-subtest 1', common.mustCall());
|
|
await t.test('running sub-subtest 2', common.mustCall());
|
|
|
|
// Switch the context to only execute 'only' tests.
|
|
t.runOnly(true);
|
|
await t.test('skipped sub-subtest 1', common.mustNotCall());
|
|
await t.test('skipped sub-subtest 2', common.mustNotCall());
|
|
}));
|
|
|
|
// Explicitly do not run these tests.
|
|
await t.test('skipped subtest 3', { only: false }, common.mustNotCall());
|
|
await t.test('skipped subtest 4', { skip: true }, common.mustNotCall());
|
|
}));
|
|
|
|
describe.only('describe only = true, with subtests', common.mustCall(() => {
|
|
it.only('`it` subtest 1 should run', common.mustCall());
|
|
|
|
it('`it` subtest 2 should not run', common.mustNotCall());
|
|
}));
|
|
|
|
describe.only('describe only = true, with a mixture of subtests', common.mustCall(() => {
|
|
it.only('`it` subtest 1', common.mustCall());
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
it.only('`it` async subtest 1', common.mustCall(async () => {}));
|
|
|
|
it('`it` subtest 2 only=true', { only: true }, common.mustCall());
|
|
|
|
it('`it` subtest 2 only=false', { only: false }, common.mustNotCall());
|
|
|
|
it.skip('`it` subtest 3 skip', common.mustNotCall());
|
|
|
|
it.todo('`it` subtest 4 todo', { only: false }, common.mustNotCall());
|
|
|
|
test.only('`test` subtest 1', common.mustCall());
|
|
|
|
// eslint-disable-next-line no-restricted-syntax
|
|
test.only('`test` async subtest 1', common.mustCall(async () => {}));
|
|
|
|
test('`test` subtest 2 only=true', { only: true }, common.mustCall());
|
|
|
|
test('`test` subtest 2 only=false', { only: false }, common.mustNotCall());
|
|
|
|
test.skip('`test` subtest 3 skip', common.mustNotCall());
|
|
|
|
test.todo('`test` subtest 4 todo', { only: false }, common.mustNotCall());
|
|
}));
|
|
|
|
describe.only('describe only = true, with subtests', common.mustCall(() => {
|
|
test.only('subtest should run', common.mustCall());
|
|
|
|
test('async subtest should not run', common.mustNotCall());
|
|
|
|
test('subtest should be skipped', { only: false }, common.mustNotCall());
|
|
}));
|
|
|
|
|
|
describe('describe only = undefined, with nested only subtest', common.mustCall(() => {
|
|
test('subtest should not run', common.mustNotCall());
|
|
describe('nested describe', common.mustCall(() => {
|
|
test('subtest should not run', common.mustNotCall());
|
|
test.only('nested test should run', common.mustCall());
|
|
}));
|
|
}));
|
|
|
|
|
|
describe('describe only = undefined, with subtests', common.mustCall(() => {
|
|
test('async subtest should not run', common.mustNotCall());
|
|
}));
|
|
|
|
describe('describe only = false, with subtests', { only: false }, common.mustNotCall(() => {
|
|
test('async subtest should not run', common.mustNotCall());
|
|
}));
|
|
|
|
|
|
describe.only('describe only = true, with nested subtests', common.mustCall(() => {
|
|
test('async subtest should run', common.mustCall());
|
|
describe('nested describe', common.mustCall(() => {
|
|
test('nested test should run', common.mustCall());
|
|
}));
|
|
}));
|
|
|
|
describe('describe only = false, with nested only subtests', { only: false }, common.mustNotCall(() => {
|
|
test('async subtest should not run', common.mustNotCall());
|
|
describe('nested describe', common.mustNotCall(() => {
|
|
test.only('nested test should run', common.mustNotCall());
|
|
}));
|
|
}));
|
|
|
|
test('nested tests with run only', { only: true }, common.mustCall(async (t) => {
|
|
// Within this test, all subtests are run by default.
|
|
await t.test('running subtest - 1');
|
|
|
|
// The test context can be updated to run subtests with the 'only' option.
|
|
await t.runOnly(true);
|
|
await t.test('this subtest is now skipped - 2', common.mustNotCall());
|
|
await t.test('this subtest is run - 3', { only: true }, common.mustCall(async (t) => {
|
|
await t.test('this subtest is run - 4', common.mustCall());
|
|
await t.test('this subtest is run - 5', { only: true }, common.mustCall());
|
|
}));
|
|
|
|
// Switch the context back to execute all tests.
|
|
await t.runOnly(false);
|
|
await t.test('this subtest is now run - 6');
|
|
|
|
// Explicitly do not run these tests.
|
|
await t.test('skipped subtest - 7', { only: false }, common.mustNotCall());
|
|
await t.test('skipped subtest - 8', { skip: true }, common.mustNotCall());
|
|
}));
|