Files
Kmake/test/fixtures/test-runner/output/only_tests.js
2026-05-26 23:36:42 -07:00

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());
}));