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