160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			160 lines
		
	
	
		
			4.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _path = _interopRequireDefault(require('path'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) {
							 | 
						||
| 
								 | 
							
								  return obj && obj.__esModule ? obj : {default: obj};
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
							 | 
						||
| 
								 | 
							
								var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;
							 | 
						||
| 
								 | 
							
								var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    var info = gen[key](arg);
							 | 
						||
| 
								 | 
							
								    var value = info.value;
							 | 
						||
| 
								 | 
							
								  } catch (error) {
							 | 
						||
| 
								 | 
							
								    reject(error);
							 | 
						||
| 
								 | 
							
								    return;
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  if (info.done) {
							 | 
						||
| 
								 | 
							
								    resolve(value);
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    Promise.resolve(value).then(_next, _throw);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _asyncToGenerator(fn) {
							 | 
						||
| 
								 | 
							
								  return function() {
							 | 
						||
| 
								 | 
							
								    var self = this,
							 | 
						||
| 
								 | 
							
								      args = arguments;
							 | 
						||
| 
								 | 
							
								    return new Promise(function(resolve, reject) {
							 | 
						||
| 
								 | 
							
								      var gen = fn.apply(self, args);
							 | 
						||
| 
								 | 
							
								      function _next(value) {
							 | 
						||
| 
								 | 
							
								        asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'next', value);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      function _throw(err) {
							 | 
						||
| 
								 | 
							
								        asyncGeneratorStep(gen, resolve, reject, _next, _throw, 'throw', err);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								      _next(undefined);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const FRAMEWORK_INITIALIZER = require.resolve('./jestAdapterInit');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const jestAdapter =
							 | 
						||
| 
								 | 
							
								  /*#__PURE__*/
							 | 
						||
| 
								 | 
							
								  (function() {
							 | 
						||
| 
								 | 
							
								    var _ref = _asyncToGenerator(function*(
							 | 
						||
| 
								 | 
							
								      globalConfig,
							 | 
						||
| 
								 | 
							
								      config,
							 | 
						||
| 
								 | 
							
								      environment,
							 | 
						||
| 
								 | 
							
								      runtime,
							 | 
						||
| 
								 | 
							
								      testPath
							 | 
						||
| 
								 | 
							
								    ) {
							 | 
						||
| 
								 | 
							
								      const _runtime$requireInter = runtime.requireInternalModule(
							 | 
						||
| 
								 | 
							
								          FRAMEWORK_INITIALIZER
							 | 
						||
| 
								 | 
							
								        ),
							 | 
						||
| 
								 | 
							
								        initialize = _runtime$requireInter.initialize,
							 | 
						||
| 
								 | 
							
								        runAndTransformResultsToJestFormat =
							 | 
						||
| 
								 | 
							
								          _runtime$requireInter.runAndTransformResultsToJestFormat;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      runtime
							 | 
						||
| 
								 | 
							
								        .requireInternalModule(
							 | 
						||
| 
								 | 
							
								          _path.default.resolve(__dirname, './jestExpect.js')
							 | 
						||
| 
								 | 
							
								        )
							 | 
						||
| 
								 | 
							
								        .default({
							 | 
						||
| 
								 | 
							
								          expand: globalConfig.expand
							 | 
						||
| 
								 | 
							
								        });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const getPrettier = () =>
							 | 
						||
| 
								 | 
							
								        config.prettierPath ? require(config.prettierPath) : null;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const getBabelTraverse = () => require('@babel/traverse').default;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const _initialize = initialize({
							 | 
						||
| 
								 | 
							
								          config,
							 | 
						||
| 
								 | 
							
								          environment,
							 | 
						||
| 
								 | 
							
								          getBabelTraverse,
							 | 
						||
| 
								 | 
							
								          getPrettier,
							 | 
						||
| 
								 | 
							
								          globalConfig,
							 | 
						||
| 
								 | 
							
								          localRequire: runtime.requireModule.bind(runtime),
							 | 
						||
| 
								 | 
							
								          parentProcess: process,
							 | 
						||
| 
								 | 
							
								          testPath
							 | 
						||
| 
								 | 
							
								        }),
							 | 
						||
| 
								 | 
							
								        globals = _initialize.globals,
							 | 
						||
| 
								 | 
							
								        snapshotState = _initialize.snapshotState;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      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 = yield runAndTransformResultsToJestFormat({
							 | 
						||
| 
								 | 
							
								        config,
							 | 
						||
| 
								 | 
							
								        globalConfig,
							 | 
						||
| 
								 | 
							
								        testPath
							 | 
						||
| 
								 | 
							
								      });
							 | 
						||
| 
								 | 
							
								      return _addSnapshotData(results, snapshotState);
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return function jestAdapter(_x, _x2, _x3, _x4, _x5) {
							 | 
						||
| 
								 | 
							
								      return _ref.apply(this, arguments);
							 | 
						||
| 
								 | 
							
								    };
							 | 
						||
| 
								 | 
							
								  })();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								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;
							 |