aboutsummaryrefslogtreecommitdiff
path: root/node_modules/expect/build/toThrowMatchers.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/expect/build/toThrowMatchers.js')
-rw-r--r--node_modules/expect/build/toThrowMatchers.js464
1 files changed, 464 insertions, 0 deletions
diff --git a/node_modules/expect/build/toThrowMatchers.js b/node_modules/expect/build/toThrowMatchers.js
new file mode 100644
index 0000000..f34f236
--- /dev/null
+++ b/node_modules/expect/build/toThrowMatchers.js
@@ -0,0 +1,464 @@
+'use strict';
+
+Object.defineProperty(exports, '__esModule', {
+ value: true
+});
+exports.default = exports.createMatcher = void 0;
+
+var _jestMatcherUtils = require('jest-matcher-utils');
+
+var _jestMessageUtil = require('jest-message-util');
+
+var _print = require('./print');
+
+var _utils = require('./utils');
+
+/**
+ * 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.
+ *
+ */
+
+/* eslint-disable local/ban-types-eventually */
+const DID_NOT_THROW = 'Received function did not throw';
+
+const getThrown = e => {
+ const hasMessage =
+ e !== null && e !== undefined && typeof e.message === 'string';
+
+ if (hasMessage && typeof e.name === 'string' && typeof e.stack === 'string') {
+ return {
+ hasMessage,
+ isError: true,
+ message: e.message,
+ value: e
+ };
+ }
+
+ return {
+ hasMessage,
+ isError: false,
+ message: hasMessage ? e.message : String(e),
+ value: e
+ };
+};
+
+const createMatcher = (matcherName, fromPromise) =>
+ function (received, expected) {
+ const options = {
+ isNot: this.isNot,
+ promise: this.promise
+ };
+ let thrown = null;
+
+ if (fromPromise && (0, _utils.isError)(received)) {
+ thrown = getThrown(received);
+ } else {
+ if (typeof received !== 'function') {
+ if (!fromPromise) {
+ const placeholder = expected === undefined ? '' : 'expected';
+ throw new Error(
+ (0, _jestMatcherUtils.matcherErrorMessage)(
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ placeholder,
+ options
+ ),
+ `${(0, _jestMatcherUtils.RECEIVED_COLOR)(
+ 'received'
+ )} value must be a function`,
+ (0, _jestMatcherUtils.printWithType)(
+ 'Received',
+ received,
+ _jestMatcherUtils.printReceived
+ )
+ )
+ );
+ }
+ } else {
+ try {
+ received();
+ } catch (e) {
+ thrown = getThrown(e);
+ }
+ }
+ }
+
+ if (expected === undefined) {
+ return toThrow(matcherName, options, thrown);
+ } else if (typeof expected === 'function') {
+ return toThrowExpectedClass(matcherName, options, thrown, expected);
+ } else if (typeof expected === 'string') {
+ return toThrowExpectedString(matcherName, options, thrown, expected);
+ } else if (expected !== null && typeof expected.test === 'function') {
+ return toThrowExpectedRegExp(matcherName, options, thrown, expected);
+ } else if (
+ expected !== null &&
+ typeof expected.asymmetricMatch === 'function'
+ ) {
+ return toThrowExpectedAsymmetric(matcherName, options, thrown, expected);
+ } else if (expected !== null && typeof expected === 'object') {
+ return toThrowExpectedObject(matcherName, options, thrown, expected);
+ } else {
+ throw new Error(
+ (0, _jestMatcherUtils.matcherErrorMessage)(
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ),
+ `${(0, _jestMatcherUtils.EXPECTED_COLOR)(
+ 'expected'
+ )} value must be a string or regular expression or class or error`,
+ (0, _jestMatcherUtils.printWithType)(
+ 'Expected',
+ expected,
+ _jestMatcherUtils.printExpected
+ )
+ )
+ );
+ }
+ };
+
+exports.createMatcher = createMatcher;
+const matchers = {
+ toThrow: createMatcher('toThrow'),
+ toThrowError: createMatcher('toThrowError')
+};
+
+const toThrowExpectedRegExp = (matcherName, options, thrown, expected) => {
+ const pass = thrown !== null && expected.test(thrown.message);
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected pattern: not ', expected) +
+ (thrown !== null && thrown.hasMessage
+ ? formatReceived(
+ 'Received message: ',
+ thrown,
+ 'message',
+ expected
+ ) + formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected pattern: ', expected) +
+ (thrown === null
+ ? '\n' + DID_NOT_THROW
+ : thrown.hasMessage
+ ? formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'));
+ return {
+ message,
+ pass
+ };
+};
+
+const toThrowExpectedAsymmetric = (matcherName, options, thrown, expected) => {
+ const pass = thrown !== null && expected.asymmetricMatch(thrown.value);
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected asymmetric matcher: not ', expected) +
+ '\n' +
+ (thrown !== null && thrown.hasMessage
+ ? formatReceived('Received name: ', thrown, 'name') +
+ formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Thrown value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected asymmetric matcher: ', expected) +
+ '\n' +
+ (thrown === null
+ ? DID_NOT_THROW
+ : thrown.hasMessage
+ ? formatReceived('Received name: ', thrown, 'name') +
+ formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Thrown value: ', thrown, 'value'));
+ return {
+ message,
+ pass
+ };
+};
+
+const toThrowExpectedObject = (matcherName, options, thrown, expected) => {
+ const pass = thrown !== null && thrown.message === expected.message;
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected message: not ', expected.message) +
+ (thrown !== null && thrown.hasMessage
+ ? formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ (thrown === null
+ ? formatExpected('Expected message: ', expected.message) +
+ '\n' +
+ DID_NOT_THROW
+ : thrown.hasMessage
+ ? (0, _jestMatcherUtils.printDiffOrStringify)(
+ expected.message,
+ thrown.message,
+ 'Expected message',
+ 'Received message',
+ true
+ ) +
+ '\n' +
+ formatStack(thrown)
+ : formatExpected('Expected message: ', expected.message) +
+ formatReceived('Received value: ', thrown, 'value'));
+ return {
+ message,
+ pass
+ };
+};
+
+const toThrowExpectedClass = (matcherName, options, thrown, expected) => {
+ const pass = thrown !== null && thrown.value instanceof expected;
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ (0, _print.printExpectedConstructorNameNot)(
+ 'Expected constructor',
+ expected
+ ) +
+ (thrown !== null &&
+ thrown.value != null &&
+ typeof thrown.value.constructor === 'function' &&
+ thrown.value.constructor !== expected
+ ? (0, _print.printReceivedConstructorNameNot)(
+ 'Received constructor',
+ thrown.value.constructor,
+ expected
+ )
+ : '') +
+ '\n' +
+ (thrown !== null && thrown.hasMessage
+ ? formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ (0, _print.printExpectedConstructorName)(
+ 'Expected constructor',
+ expected
+ ) +
+ (thrown === null
+ ? '\n' + DID_NOT_THROW
+ : (thrown.value != null &&
+ typeof thrown.value.constructor === 'function'
+ ? (0, _print.printReceivedConstructorName)(
+ 'Received constructor',
+ thrown.value.constructor
+ )
+ : '') +
+ '\n' +
+ (thrown.hasMessage
+ ? formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value')));
+ return {
+ message,
+ pass
+ };
+};
+
+const toThrowExpectedString = (matcherName, options, thrown, expected) => {
+ const pass = thrown !== null && thrown.message.includes(expected);
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected substring: not ', expected) +
+ (thrown !== null && thrown.hasMessage
+ ? formatReceived(
+ 'Received message: ',
+ thrown,
+ 'message',
+ expected
+ ) + formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ undefined,
+ options
+ ) +
+ '\n\n' +
+ formatExpected('Expected substring: ', expected) +
+ (thrown === null
+ ? '\n' + DID_NOT_THROW
+ : thrown.hasMessage
+ ? formatReceived('Received message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Received value: ', thrown, 'value'));
+ return {
+ message,
+ pass
+ };
+};
+
+const toThrow = (matcherName, options, thrown) => {
+ const pass = thrown !== null;
+ const message = pass
+ ? () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ '',
+ options
+ ) +
+ '\n\n' +
+ (thrown !== null && thrown.hasMessage
+ ? formatReceived('Error name: ', thrown, 'name') +
+ formatReceived('Error message: ', thrown, 'message') +
+ formatStack(thrown)
+ : formatReceived('Thrown value: ', thrown, 'value'))
+ : () =>
+ (0, _jestMatcherUtils.matcherHint)(
+ matcherName,
+ undefined,
+ '',
+ options
+ ) +
+ '\n\n' +
+ DID_NOT_THROW;
+ return {
+ message,
+ pass
+ };
+};
+
+const formatExpected = (label, expected) =>
+ label + (0, _jestMatcherUtils.printExpected)(expected) + '\n';
+
+const formatReceived = (label, thrown, key, expected) => {
+ if (thrown === null) {
+ return '';
+ }
+
+ if (key === 'message') {
+ const message = thrown.message;
+
+ if (typeof expected === 'string') {
+ const index = message.indexOf(expected);
+
+ if (index !== -1) {
+ return (
+ label +
+ (0, _print.printReceivedStringContainExpectedSubstring)(
+ message,
+ index,
+ expected.length
+ ) +
+ '\n'
+ );
+ }
+ } else if (expected instanceof RegExp) {
+ return (
+ label +
+ (0, _print.printReceivedStringContainExpectedResult)(
+ message,
+ typeof expected.exec === 'function' ? expected.exec(message) : null
+ ) +
+ '\n'
+ );
+ }
+
+ return label + (0, _jestMatcherUtils.printReceived)(message) + '\n';
+ }
+
+ if (key === 'name') {
+ return thrown.isError
+ ? label + (0, _jestMatcherUtils.printReceived)(thrown.value.name) + '\n'
+ : '';
+ }
+
+ if (key === 'value') {
+ return thrown.isError
+ ? ''
+ : label + (0, _jestMatcherUtils.printReceived)(thrown.value) + '\n';
+ }
+
+ return '';
+};
+
+const formatStack = thrown =>
+ thrown === null || !thrown.isError
+ ? ''
+ : (0, _jestMessageUtil.formatStackTrace)(
+ (0, _jestMessageUtil.separateMessageFromStack)(thrown.value.stack)
+ .stack,
+ {
+ rootDir: process.cwd(),
+ testMatch: []
+ },
+ {
+ noStackTrace: false
+ }
+ );
+
+var _default = matchers;
+exports.default = _default;