You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					118 lines
				
				3.2 KiB
			
		
		
			
		
	
	
					118 lines
				
				3.2 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, '__esModule', {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.default = void 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _expect = require('expect');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _jestSnapshot = require('jest-snapshot');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * 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.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								// Get suppressed errors form  jest-matchers that weren't throw during
							 | 
						||
| 
								 | 
							
								// test execution and add them to the test result, potentially failing
							 | 
						||
| 
								 | 
							
								// a passing test.
							 | 
						||
| 
								 | 
							
								const addSuppressedErrors = result => {
							 | 
						||
| 
								 | 
							
								  const _getState = (0, _expect.getState)(),
							 | 
						||
| 
								 | 
							
								    suppressedErrors = _getState.suppressedErrors;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  (0, _expect.setState)({
							 | 
						||
| 
								 | 
							
								    suppressedErrors: []
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (suppressedErrors.length) {
							 | 
						||
| 
								 | 
							
								    result.status = 'failed';
							 | 
						||
| 
								 | 
							
								    result.failedExpectations = suppressedErrors.map(error => ({
							 | 
						||
| 
								 | 
							
								      actual: '',
							 | 
						||
| 
								 | 
							
								      // passing error for custom test reporters
							 | 
						||
| 
								 | 
							
								      error,
							 | 
						||
| 
								 | 
							
								      expected: '',
							 | 
						||
| 
								 | 
							
								      matcherName: '',
							 | 
						||
| 
								 | 
							
								      message: error.message,
							 | 
						||
| 
								 | 
							
								      passed: false,
							 | 
						||
| 
								 | 
							
								      stack: error.stack
							 | 
						||
| 
								 | 
							
								    }));
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const addAssertionErrors = result => {
							 | 
						||
| 
								 | 
							
								  const assertionErrors = (0, _expect.extractExpectedAssertionsErrors)();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (assertionErrors.length) {
							 | 
						||
| 
								 | 
							
								    const jasmineErrors = assertionErrors.map(({actual, error, expected}) => ({
							 | 
						||
| 
								 | 
							
								      actual,
							 | 
						||
| 
								 | 
							
								      expected,
							 | 
						||
| 
								 | 
							
								      message: error.stack,
							 | 
						||
| 
								 | 
							
								      passed: false
							 | 
						||
| 
								 | 
							
								    }));
							 | 
						||
| 
								 | 
							
								    result.status = 'failed';
							 | 
						||
| 
								 | 
							
								    result.failedExpectations = result.failedExpectations.concat(jasmineErrors);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const patchJasmine = () => {
							 | 
						||
| 
								 | 
							
								  global.jasmine.Spec = (realSpec => {
							 | 
						||
| 
								 | 
							
								    class Spec extends realSpec {
							 | 
						||
| 
								 | 
							
								      constructor(attr) {
							 | 
						||
| 
								 | 
							
								        const resultCallback = attr.resultCallback;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        attr.resultCallback = function(result) {
							 | 
						||
| 
								 | 
							
								          addSuppressedErrors(result);
							 | 
						||
| 
								 | 
							
								          addAssertionErrors(result);
							 | 
						||
| 
								 | 
							
								          resultCallback.call(attr, result);
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        const onStart = attr.onStart;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        attr.onStart = context => {
							 | 
						||
| 
								 | 
							
								          (0, _expect.setState)({
							 | 
						||
| 
								 | 
							
								            currentTestName: context.getFullName()
							 | 
						||
| 
								 | 
							
								          });
							 | 
						||
| 
								 | 
							
								          onStart && onStart.call(attr, context);
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        super(attr);
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return Spec;
							 | 
						||
| 
								 | 
							
								  })(global.jasmine.Spec);
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _default = ({config, globalConfig, localRequire, testPath}) => {
							 | 
						||
| 
								 | 
							
								  // Jest tests snapshotSerializers in order preceding built-in serializers.
							 | 
						||
| 
								 | 
							
								  // Therefore, add in reverse because the last added is the first tested.
							 | 
						||
| 
								 | 
							
								  config.snapshotSerializers
							 | 
						||
| 
								 | 
							
								    .concat()
							 | 
						||
| 
								 | 
							
								    .reverse()
							 | 
						||
| 
								 | 
							
								    .forEach(path => {
							 | 
						||
| 
								 | 
							
								      (0, _jestSnapshot.addSerializer)(localRequire(path));
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  patchJasmine();
							 | 
						||
| 
								 | 
							
								  const expand = globalConfig.expand,
							 | 
						||
| 
								 | 
							
								    updateSnapshot = globalConfig.updateSnapshot;
							 | 
						||
| 
								 | 
							
								  const snapshotResolver = (0, _jestSnapshot.buildSnapshotResolver)(config);
							 | 
						||
| 
								 | 
							
								  const snapshotPath = snapshotResolver.resolveSnapshotPath(testPath);
							 | 
						||
| 
								 | 
							
								  const snapshotState = new _jestSnapshot.SnapshotState(snapshotPath, {
							 | 
						||
| 
								 | 
							
								    expand,
							 | 
						||
| 
								 | 
							
								    getBabelTraverse: () => require('@babel/traverse').default,
							 | 
						||
| 
								 | 
							
								    getPrettier: () =>
							 | 
						||
| 
								 | 
							
								      config.prettierPath ? require(config.prettierPath) : null,
							 | 
						||
| 
								 | 
							
								    updateSnapshot
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								  (0, _expect.setState)({
							 | 
						||
| 
								 | 
							
								    snapshotState,
							 | 
						||
| 
								 | 
							
								    testPath
							 | 
						||
| 
								 | 
							
								  }); // Return it back to the outer scope (test runner outside the VM).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return snapshotState;
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								exports.default = _default;
							 |