您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

test.js 2.6KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. var test = require('tape')
  2. , inherits = require('inherits')
  3. , ErrorStackParser = require('error-stack-parser')
  4. , errno = require('./')
  5. test('sanity checks', function (t) {
  6. t.ok(errno.all, 'errno.all not found')
  7. t.ok(errno.errno, 'errno.errno not found')
  8. t.ok(errno.code, 'errno.code not found')
  9. t.equal(errno.all.length, 60, 'found ' + errno.all.length + ', expected 60')
  10. t.equal(errno.errno['-1'], errno.all[1], 'errno -1 not second element')
  11. t.equal(errno.code['UNKNOWN'], errno.all[1], 'code UNKNOWN not second element')
  12. t.equal(errno.errno[1], errno.all[3], 'errno 1 not fourth element')
  13. t.equal(errno.code['EOF'], errno.all[3], 'code EOF not fourth element')
  14. t.end()
  15. })
  16. test('custom errors', function (t) {
  17. const Cust = errno.create('FooNotBarError')
  18. const cust = new Cust('foo is not bar')
  19. t.equal(cust.name, 'FooNotBarError', 'correct custom name')
  20. t.equal(cust.type, 'FooNotBarError', 'correct custom type')
  21. t.equal(cust.message, 'foo is not bar', 'correct custom message')
  22. t.notOk(cust.cause, 'no cause')
  23. t.end()
  24. })
  25. test('callstack', function (t) {
  26. const MyError = errno.create('MyError')
  27. function lastFunction (ErrorType, cb) {
  28. process.nextTick(cb, new ErrorType('oh noes!'))
  29. }
  30. function secondLastFunction (ErrorType, cb) {
  31. lastFunction(ErrorType, cb)
  32. }
  33. function testFrames (t) {
  34. return function (err) {
  35. const stack = ErrorStackParser.parse(err)
  36. t.same(stack[0].functionName, 'lastFunction', 'last stack frame ok')
  37. t.same(stack[1].functionName, 'secondLastFunction', 'second last stack frame ok')
  38. t.end()
  39. }
  40. }
  41. t.test('custom error, default prototype', function (t) {
  42. secondLastFunction(MyError, testFrames(t))
  43. })
  44. t.test('custom error, custom prototype', function (t) {
  45. const MyError2 = errno.create('MyError2', MyError)
  46. secondLastFunction(MyError2, testFrames(t))
  47. })
  48. t.test('custom error, using inheritance', function (t) {
  49. const CustomError = errno.custom.CustomError
  50. function MyError3 (message, cause) {
  51. CustomError.call(this, message, cause)
  52. }
  53. inherits(MyError3, CustomError)
  54. secondLastFunction(MyError3, testFrames(t))
  55. })
  56. })
  57. test('error without message', function (t) {
  58. const Cust = errno.create('WriteError')
  59. const cust = new Cust({
  60. code: 22,
  61. message: '',
  62. name: 'QuotaExceededError'
  63. })
  64. t.equal(cust.name, 'WriteError', 'correct custom name')
  65. t.equal(cust.type, 'WriteError', 'correct custom type')
  66. t.equal(cust.message, 'QuotaExceededError', 'message is the name')
  67. t.notOk(cust.cause, 'no cause')
  68. t.end()
  69. })