diff options
Diffstat (limited to 'node_modules/jest-jasmine2/build/jasmine/Spec.js')
-rw-r--r-- | node_modules/jest-jasmine2/build/jasmine/Spec.js | 298 |
1 files changed, 298 insertions, 0 deletions
diff --git a/node_modules/jest-jasmine2/build/jasmine/Spec.js b/node_modules/jest-jasmine2/build/jasmine/Spec.js new file mode 100644 index 0000000..32fbc49 --- /dev/null +++ b/node_modules/jest-jasmine2/build/jasmine/Spec.js @@ -0,0 +1,298 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { + value: true +}); +exports.default = void 0; + +var _assert = require('assert'); + +var _ExpectationFailed = _interopRequireDefault( + require('../ExpectationFailed') +); + +var _assertionErrorMessage = _interopRequireDefault( + require('../assertionErrorMessage') +); + +var _expectationResultFactory = _interopRequireDefault( + require('../expectationResultFactory') +); + +function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : {default: obj}; +} + +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 Spec { + static isPendingSpecException(e) { + return !!( + e && + e.toString && + e.toString().indexOf(Spec.pendingSpecExceptionMessage) !== -1 + ); + } + + constructor(attrs) { + _defineProperty(this, 'id', void 0); + + _defineProperty(this, 'description', void 0); + + _defineProperty(this, 'resultCallback', void 0); + + _defineProperty(this, 'queueableFn', void 0); + + _defineProperty(this, 'beforeAndAfterFns', void 0); + + _defineProperty(this, 'userContext', void 0); + + _defineProperty(this, 'onStart', void 0); + + _defineProperty(this, 'getSpecName', void 0); + + _defineProperty(this, 'queueRunnerFactory', void 0); + + _defineProperty(this, 'throwOnExpectationFailure', void 0); + + _defineProperty(this, 'initError', void 0); + + _defineProperty(this, 'result', void 0); + + _defineProperty(this, 'disabled', void 0); + + _defineProperty(this, 'currentRun', void 0); + + _defineProperty(this, 'markedTodo', void 0); + + _defineProperty(this, 'markedPending', void 0); + + _defineProperty(this, 'expand', void 0); + + this.resultCallback = attrs.resultCallback || function () {}; + + this.id = attrs.id; + this.description = attrs.description || ''; + this.queueableFn = attrs.queueableFn; + + this.beforeAndAfterFns = + attrs.beforeAndAfterFns || + function () { + return { + befores: [], + afters: [] + }; + }; + + this.userContext = + attrs.userContext || + function () { + return {}; + }; + + this.onStart = attrs.onStart || function () {}; + + this.getSpecName = + attrs.getSpecName || + function () { + return ''; + }; + + this.queueRunnerFactory = attrs.queueRunnerFactory || function () {}; + + this.throwOnExpectationFailure = !!attrs.throwOnExpectationFailure; + this.initError = new Error(); + this.initError.name = ''; // Without this line v8 stores references to all closures + // in the stack in the Error object. This line stringifies the stack + // property to allow garbage-collecting objects on the stack + // https://crbug.com/v8/7142 + + this.initError.stack = this.initError.stack; + this.queueableFn.initError = this.initError; // @ts-expect-error + + this.result = { + id: this.id, + description: this.description, + fullName: this.getFullName(), + failedExpectations: [], + passedExpectations: [], + pendingReason: '', + testPath: attrs.getTestPath() + }; + } + + addExpectationResult(passed, data, isError) { + const expectationResult = (0, _expectationResultFactory.default)( + data, + this.initError + ); + + if (passed) { + this.result.passedExpectations.push(expectationResult); + } else { + this.result.failedExpectations.push(expectationResult); + + if (this.throwOnExpectationFailure && !isError) { + throw new _ExpectationFailed.default(); + } + } + } + + execute(onComplete, enabled) { + const self = this; + this.onStart(this); + + if ( + !this.isExecutable() || + this.markedPending || + this.markedTodo || + enabled === false + ) { + complete(enabled); + return; + } + + const fns = this.beforeAndAfterFns(); + const allFns = fns.befores.concat(this.queueableFn).concat(fns.afters); + this.currentRun = this.queueRunnerFactory({ + queueableFns: allFns, + + onException() { + // @ts-expect-error + self.onException.apply(self, arguments); + }, + + userContext: this.userContext(), + setTimeout, + clearTimeout, + fail: () => {} + }); + this.currentRun.then(() => complete(true)); + + function complete(enabledAgain) { + self.result.status = self.status(enabledAgain); + self.resultCallback(self.result); + + if (onComplete) { + onComplete(); + } + } + } + + cancel() { + if (this.currentRun) { + this.currentRun.cancel(); + } + } + + onException(error) { + if (Spec.isPendingSpecException(error)) { + this.pend(extractCustomPendingMessage(error)); + return; + } + + if (error instanceof _ExpectationFailed.default) { + return; + } + + this.addExpectationResult( + false, + { + matcherName: '', + passed: false, + expected: '', + actual: '', + error: this.isAssertionError(error) + ? (0, _assertionErrorMessage.default)(error, { + expand: this.expand + }) + : error + }, + true + ); + } + + disable() { + this.disabled = true; + } + + pend(message) { + this.markedPending = true; + + if (message) { + this.result.pendingReason = message; + } + } + + todo() { + this.markedTodo = true; + } + + getResult() { + this.result.status = this.status(); + return this.result; + } + + status(enabled) { + if (this.disabled || enabled === false) { + return 'disabled'; + } + + if (this.markedTodo) { + return 'todo'; + } + + if (this.markedPending) { + return 'pending'; + } + + if (this.result.failedExpectations.length > 0) { + return 'failed'; + } else { + return 'passed'; + } + } + + isExecutable() { + return !this.disabled; + } + + getFullName() { + return this.getSpecName(this); + } + + isAssertionError(error) { + return ( + error instanceof _assert.AssertionError || + (error && error.name === _assert.AssertionError.name) + ); + } +} + +exports.default = Spec; + +_defineProperty(Spec, 'pendingSpecExceptionMessage', void 0); + +Spec.pendingSpecExceptionMessage = '=> marked Pending'; + +const extractCustomPendingMessage = function (e) { + const fullMessage = e.toString(); + const boilerplateStart = fullMessage.indexOf( + Spec.pendingSpecExceptionMessage + ); + const boilerplateEnd = + boilerplateStart + Spec.pendingSpecExceptionMessage.length; + return fullMessage.substr(boilerplateEnd); +}; |