You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
109 lines
2.6 KiB
109 lines
2.6 KiB
chai = require 'chai' |
|
PrettyError = require '../src/PrettyError' |
|
defaultStyle = require '../src/defaultStyle' |
|
|
|
chai.should() |
|
|
|
isFormatted = (exc) -> |
|
exc.stack.indexOf(' \u001b[0m\u001b[97m\u001b[41m') is 0 |
|
|
|
error = (what) -> |
|
if typeof what is 'string' |
|
return error -> throw Error what |
|
|
|
else if what instanceof Function |
|
try |
|
do what |
|
catch e |
|
return e |
|
|
|
throw Error "bad argument for error" |
|
|
|
describe "PrettyError", -> |
|
describe "constructor()", -> |
|
it "should work", -> |
|
new PrettyError |
|
|
|
describe "getObject", -> |
|
it "should return a string", -> |
|
p = new PrettyError |
|
p.getObject(error "hello").should.be.an 'object' |
|
|
|
describe "style", -> |
|
it "should, by default, return the contents in `default-style`", -> |
|
p = new PrettyError |
|
p.style.should.eql defaultStyle() |
|
|
|
it "should return different contents after appending some styles", -> |
|
p = new PrettyError |
|
p.appendStyle 'some selector': 'display': 'block' |
|
p.style.should.not.eql defaultStyle() |
|
|
|
describe "render()", -> |
|
it "should work", -> |
|
p = new PrettyError |
|
p.skipNodeFiles() |
|
p.appendStyle 'pretty-error': marginLeft: 4 |
|
|
|
e = error -> "a".should.equal "b" |
|
console.log p.render e, no |
|
|
|
e2 = error -> Array.split(Object) |
|
console.log p.render e2, no |
|
|
|
e3 = "Plain error message" |
|
console.log p.render e3, no |
|
|
|
e4 = |
|
message: "Custom error message" |
|
kind: "Custom Error" |
|
|
|
console.log p.render e4, no |
|
|
|
e5 = |
|
message: "Error with custom stack" |
|
stack: ['line one', 'line two'] |
|
wrapper: 'UnhandledRejection' |
|
|
|
console.log p.render e5, no |
|
|
|
e6 = error -> PrettyError.someNonExistingFuncion() |
|
console.log p.render e6, no |
|
|
|
it.skip "should render without colors if pe._useColors is false", -> |
|
p = new PrettyError |
|
p.withoutColors() |
|
p.skipNodeFiles() |
|
p.appendStyle 'pretty-error': marginLeft: 4 |
|
|
|
e = error -> "a".should.equal "b" |
|
console.log p.render e, no |
|
|
|
describe "start()", -> |
|
prepareStackTrace = null |
|
|
|
beforeEach -> |
|
{prepareStackTrace} = Error |
|
Error.prepareStackTrace = null |
|
|
|
afterEach -> |
|
Error.prepareStackTrace = prepareStackTrace |
|
|
|
it "throws unformatted error when not started", -> |
|
try |
|
throw new Error "foo bar" |
|
catch exc |
|
|
|
isFormatted(exc).should.be.eql false |
|
|
|
it "throws formatted the error", -> |
|
PrettyError.start() |
|
|
|
try |
|
throw new Error "foo bar" |
|
catch exc |
|
|
|
isFormatted(exc).should.be.eql true |
|
exc.stack.split(/\n/g).length.should.be.above 2 |
|
|
|
PrettyError.stop()
|
|
|