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.
		
		
		
		
			
				
					178 lines
				
				4.1 KiB
			
		
		
			
		
	
	
					178 lines
				
				4.1 KiB
			| 
								 
											4 years ago
										 
									 | 
							
								'use strict';
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Object.defineProperty(exports, '__esModule', {
							 | 
						||
| 
								 | 
							
								  value: true
							 | 
						||
| 
								 | 
							
								});
							 | 
						||
| 
								 | 
							
								exports.createReporterError = createReporterError;
							 | 
						||
| 
								 | 
							
								exports.createArrayReporterError = createArrayReporterError;
							 | 
						||
| 
								 | 
							
								exports.validateReporters = validateReporters;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _jestValidate() {
							 | 
						||
| 
								 | 
							
								  const data = require('jest-validate');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _jestValidate = function _jestValidate() {
							 | 
						||
| 
								 | 
							
								    return data;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return data;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _chalk() {
							 | 
						||
| 
								 | 
							
								  const data = _interopRequireDefault(require('chalk'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _chalk = function _chalk() {
							 | 
						||
| 
								 | 
							
								    return data;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return data;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _jestGetType() {
							 | 
						||
| 
								 | 
							
								  const data = _interopRequireDefault(require('jest-get-type'));
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  _jestGetType = function _jestGetType() {
							 | 
						||
| 
								 | 
							
								    return data;
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  return data;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								var _utils = require('./utils');
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _interopRequireDefault(obj) {
							 | 
						||
| 
								 | 
							
								  return obj && obj.__esModule ? obj : {default: obj};
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _slicedToArray(arr, i) {
							 | 
						||
| 
								 | 
							
								  return (
							 | 
						||
| 
								 | 
							
								    _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest()
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _nonIterableRest() {
							 | 
						||
| 
								 | 
							
								  throw new TypeError('Invalid attempt to destructure non-iterable instance');
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _iterableToArrayLimit(arr, i) {
							 | 
						||
| 
								 | 
							
								  var _arr = [];
							 | 
						||
| 
								 | 
							
								  var _n = true;
							 | 
						||
| 
								 | 
							
								  var _d = false;
							 | 
						||
| 
								 | 
							
								  var _e = undefined;
							 | 
						||
| 
								 | 
							
								  try {
							 | 
						||
| 
								 | 
							
								    for (
							 | 
						||
| 
								 | 
							
								      var _i = arr[Symbol.iterator](), _s;
							 | 
						||
| 
								 | 
							
								      !(_n = (_s = _i.next()).done);
							 | 
						||
| 
								 | 
							
								      _n = true
							 | 
						||
| 
								 | 
							
								    ) {
							 | 
						||
| 
								 | 
							
								      _arr.push(_s.value);
							 | 
						||
| 
								 | 
							
								      if (i && _arr.length === i) break;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  } catch (err) {
							 | 
						||
| 
								 | 
							
								    _d = true;
							 | 
						||
| 
								 | 
							
								    _e = err;
							 | 
						||
| 
								 | 
							
								  } finally {
							 | 
						||
| 
								 | 
							
								    try {
							 | 
						||
| 
								 | 
							
								      if (!_n && _i['return'] != null) _i['return']();
							 | 
						||
| 
								 | 
							
								    } finally {
							 | 
						||
| 
								 | 
							
								      if (_d) throw _e;
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								  return _arr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function _arrayWithHoles(arr) {
							 | 
						||
| 
								 | 
							
								  if (Array.isArray(arr)) return arr;
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								const validReporterTypes = ['array', 'string'];
							 | 
						||
| 
								 | 
							
								const ERROR = `${_utils.BULLET}Reporter Validation Error`;
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * Reporter Validation Error is thrown if the given arguments
							 | 
						||
| 
								 | 
							
								 * within the reporter are not valid.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This is a highly specific reporter error and in the future will be
							 | 
						||
| 
								 | 
							
								 * merged with jest-validate. Till then, we can make use of it. It works
							 | 
						||
| 
								 | 
							
								 * and that's what counts most at this time.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createReporterError(reporterIndex, reporterValue) {
							 | 
						||
| 
								 | 
							
								  const errorMessage =
							 | 
						||
| 
								 | 
							
								    `  Reporter at index ${reporterIndex} must be of type:\n` +
							 | 
						||
| 
								 | 
							
								    `    ${_chalk().default.bold.green(validReporterTypes.join(' or '))}\n` +
							 | 
						||
| 
								 | 
							
								    `  but instead received:\n` +
							 | 
						||
| 
								 | 
							
								    `    ${_chalk().default.bold.red(
							 | 
						||
| 
								 | 
							
								      (0, _jestGetType().default)(reporterValue)
							 | 
						||
| 
								 | 
							
								    )}`;
							 | 
						||
| 
								 | 
							
								  return new (_jestValidate()).ValidationError(
							 | 
						||
| 
								 | 
							
								    ERROR,
							 | 
						||
| 
								 | 
							
								    errorMessage,
							 | 
						||
| 
								 | 
							
								    _utils.DOCUMENTATION_NOTE
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function createArrayReporterError(
							 | 
						||
| 
								 | 
							
								  arrayReporter,
							 | 
						||
| 
								 | 
							
								  reporterIndex,
							 | 
						||
| 
								 | 
							
								  valueIndex,
							 | 
						||
| 
								 | 
							
								  value,
							 | 
						||
| 
								 | 
							
								  expectedType,
							 | 
						||
| 
								 | 
							
								  valueName
							 | 
						||
| 
								 | 
							
								) {
							 | 
						||
| 
								 | 
							
								  const errorMessage =
							 | 
						||
| 
								 | 
							
								    `  Unexpected value for ${valueName} ` +
							 | 
						||
| 
								 | 
							
								    `at index ${valueIndex} of reporter at index ${reporterIndex}\n` +
							 | 
						||
| 
								 | 
							
								    '  Expected:\n' +
							 | 
						||
| 
								 | 
							
								    `    ${_chalk().default.bold.red(expectedType)}\n` +
							 | 
						||
| 
								 | 
							
								    '  Got:\n' +
							 | 
						||
| 
								 | 
							
								    `    ${_chalk().default.bold.green((0, _jestGetType().default)(value))}\n` +
							 | 
						||
| 
								 | 
							
								    `  Reporter configuration:\n` +
							 | 
						||
| 
								 | 
							
								    `    ${_chalk().default.bold.green(
							 | 
						||
| 
								 | 
							
								      JSON.stringify(arrayReporter, null, 2)
							 | 
						||
| 
								 | 
							
								        .split('\n')
							 | 
						||
| 
								 | 
							
								        .join('\n    ')
							 | 
						||
| 
								 | 
							
								    )}`;
							 | 
						||
| 
								 | 
							
								  return new (_jestValidate()).ValidationError(
							 | 
						||
| 
								 | 
							
								    ERROR,
							 | 
						||
| 
								 | 
							
								    errorMessage,
							 | 
						||
| 
								 | 
							
								    _utils.DOCUMENTATION_NOTE
							 | 
						||
| 
								 | 
							
								  );
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function validateReporters(reporterConfig) {
							 | 
						||
| 
								 | 
							
								  return reporterConfig.every((reporter, index) => {
							 | 
						||
| 
								 | 
							
								    if (Array.isArray(reporter)) {
							 | 
						||
| 
								 | 
							
								      validateArrayReporter(reporter, index);
							 | 
						||
| 
								 | 
							
								    } else if (typeof reporter !== 'string') {
							 | 
						||
| 
								 | 
							
								      throw createReporterError(index, reporter);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    return true;
							 | 
						||
| 
								 | 
							
								  });
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								function validateArrayReporter(arrayReporter, reporterIndex) {
							 | 
						||
| 
								 | 
							
								  const _arrayReporter = _slicedToArray(arrayReporter, 2),
							 | 
						||
| 
								 | 
							
								    path = _arrayReporter[0],
							 | 
						||
| 
								 | 
							
								    options = _arrayReporter[1];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (typeof path !== 'string') {
							 | 
						||
| 
								 | 
							
								    throw createArrayReporterError(
							 | 
						||
| 
								 | 
							
								      arrayReporter,
							 | 
						||
| 
								 | 
							
								      reporterIndex,
							 | 
						||
| 
								 | 
							
								      0,
							 | 
						||
| 
								 | 
							
								      path,
							 | 
						||
| 
								 | 
							
								      'string',
							 | 
						||
| 
								 | 
							
								      'Path'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  } else if (typeof options !== 'object') {
							 | 
						||
| 
								 | 
							
								    throw createArrayReporterError(
							 | 
						||
| 
								 | 
							
								      arrayReporter,
							 | 
						||
| 
								 | 
							
								      reporterIndex,
							 | 
						||
| 
								 | 
							
								      1,
							 | 
						||
| 
								 | 
							
								      options,
							 | 
						||
| 
								 | 
							
								      'object',
							 | 
						||
| 
								 | 
							
								      'Reporter Configuration'
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 |