stack-slice
Version:
Slice a file or directory from the middle of an Error stack trace
78 lines (52 loc) • 2.04 kB
JavaScript
var test = require('tape'),
path = require('path'),
stackSlice = require('../');
test('no touchy', function(t){
t.plan(1);
var testError = new Error('BANG!!!!'),
originalStack = testError.stack;
stackSlice(testError, 'something that wont match');
t.equal(originalStack, testError.stack, 'stack was not modified');
});
test('exact match', function(t){
t.plan(1);
var testError = new Error('BANG!!!!'),
originalStack = testError.stack.split('\n');
originalStack.splice(1,1);
var expectedStack = originalStack.join('\n');
stackSlice(testError, __filename);
t.equal(testError.stack, expectedStack, 'stack was modified correctly');
});
test('exact match with anonomous function', function(t){
t.plan(1);
var testError = function(){
return new Error('BANG!!!!');
}(),
originalStack = testError.stack.split('\n');
originalStack.splice(1,2);
var expectedStack = originalStack.join('\n');
stackSlice(testError, __filename);
t.equal(testError.stack, expectedStack, 'stack was modified correctly');
});
test('partial match', function(t){
t.plan(1);
var testError = new Error('BANG!!!!'),
originalStack = testError.stack.split('\n'),
expectedStack = [];
expectedStack.push(originalStack.shift());
expectedStack.push(originalStack.pop());
stackSlice(testError, path.resolve(__dirname, '..'), true);
t.equal(testError.stack, expectedStack.join('\n'), 'stack was modified correctly');
});
test('partial match with anonomous function', function(t){
t.plan(1);
var testError = function(){
return new Error('BANG!!!!');
}(),
originalStack = testError.stack.split('\n'),
expectedStack = [];
expectedStack.push(originalStack.shift());
expectedStack.push(originalStack.pop());
stackSlice(testError, path.resolve(__dirname, '..'), true);
t.equal(testError.stack, expectedStack.join('\n'), 'stack was modified correctly');
});