11import { ChainError } from '#lib/chain-error.js' ;
2- import { cleanStack } from './common.js' ;
32
43// tslint:disable: no-unused-expression
54
65describe ( 'ChainError:' , ( ) => {
7- let nodestack : string ;
8-
9- beforeEach ( ( ) => {
10- /**
11- * Save the generic parts of all stack traces so we can avoid hardcoding
12- * Node-specific implementation details in our testing of stack traces.
13- * The stack trace limit has to be large enough to capture all of Node's frames,
14- * which are more than the default (10 frames) in Node v6.x.
15- */
16- Error . stackTraceLimit = 20 ;
17- nodestack = new Error ( ) . stack ! . split ( '\n' ) . slice ( 4 ) . join ( '\n' ) ;
18- nodestack = cleanStack ( nodestack ) ;
19- } ) ;
20-
216 it ( 'caused by another error, with no additional message' , ( ) => {
227 const suberr = new Error ( 'root cause' ) ;
238 let err = new ChainError ( null , suberr ) ;
24- expect ( err . message ) . toEqual ( ': root cause' ) ;
9+ expect ( err . message ) . toBe ( ': root cause' ) ;
2510
2611 err = new ChainError ( null , { cause : suberr } ) ;
27- expect ( err . message ) . toEqual ( ': root cause' ) ;
12+ expect ( err . message ) . toBe ( ': root cause' ) ;
2813 } ) ;
2914
3015 it ( 'caused by another error, with annotation' , ( ) => {
3116 const suberr = new Error ( 'root cause' ) ;
3217 const err = new ChainError ( 'proximate cause: 3 issues' , suberr ) ;
33- expect ( err . message ) . toEqual ( 'proximate cause: 3 issues: root cause' ) ;
34- const actualStack = cleanStack ( err . stack ! ) ;
35- const expectedStack = `ChainError: proximate cause: 3 issues: root cause\n (dummy filename)\n${ nodestack } ` ;
36- expect ( actualStack ) . toBe ( expectedStack ) ;
18+ expect ( err . message ) . toBe ( 'proximate cause: 3 issues: root cause' ) ;
19+ expect ( err . stack ) . toContain ( 'ChainError: proximate cause: 3 issues: root cause' ) ;
3720 } ) ;
3821
3922 it ( 'caused by another ChainError, with annotation' , ( ) => {
4023 const suberr1 = new Error ( 'root cause' ) ;
4124 const suberr2 = new ChainError ( 'proximate cause: 3 issues' , suberr1 ) ;
4225 let err = new ChainError ( 'top' , suberr2 ) ;
43- expect ( err . message ) . toEqual ( 'top: proximate cause: 3 issues: root cause' ) ;
26+ expect ( err . message ) . toBe ( 'top: proximate cause: 3 issues: root cause' ) ;
4427
4528 err = new ChainError ( 'top' , { cause : suberr2 } ) ;
46- expect ( err . message ) . toEqual ( 'top: proximate cause: 3 issues: root cause' ) ;
29+ expect ( err . message ) . toBe ( 'top: proximate cause: 3 issues: root cause' ) ;
4730 } ) ;
4831
4932 it ( 'caused by a ChainError' , ( ) => {
5033 const suberr = new ChainError ( 'mid' , new Error ( 'root cause' ) , true ) ;
5134 const err = new ChainError ( 'top' , suberr ) ;
52- expect ( err . message ) . toEqual ( 'top: mid' ) ;
35+ expect ( err . message ) . toBe ( 'top: mid' ) ;
5336 } ) ;
5437
5538 it ( 'fullStack' , ( ) => {
5639 const suberr = new ChainError ( 'mid' , new Error ( 'root cause' ) ) ;
5740 const err = new ChainError ( 'top' , suberr ) ;
58- const actualStack = cleanStack ( ChainError . getFullStack ( err ) ) ;
59- expect ( actualStack ) . toBe (
60- `ChainError: top: mid: root cause\n (dummy filename)\n${ nodestack } \n` +
61- `caused by: ChainError: mid: root cause\n (dummy filename)\n${ nodestack } \n` +
62- `caused by: Error: root cause\n (dummy filename)\n${ nodestack } `
63- ) ;
41+ const actualStack = ChainError . getFullStack ( err ) ;
42+ expect ( actualStack ) . toContain ( 'ChainError: top: mid: root cause' ) ;
43+ expect ( actualStack ) . toContain ( 'caused by: ChainError: mid: root cause' ) ;
44+ expect ( actualStack ) . toContain ( 'caused by: Error: root cause' ) ;
6445 } ) ;
6546
6647 it ( 'no arguments' , ( ) => {
6748 const err = new ChainError ( null , null , true ) ;
68- expect ( err . toString ( ) ) . toEqual ( 'ChainError' ) ;
69- const stack = cleanStack ( err . stack ! ) ;
70- expect ( stack ) . toEqual ( ` ChainError: \n (dummy filename)\n ${ nodestack } ` ) ;
49+ expect ( err . toString ( ) ) . toBe ( 'ChainError' ) ;
50+ const stack = err . stack ;
51+ expect ( stack ) . toContain ( ' ChainError' ) ;
7152 } ) ;
7253
7354 it ( 'options-argument form' , ( ) => {
7455 let err = new ChainError ( null , { } , true ) ;
75- expect ( err . toString ( ) ) . toEqual ( 'ChainError' ) ;
56+ expect ( err . toString ( ) ) . toBe ( 'ChainError' ) ;
7657
7758 /* simple message */
7859 err = new ChainError ( 'my error' , null , true ) ;
79- expect ( err . message ) . toEqual ( 'my error' ) ;
80- expect ( err . toString ( ) ) . toEqual ( 'ChainError: my error' ) ;
81- const stack = cleanStack ( err . stack ! ) ;
82- expect ( stack ) . toEqual ( ` ChainError: my error\n (dummy filename)\n ${ nodestack } ` ) ;
60+ expect ( err . message ) . toBe ( 'my error' ) ;
61+ expect ( err . toString ( ) ) . toBe ( 'ChainError: my error' ) ;
62+ const stack = err . stack ;
63+ expect ( stack ) . toContain ( ' ChainError: my error' ) ;
8364
8465 err = new ChainError ( 'my error' , { } , true ) ;
85- expect ( err . toString ( ) ) . toEqual ( 'ChainError: my error' ) ;
66+ expect ( err . toString ( ) ) . toBe ( 'ChainError: my error' ) ;
8667 } ) ;
8768
8869 it ( 'caused by another error, with no additional message' , ( ) => {
8970 const suberr = new Error ( 'root cause' ) ;
9071 let err = new ChainError ( null , suberr , true ) ;
91- expect ( err . message ) . toEqual ( '' ) ;
92- expect ( err . toString ( ) ) . toEqual ( 'ChainError; caused by Error: root cause' ) ;
72+ expect ( err . message ) . toBe ( '' ) ;
73+ expect ( err . toString ( ) ) . toBe ( 'ChainError; caused by Error: root cause' ) ;
9374
9475 err = new ChainError ( null , { cause : suberr } , true ) ;
95- expect ( err . message ) . toEqual ( '' ) ;
96- expect ( err . toString ( ) ) . toEqual ( 'ChainError; caused by Error: root cause' ) ;
76+ expect ( err . message ) . toBe ( '' ) ;
77+ expect ( err . toString ( ) ) . toBe ( 'ChainError; caused by Error: root cause' ) ;
9778 } ) ;
9879
9980 it ( 'caused by another error, with annotation' , ( ) => {
10081 const suberr = new Error ( 'root cause' ) ;
10182 let err = new ChainError ( 'proximate cause: 3 issues' , suberr , true ) ;
102- expect ( err . message ) . toEqual ( 'proximate cause: 3 issues' ) ;
103- expect ( err . toString ( ) ) . toEqual ( 'ChainError: proximate cause: 3 issues; caused by Error: root cause' ) ;
104- let stack = cleanStack ( err . stack ! ) ;
105- expect ( stack ) . toEqual ( ` ChainError: proximate cause: 3 issues\n (dummy filename)\n ${ nodestack } ` ) ;
83+ expect ( err . message ) . toBe ( 'proximate cause: 3 issues' ) ;
84+ expect ( err . toString ( ) ) . toBe ( 'ChainError: proximate cause: 3 issues; caused by Error: root cause' ) ;
85+ let stack = err . stack ;
86+ expect ( stack ) . toContain ( ' ChainError: proximate cause: 3 issues' ) ;
10687
10788 err = new ChainError ( 'proximate cause: 3 issues' , { cause : suberr } , true ) ;
108- expect ( err . message ) . toEqual ( 'proximate cause: 3 issues' ) ;
109- expect ( err . toString ( ) ) . toEqual ( 'ChainError: proximate cause: 3 issues; caused by Error: root cause' ) ;
110- stack = cleanStack ( err . stack ! ) ;
111- expect ( stack ) . toEqual ( ` ChainError: proximate cause: 3 issues\n (dummy filename)\n ${ nodestack } ` ) ;
89+ expect ( err . message ) . toBe ( 'proximate cause: 3 issues' ) ;
90+ expect ( err . toString ( ) ) . toBe ( 'ChainError: proximate cause: 3 issues; caused by Error: root cause' ) ;
91+ stack = err . stack ;
92+ expect ( stack ) . toContain ( ' ChainError: proximate cause: 3 issues' ) ;
11293 } ) ;
11394
11495 it ( 'caused by another ChainError, with annotation' , ( ) => {
11596 const suberr1 = new Error ( 'root cause' ) ;
11697 const suberr = new ChainError ( 'proximate cause: 3 issues' , { cause : suberr1 } , true ) ;
11798 let err = new ChainError ( 'top' , suberr , true ) ;
118- expect ( err . message ) . toEqual ( 'top' ) ;
99+ expect ( err . message ) . toBe ( 'top' ) ;
119100 let actualStack = err . toString ( ) ;
120101 let expectedStack = 'ChainError: top; caused by ChainError: proximate cause: 3 issues; caused by Error: root cause' ;
121102 expect ( actualStack ) . toBe ( expectedStack ) ;
122103
123104 err = new ChainError ( 'top' , { cause : suberr } , true ) ;
124- expect ( err . message ) . toEqual ( 'top' ) ;
105+ expect ( err . message ) . toBe ( 'top' ) ;
125106 actualStack = err . toString ( ) ;
126107 expectedStack =
127108 'ChainError: top; caused by ChainError: ' + 'proximate cause: 3 issues; caused by Error: root cause' ;
@@ -131,19 +112,16 @@ describe('ChainError:', () => {
131112 it ( 'caused by a ChainError' , ( ) => {
132113 const suberr = new ChainError ( 'mid' , new Error ( 'root cause' ) ) ;
133114 const err = new ChainError ( 'top' , suberr , true ) ;
134- expect ( err . message ) . toEqual ( 'top' ) ;
135- expect ( err . toString ( ) ) . toEqual ( 'ChainError: top; caused by ChainError: mid: root cause' ) ;
115+ expect ( err . message ) . toBe ( 'top' ) ;
116+ expect ( err . toString ( ) ) . toBe ( 'ChainError: top; caused by ChainError: mid: root cause' ) ;
136117 } ) ;
137118
138119 it ( 'fullStack' , ( ) => {
139120 const suberr = new ChainError ( 'mid' , new Error ( 'root cause' ) , true ) ;
140121 const err = new ChainError ( 'top' , suberr , true ) ;
141- const stack = cleanStack ( ChainError . getFullStack ( err ) ) ;
142-
143- expect ( stack ) . toBe (
144- `ChainError: top\n (dummy filename)\n${ nodestack } \n` +
145- `caused by: ChainError: mid\n (dummy filename)\n${ nodestack } \n` +
146- `caused by: Error: root cause\n (dummy filename)\n${ nodestack } `
147- ) ;
122+ const actualStack = ChainError . getFullStack ( err ) ;
123+ expect ( actualStack ) . toContain ( 'ChainError: top' ) ;
124+ expect ( actualStack ) . toContain ( 'caused by: ChainError: mid' ) ;
125+ expect ( actualStack ) . toContain ( 'caused by: Error: root cause' ) ;
148126 } ) ;
149127} ) ;
0 commit comments