| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 | 'use strict';var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;Object.defineProperty(exports, '__esModule', {  value: true});exports.default = void 0;var _testResult = require('@jest/test-result');var _jestMessageUtil = require('jest-message-util');var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var jestNow = global[Symbol.for('jest-native-now')] || global.Date.now;var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Symbol = global['jest-symbol-do-not-touch'] || global.Symbol;var global = (function () {  if (typeof globalThis !== 'undefined') {    return globalThis;  } else if (typeof global !== 'undefined') {    return global;  } else if (typeof self !== 'undefined') {    return self;  } else if (typeof window !== 'undefined') {    return window;  } else {    return Function('return this')();  }})();var Promise = global[Symbol.for('jest-native-promise')] || global.Promise;function _defineProperty(obj, key, value) {  if (key in obj) {    Object.defineProperty(obj, key, {      value: value,      enumerable: true,      configurable: true,      writable: true    });  } else {    obj[key] = value;  }  return obj;}class Jasmine2Reporter {  constructor(globalConfig, config, testPath) {    _defineProperty(this, '_testResults', void 0);    _defineProperty(this, '_globalConfig', void 0);    _defineProperty(this, '_config', void 0);    _defineProperty(this, '_currentSuites', void 0);    _defineProperty(this, '_resolve', void 0);    _defineProperty(this, '_resultsPromise', void 0);    _defineProperty(this, '_startTimes', void 0);    _defineProperty(this, '_testPath', void 0);    this._globalConfig = globalConfig;    this._config = config;    this._testPath = testPath;    this._testResults = [];    this._currentSuites = [];    this._resolve = null;    this._resultsPromise = new Promise(resolve => (this._resolve = resolve));    this._startTimes = new Map();  }  jasmineStarted(_runDetails) {}  specStarted(spec) {    this._startTimes.set(spec.id, jestNow());  }  specDone(result) {    this._testResults.push(      this._extractSpecResults(result, this._currentSuites.slice(0))    );  }  suiteStarted(suite) {    this._currentSuites.push(suite.description);  }  suiteDone(_result) {    this._currentSuites.pop();  }  jasmineDone(_runDetails) {    let numFailingTests = 0;    let numPassingTests = 0;    let numPendingTests = 0;    let numTodoTests = 0;    const testResults = this._testResults;    testResults.forEach(testResult => {      if (testResult.status === 'failed') {        numFailingTests++;      } else if (testResult.status === 'pending') {        numPendingTests++;      } else if (testResult.status === 'todo') {        numTodoTests++;      } else {        numPassingTests++;      }    });    const testResult = {      ...(0, _testResult.createEmptyTestResult)(),      console: null,      failureMessage: (0, _jestMessageUtil.formatResultsErrors)(        testResults,        this._config,        this._globalConfig,        this._testPath      ),      numFailingTests,      numPassingTests,      numPendingTests,      numTodoTests,      snapshot: {        added: 0,        fileDeleted: false,        matched: 0,        unchecked: 0,        unmatched: 0,        updated: 0      },      testFilePath: this._testPath,      testResults    };    this._resolve(testResult);  }  getResults() {    return this._resultsPromise;  }  _addMissingMessageToStack(stack, message) {    // Some errors (e.g. Angular injection error) don't prepend error.message    // to stack, instead the first line of the stack is just plain 'Error'    const ERROR_REGEX = /^Error:?\s*\n/;    if (stack && message && !stack.includes(message)) {      return message + stack.replace(ERROR_REGEX, '\n');    }    return stack;  }  _extractSpecResults(specResult, ancestorTitles) {    const start = this._startTimes.get(specResult.id);    const duration = start ? jestNow() - start : undefined;    const status =      specResult.status === 'disabled' ? 'pending' : specResult.status;    const location = specResult.__callsite      ? {          column: specResult.__callsite.getColumnNumber(),          line: specResult.__callsite.getLineNumber()        }      : null;    const results = {      ancestorTitles,      duration,      failureDetails: [],      failureMessages: [],      fullName: specResult.fullName,      location,      numPassingAsserts: 0,      // Jasmine2 only returns an array of failed asserts.      status,      title: specResult.description    };    specResult.failedExpectations.forEach(failed => {      const message =        !failed.matcherName && typeof failed.stack === 'string'          ? this._addMissingMessageToStack(failed.stack, failed.message)          : failed.message || '';      results.failureMessages.push(message);      results.failureDetails.push(failed);    });    return results;  }}exports.default = Jasmine2Reporter;
 |