File: /var/www/zaklada/html/node_modules/jest-cli/src/TestWorker.js
/**
 * Copyright (c) 2014, Facebook, Inc. All rights reserved.
 *
 * This source code is licensed under the BSD-style license found in the
 * LICENSE file in the root directory of this source tree. An additional grant
 * of patent rights can be found in the PATENTS file in the same directory.
 */
'use strict';
// Make sure uncaught errors are logged before we exit.
// Could be transient errors to do with loading and serializing the resouce
// map.
process.on('uncaughtException', (err) => {
  console.error(err.stack);
  process.exit(1);
});
const TestRunner = require('./TestRunner');
let testRunner;
module.exports = function testWorker(data, callback) {
  if (!testRunner) {
    testRunner = new TestRunner(data.config, {
      useCachedModuleLoaderResourceMap: true,
    });
    // Start require()ing config dependencies now.
    //
    // Config dependencies are entries in the config that are require()d (in
    // order to be pluggable) such as 'moduleLoader' or
    // 'testEnvironment'.
    testRunner.preloadConfigDependencies();
    // Start deserializing the resource map to get a potential head-start on
    // that work before the first "run-test" message comes in.
    //
    // This is just a perf optimization -- and it is only an optimization
    // some of the time (when the there is any significant idle time between
    // this first initialization message and the first "run-rest" message).
    //
    // It is also only an optimization so long as deserialization of the
    // resource map is a bottleneck (which is the case at the time of this
    // writing).
    testRunner.preloadResourceMap();
  }
  try {
    testRunner.runTest(data.testFilePath)
      .then(
        result => callback(null, result),
        // TODO: move to error object passing (why limit to strings?).
        err => callback(err.stack || err.message || err)
      );
  } catch (err) {
    callback(err.stack || err.message || err);
  }
};