38 lines
969 B
JavaScript
38 lines
969 B
JavaScript
|
'use strict';
|
||
|
const StackUtils = require('stack-utils');
|
||
|
const cleanStack = require('clean-stack');
|
||
|
const debug = require('debug')('ava');
|
||
|
|
||
|
// Ignore unimportant stack trace lines
|
||
|
let ignoreStackLines = [];
|
||
|
|
||
|
const avaInternals = /\/ava\/(?:lib\/)?[\w-]+\.js:\d+:\d+\)?$/;
|
||
|
const avaDependencies = /\/node_modules\/(?:bluebird|empower-core|(?:ava\/node_modules\/)?(?:babel-runtime|core-js))\//;
|
||
|
|
||
|
if (!debug.enabled) {
|
||
|
ignoreStackLines = StackUtils.nodeInternals();
|
||
|
ignoreStackLines.push(avaInternals);
|
||
|
ignoreStackLines.push(avaDependencies);
|
||
|
}
|
||
|
|
||
|
const stackUtils = new StackUtils({internals: ignoreStackLines});
|
||
|
|
||
|
module.exports = stack => {
|
||
|
if (!stack) {
|
||
|
return '';
|
||
|
}
|
||
|
|
||
|
// Workaround for https://github.com/tapjs/stack-utils/issues/14
|
||
|
// TODO: fix it in `stack-utils`
|
||
|
stack = cleanStack(stack);
|
||
|
|
||
|
const title = stack.split('\n')[0];
|
||
|
const lines = stackUtils
|
||
|
.clean(stack)
|
||
|
.split('\n')
|
||
|
.map(x => ` ${x}`)
|
||
|
.join('\n');
|
||
|
|
||
|
return `${title}\n${lines}`;
|
||
|
};
|