in packages/fb-babel-plugin-utils/TestUtil.js [170:224]
assertSourceAstEqual(expected, actual, options) {
const expectedTree = stripMeta(
parse(normalizeSourceCode(expected)).program,
options,
);
const actualTree = stripMeta(
parse(normalizeSourceCode(actual)).program,
options,
);
try {
assert.deepStrictEqual(actualTree, expectedTree);
} catch (e) {
const jsonDiff = require('json-diff');
const expectedFormattedCode = formatSourceCode(expected);
const actualFormattedCode = formatSourceCode(actual);
const commonStr = firstCommonSubstring(
expectedFormattedCode,
actualFormattedCode,
);
const excerptLength = 60;
const excerptDiffFromExpected = expectedFormattedCode.substr(
commonStr.length,
excerptLength,
);
const excerptDiffFromActual = actualFormattedCode.substr(
commonStr.length,
excerptLength,
);
const errMessage = `deepEqual node AST assert failed for the following code:
Expected output: <<<${expectedFormattedCode}>>>
Actual output: <<<${actualFormattedCode}>>>
First common string: <<<${commonStr}>>>
The first difference is (${excerptLength} chars max):
Expected : <<<${excerptDiffFromExpected}>>>
Actual : <<<${excerptDiffFromActual}>>>
AST diff:
====
${jsonDiff.diffString(expectedTree, actualTree)}
====
`;
console.error(errMessage);
const err = new Error(errMessage);
err.stack = e.stack;
throw err;
}
},