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