'use strict'; var path = _interopRequireWildcard(require('path')); var _jestRuntime = _interopRequireDefault(require('jest-runtime')); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : {default: obj}; } function _getRequireWildcardCache() { if (typeof WeakMap !== 'function') return null; var cache = new WeakMap(); _getRequireWildcardCache = function() { return cache; }; return cache; } function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || (typeof obj !== 'object' && typeof obj !== 'function')) { return {default: obj}; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } /** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const FRAMEWORK_INITIALIZER = require.resolve('./jestAdapterInit'); const jestAdapter = async ( globalConfig, config, environment, runtime, testPath ) => { const { initialize, runAndTransformResultsToJestFormat } = runtime.requireInternalModule(FRAMEWORK_INITIALIZER); runtime .requireInternalModule(path.resolve(__dirname, './jestExpect.js')) .default({ expand: globalConfig.expand }); const getPrettier = () => config.prettierPath ? require(config.prettierPath) : null; const getBabelTraverse = () => require('@babel/traverse').default; const {globals, snapshotState} = initialize({ config, environment, getBabelTraverse, getPrettier, globalConfig, localRequire: runtime.requireModule.bind(runtime), parentProcess: process, testPath }); if (config.timers === 'fake') { // during setup, this cannot be null (and it's fine to explode if it is) environment.fakeTimers.useFakeTimers(); } globals.beforeEach(() => { if (config.resetModules) { runtime.resetModules(); } if (config.clearMocks) { runtime.clearAllMocks(); } if (config.resetMocks) { runtime.resetAllMocks(); if (config.timers === 'fake') { // during setup, this cannot be null (and it's fine to explode if it is) environment.fakeTimers.useFakeTimers(); } } if (config.restoreMocks) { runtime.restoreAllMocks(); } }); config.setupFilesAfterEnv.forEach(path => runtime.requireModule(path)); runtime.requireModule(testPath); const results = await runAndTransformResultsToJestFormat({ config, globalConfig, testPath }); return _addSnapshotData(results, snapshotState); }; const _addSnapshotData = (results, snapshotState) => { results.testResults.forEach(({fullName, status}) => { if (status === 'pending' || status === 'failed') { // if test is skipped or failed, we don't want to mark // its snapshots as obsolete. snapshotState.markSnapshotsAsCheckedForTest(fullName); } }); const uncheckedCount = snapshotState.getUncheckedCount(); const uncheckedKeys = snapshotState.getUncheckedKeys(); if (uncheckedCount) { snapshotState.removeUncheckedKeys(); } const status = snapshotState.save(); results.snapshot.fileDeleted = status.deleted; results.snapshot.added = snapshotState.added; results.snapshot.matched = snapshotState.matched; results.snapshot.unmatched = snapshotState.unmatched; results.snapshot.updated = snapshotState.updated; results.snapshot.unchecked = !status.deleted ? uncheckedCount : 0; // Copy the array to prevent memory leaks results.snapshot.uncheckedKeys = Array.from(uncheckedKeys); return results; }; module.exports = jestAdapter;