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;
 |