diff --git a/.mocha.js b/.mocha.js deleted file mode 100644 index b888fb4d5..000000000 --- a/.mocha.js +++ /dev/null @@ -1,3 +0,0 @@ -try { require('clarify') } catch (_) {} -try { require('trace') } catch (_) {} -try { require('source-map-support/register') } catch (_) {} diff --git a/.mocha.opts b/.mocha.opts index 6cfd94898..02ee7614d 100644 --- a/.mocha.opts +++ b/.mocha.opts @@ -1 +1 @@ ---require ./.mocha.js +--require ./better-stacks.js diff --git a/better-stacks.js b/better-stacks.js new file mode 100644 index 000000000..0e04e28f9 --- /dev/null +++ b/better-stacks.js @@ -0,0 +1,33 @@ +try { require('source-map-support/register') } catch (_) {} + +// Async stacks. +try { require('trace') } catch (_) {} + +// Removes node_modules and internal modules. +try { + var sep = require('path').sep + var path = __dirname + sep + 'node_modules' + sep + + require('stack-chain').filter.attach(function (_, frames) { + var filtered = frames.filter(function (frame) { + var name = frame && frame.getFileName() + + return ( + // has a filename + name && + + // contains a separator (no internal modules) + // name.indexOf(sep) !== -1 && + + // does not start with the current path followed by node_modules. + name.lastIndexOf(path, 0) !== 0 + ) + }) + + // depd (used amongst other by express requires at least 3 frames + // in the stack. + return filtered.length > 2 + ? filtered + : frames + }) +} catch (_) {} diff --git a/bin/xo-server b/bin/xo-server index 83435ccfe..889065c46 100755 --- a/bin/xo-server +++ b/bin/xo-server @@ -4,4 +4,7 @@ // =================================================================== +// Better stack traces if possible. +require('../better-stacks') + require('exec-promise')(require('../')) diff --git a/index.js b/index.js index 701a895e7..f6dd4e320 100644 --- a/index.js +++ b/index.js @@ -7,10 +7,5 @@ if (process.env.DEBUG === undefined) { process.env.DEBUG = 'app-conf,xen-api,xo:*' } -// Better stack traces if possible. -try { require('clarify') } catch (_) {} -try { require('source-map-support/register') } catch (_) {} -try { require('trace') } catch (_) {} - // Import the real main module. module.exports = require('./dist') diff --git a/package.json b/package.json index d02e4f1af..9e7e31f93 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "blocked": "^1.1.0", "bluebird": "^2.9.14", "body-parser": "^1.13.3", - "clarify": "^1.0.5", "connect-flash": "^0.1.1", "cookie-parser": "^1.3.5", "cron": "^1.0.9",