24
24
*/
25
25
26
26
import { createStackTraces } from '../../src/error-logging/stack-trace'
27
+ import stackParser from 'error-stack-parser'
27
28
28
29
describe ( 'StackTraceService' , function ( ) {
29
30
it ( 'should produce correct number of frames' , function ( done ) {
@@ -34,10 +35,56 @@ describe('StackTraceService', function () {
34
35
try {
35
36
generateError ( )
36
37
} catch ( error ) {
37
- var stackTraces = createStackTraces ( { error } )
38
+ var stackTraces = createStackTraces ( stackParser , { error } )
38
39
expect ( stackTraces . length ) . toBeGreaterThan ( 1 )
39
40
done ( )
40
41
}
41
42
} , 1 )
42
43
} )
44
+
45
+ describe ( 'integration error-stack-parser library' , ( ) => {
46
+ it ( 'should generate stack trace from errorEvent when stackParser throws an error parsing it' , ( ) => {
47
+ const stackParserFake = {
48
+ parse : ( ) => {
49
+ throw new Error ( )
50
+ }
51
+ }
52
+
53
+ const testErrorEvent = new Error ( )
54
+ testErrorEvent . error = 'error event'
55
+ testErrorEvent . lineno = 1
56
+ testErrorEvent . colno = 30
57
+ testErrorEvent . filename = '(inline script)'
58
+
59
+ const [ stackTrace ] = createStackTraces ( stackParserFake , testErrorEvent )
60
+
61
+ expect ( stackTrace . lineno ) . toBe ( testErrorEvent . lineno )
62
+ expect ( stackTrace . colno ) . toBe ( testErrorEvent . colno )
63
+ expect ( stackTrace . filename ) . toBe ( testErrorEvent . filename )
64
+ } )
65
+
66
+ it ( 'should generate stack trace from errorEvent when the one returned from stackParser does not contain lineNumber' , ( ) => {
67
+ const stackParserFake = {
68
+ parse : ( ) => {
69
+ return [
70
+ {
71
+ filename : 'malformed parsing filename'
72
+ }
73
+ ]
74
+ }
75
+ }
76
+
77
+ const testErrorEvent = new Error ( )
78
+ testErrorEvent . error = 'error event'
79
+ testErrorEvent . lineno = 4
80
+ testErrorEvent . colno = 23
81
+ testErrorEvent . filename = '(inline script)'
82
+
83
+ const [ stackTrace ] = createStackTraces ( stackParserFake , testErrorEvent )
84
+
85
+ expect ( stackTrace . lineno ) . toBe ( testErrorEvent . lineno )
86
+ expect ( stackTrace . colno ) . toBe ( testErrorEvent . colno )
87
+ expect ( stackTrace . filename ) . toBe ( testErrorEvent . filename )
88
+ } )
89
+ } )
43
90
} )
0 commit comments