This commit is contained in:
David Kale
2020-09-08 13:25:36 -04:00
parent e4246d2b5b
commit 91fcbb0108
4227 changed files with 416837 additions and 457884 deletions

View File

@@ -9,13 +9,13 @@ Object.defineProperty(exports, 'DiffOptions', {
return _jestDiff.DiffOptions;
}
});
exports.matcherHint = exports.matcherErrorMessage = exports.getLabelPrinter = exports.pluralize = exports.diff = exports.ensureExpectedIsNonNegativeInteger = exports.ensureNumbers = exports.ensureExpectedIsNumber = exports.ensureActualIsNumber = exports.ensureNoExpected = exports.printWithType = exports.printExpected = exports.printReceived = exports.highlightTrailingWhitespace = exports.stringify = exports.SUGGEST_TO_CONTAIN_EQUAL = exports.DIM_COLOR = exports.BOLD_WEIGHT = exports.INVERTED_COLOR = exports.RECEIVED_COLOR = exports.EXPECTED_COLOR = void 0;
exports.matcherHint = exports.matcherErrorMessage = exports.getLabelPrinter = exports.pluralize = exports.diff = exports.printDiffOrStringify = exports.ensureExpectedIsNonNegativeInteger = exports.ensureNumbers = exports.ensureExpectedIsNumber = exports.ensureActualIsNumber = exports.ensureNoExpected = exports.printWithType = exports.printExpected = exports.printReceived = exports.highlightTrailingWhitespace = exports.stringify = exports.SUGGEST_TO_CONTAIN_EQUAL = exports.DIM_COLOR = exports.BOLD_WEIGHT = exports.INVERTED_COLOR = exports.RECEIVED_COLOR = exports.EXPECTED_COLOR = void 0;
var _chalk = _interopRequireDefault(require('chalk'));
var _jestDiff = _interopRequireWildcard(require('jest-diff'));
var _jestGetType = _interopRequireDefault(require('jest-get-type'));
var _jestGetType = _interopRequireWildcard(require('jest-get-type'));
var _prettyFormat = _interopRequireDefault(require('pretty-format'));
@@ -79,6 +79,9 @@ const BOLD_WEIGHT = _chalk.default.bold;
exports.BOLD_WEIGHT = BOLD_WEIGHT;
const DIM_COLOR = _chalk.default.dim;
exports.DIM_COLOR = DIM_COLOR;
const MULTILINE_REGEXP = /\n/;
const SPACE_SYMBOL = '\u{00B7}'; // middle dot
const NUMBERS = [
'zero',
'one',
@@ -129,17 +132,21 @@ const stringify = (object, maxDepth = 10) => {
exports.stringify = stringify;
const highlightTrailingWhitespace = text =>
text.replace(/\s+$/gm, _chalk.default.inverse('$&'));
text.replace(/\s+$/gm, _chalk.default.inverse('$&')); // Instead of inverse highlight which now implies a change,
// replace common spaces with middle dot at the end of any line.
exports.highlightTrailingWhitespace = highlightTrailingWhitespace;
const replaceTrailingSpaces = text =>
text.replace(/\s+$/gm, spaces => SPACE_SYMBOL.repeat(spaces.length));
const printReceived = object =>
RECEIVED_COLOR(highlightTrailingWhitespace(stringify(object)));
RECEIVED_COLOR(replaceTrailingSpaces(stringify(object)));
exports.printReceived = printReceived;
const printExpected = value =>
EXPECTED_COLOR(highlightTrailingWhitespace(stringify(value)));
EXPECTED_COLOR(replaceTrailingSpaces(stringify(value)));
exports.printExpected = printExpected;
@@ -230,11 +237,114 @@ const ensureExpectedIsNonNegativeInteger = (expected, matcherName, options) => {
)
);
}
};
exports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger;
const isLineDiffable = (expected, received) => {
const expectedType = (0, _jestGetType.default)(expected);
const receivedType = (0, _jestGetType.default)(received);
if (expectedType !== receivedType) {
return false;
}
if ((0, _jestGetType.isPrimitive)(expected)) {
// Print generic line diff for strings only:
// * if neither string is empty
return (
typeof expected === 'string' &&
typeof received === 'string' &&
expected.length !== 0 &&
received.length !== 0 &&
(MULTILINE_REGEXP.test(expected) || MULTILINE_REGEXP.test(received))
);
}
if (
expectedType === 'date' ||
expectedType === 'function' ||
expectedType === 'regexp'
) {
return false;
}
if (expected instanceof Error && received instanceof Error) {
return false;
}
if (
expectedType === 'object' &&
typeof expected.asymmetricMatch === 'function'
) {
return false;
}
if (
receivedType === 'object' &&
typeof received.asymmetricMatch === 'function'
) {
return false;
}
return true;
};
const printDiffOrStringify = (
expected,
received,
expectedLabel,
receivedLabel,
expand
) => {
if (typeof expected === 'string' && typeof received === 'string') {
const result = (0, _jestDiff.getStringDiff)(expected, received, {
aAnnotation: expectedLabel,
bAnnotation: receivedLabel,
expand
});
if (result !== null) {
if (result.isMultiline) {
return result.annotatedDiff;
}
const printLabel = getLabelPrinter(expectedLabel, receivedLabel);
const expectedLine = printLabel(expectedLabel) + printExpected(result.a);
const receivedLine = printLabel(receivedLabel) + printReceived(result.b);
return expectedLine + '\n' + receivedLine;
}
}
if (isLineDiffable(expected, received)) {
const difference = (0, _jestDiff.default)(expected, received, {
aAnnotation: expectedLabel,
bAnnotation: receivedLabel,
expand
});
if (
typeof difference === 'string' &&
difference.includes('- ' + expectedLabel) &&
difference.includes('+ ' + receivedLabel)
) {
return difference;
}
}
const printLabel = getLabelPrinter(expectedLabel, receivedLabel);
const expectedLine = printLabel(expectedLabel) + printExpected(expected);
const receivedLine =
printLabel(receivedLabel) +
(stringify(expected) === stringify(received)
? 'serializes to the same string'
: printReceived(received));
return expectedLine + '\n' + receivedLine;
}; // Sometimes, e.g. when comparing two numbers, the output from jest-diff
// does not contain more information than the `Expected:` / `Received:` already gives.
// In those cases, we do not print a diff to make the output shorter and not redundant.
exports.ensureExpectedIsNonNegativeInteger = ensureExpectedIsNonNegativeInteger;
exports.printDiffOrStringify = printDiffOrStringify;
const shouldPrintDiff = (actual, expected) => {
if (typeof actual === 'number' && typeof expected === 'number') {
@@ -292,6 +402,9 @@ const matcherHint = (
) => {
const _options$comment = options.comment,
comment = _options$comment === void 0 ? '' : _options$comment,
_options$expectedColo = options.expectedColor,
expectedColor =
_options$expectedColo === void 0 ? EXPECTED_COLOR : _options$expectedColo,
_options$isDirectExpe = options.isDirectExpectCall,
isDirectExpectCall =
_options$isDirectExpe === void 0 ? false : _options$isDirectExpe,
@@ -299,14 +412,22 @@ const matcherHint = (
isNot = _options$isNot === void 0 ? false : _options$isNot,
_options$promise = options.promise,
promise = _options$promise === void 0 ? '' : _options$promise,
_options$receivedColo = options.receivedColor,
receivedColor =
_options$receivedColo === void 0 ? RECEIVED_COLOR : _options$receivedColo,
_options$secondArgume = options.secondArgument,
secondArgument =
_options$secondArgume === void 0 ? '' : _options$secondArgume;
_options$secondArgume === void 0 ? '' : _options$secondArgume,
_options$secondArgume2 = options.secondArgumentColor,
secondArgumentColor =
_options$secondArgume2 === void 0
? EXPECTED_COLOR
: _options$secondArgume2;
let hint = '';
let dimString = 'expect'; // concatenate adjacent dim substrings
if (!isDirectExpectCall && received !== '') {
hint += DIM_COLOR(dimString + '(') + RECEIVED_COLOR(received);
hint += DIM_COLOR(dimString + '(') + receivedColor(received);
dimString = ')';
}
@@ -333,10 +454,10 @@ const matcherHint = (
if (expected === '') {
dimString += '()';
} else {
hint += DIM_COLOR(dimString + '(') + EXPECTED_COLOR(expected);
hint += DIM_COLOR(dimString + '(') + expectedColor(expected);
if (secondArgument) {
hint += DIM_COLOR(', ') + EXPECTED_COLOR(secondArgument);
hint += DIM_COLOR(', ') + secondArgumentColor(secondArgument);
}
dimString = ')';