odin-js-fundamentals-part-5/node_modules/@jest/core/build/testSchedulerHelper.js

58 lines
1.6 KiB
JavaScript

'use strict';
Object.defineProperty(exports, '__esModule', {
value: true
});
exports.shouldRunInBand = shouldRunInBand;
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
const SLOW_TEST_TIME = 1000;
function shouldRunInBand(
tests,
timings,
{
detectOpenHandles,
maxWorkers,
runInBand,
watch,
watchAll,
workerIdleMemoryLimit
}
) {
// If user asked for run in band, respect that.
// detectOpenHandles makes no sense without runInBand, because it cannot detect leaks in workers
if (runInBand || detectOpenHandles) {
return true;
}
/*
* If we are using watch/watchAll mode, don't schedule anything in the main
* thread to keep the TTY responsive and to prevent watch mode crashes caused
* by leaks (improper test teardown).
*/
if (watch || watchAll) {
return false;
}
/*
* Otherwise, run in band if we only have one test or one worker available.
* Also, if we are confident from previous runs that the tests will finish
* quickly we also run in band to reduce the overhead of spawning workers.
*/
const areFastTests = timings.every(timing => timing < SLOW_TEST_TIME);
const oneWorkerOrLess = maxWorkers <= 1;
const oneTestOrLess = tests.length <= 1;
return (
// When specifying a memory limit, workers should be used
!workerIdleMemoryLimit &&
(oneWorkerOrLess ||
oneTestOrLess ||
(tests.length <= 20 && timings.length > 0 && areFastTests))
);
}