File tree Expand file tree Collapse file tree 2 files changed +58
-3
lines changed Expand file tree Collapse file tree 2 files changed +58
-3
lines changed Original file line number Diff line number Diff line change @@ -18,10 +18,15 @@ function sum(arr, key) {
1818}
1919
2020function normalizeError ( err ) {
21- if ( ! isObj ( err ) ) {
21+ if ( isObj ( err ) && 'message' in err && typeof err . message === 'string' ) {
22+ [ 'name' , 'stack' ] . forEach ( field => {
23+ if ( field in err && typeof err [ field ] !== 'string' ) {
24+ delete err [ field ] ;
25+ }
26+ } ) ;
27+ } else {
2228 err = {
23- message : err ,
24- stack : err
29+ message : String ( err )
2530 } ;
2631 }
2732
Original file line number Diff line number Diff line change @@ -87,3 +87,53 @@ test('calculate remaining test count', t => {
8787 t . end ( ) ;
8888} ) ;
8989
90+ test ( 'handle non-object rejections' , t => {
91+ const runStatus = new RunStatus ( ) ;
92+
93+ runStatus . on ( 'error' , err => {
94+ t . deepEqual ( err , {
95+ file : 'foo.js' ,
96+ message : '42' ,
97+ type : 'rejection'
98+ } ) ;
99+ t . end ( ) ;
100+ } ) ;
101+
102+ runStatus . handleRejections ( { file : 'foo.js' , rejections : [ 42 ] } ) ;
103+ } ) ;
104+
105+ test ( 'handle non-object exceptions' , t => {
106+ const runStatus = new RunStatus ( ) ;
107+
108+ runStatus . on ( 'error' , err => {
109+ t . deepEqual ( err , {
110+ file : 'bar.js' ,
111+ message : '/ab/g' ,
112+ type : 'exception'
113+ } ) ;
114+ t . end ( ) ;
115+ } ) ;
116+
117+ runStatus . handleExceptions ( { file : 'bar.js' , exception : / a b / g} ) ;
118+ } ) ;
119+
120+ test ( 'remove non-string error properties from error-like objects' , t => {
121+ const runStatus = new RunStatus ( ) ;
122+
123+ runStatus . on ( 'error' , err => {
124+ t . deepEqual ( err , {
125+ file : 'bar.js' ,
126+ message : 'err msg' ,
127+ type : 'rejection'
128+ } ) ;
129+ t . end ( ) ;
130+ } ) ;
131+
132+ const err = {
133+ message : 'err msg' ,
134+ stack : { } ,
135+ name : [ 'baz' ]
136+ } ;
137+
138+ runStatus . handleRejections ( { file : 'bar.js' , rejections : [ err ] } ) ;
139+ } ) ;
You can’t perform that action at this time.
0 commit comments