@@ -4,7 +4,9 @@ const common = require('../common');
44
55const assert = require ( 'assert' ) ;
66const { callbackify } = require ( 'util' ) ;
7-
7+ const { join } = require ( 'path' ) ;
8+ const { execFile } = require ( 'child_process' ) ;
9+ const fixtureDir = join ( common . fixturesDir , 'uncaught-exceptions' ) ;
810
911{
1012 const sentinel = 'hello world' ;
@@ -14,7 +16,7 @@ const { callbackify } = require('util');
1416 const cbFn = callbackify ( fn ) ;
1517
1618 cbFn ( common . mustCall ( ( err , ret ) => {
17- if ( err ) assert . ifError ( err ) ;
19+ assert . ifError ( err ) ;
1820 assert . strictEqual ( ret , sentinel ) ;
1921 } ) ) ;
2022}
@@ -27,23 +29,48 @@ const { callbackify } = require('util');
2729 const cbFn = callbackify ( fn2 ) ;
2830
2931 cbFn ( common . mustCall ( ( err , ret ) => {
30- if ( err ) assert . ifError ( err ) ;
32+ assert . ifError ( err ) ;
3133 assert . strictEqual ( ret , sentinel ) ;
3234 } ) ) ;
3335}
3436
3537{
36- const sentinel = new Error ( 'hello world 3' ) ;
37- process . once ( 'uncaughtException' , common . mustCall ( ( err ) => {
38- assert . strictEqual ( err , sentinel ) ;
39- } ) ) ;
4038 async function fn3 ( ) {
41- return await Promise . reject ( sentinel ) ;
39+ return await Promise . reject ( null ) ;
4240 }
4341 const cbFn = callbackify ( fn3 ) ;
4442
4543 cbFn ( common . mustCall ( ( err , ret ) => {
46- if ( err ) assert . ifError ( err ) ;
47- common . mustNotCall ( 'should not reach here' ) ( ) ;
44+ assert . strictEqual ( Object . getPrototypeOf ( err ) . name , 'Error' ) ;
45+ assert . strictEqual ( err . message , 'null' ) ;
4846 } ) ) ;
4947}
48+
49+ {
50+ const fixture = join ( fixtureDir , 'callbackify1.js' ) ;
51+ execFile (
52+ process . argv [ 0 ] ,
53+ [ fixture ] ,
54+ common . mustCall ( ( err , stdout , stderr ) => {
55+ assert . strictEqual ( err . code , 1 ) ;
56+ assert . strictEqual ( Object . getPrototypeOf ( err ) . name , 'Error' ) ;
57+ assert . strictEqual ( stdout , '' ) ;
58+ const errLines = stderr . trim ( ) . split ( / [ \r \n ] + / g) ;
59+ const errLine = errLines . find ( ( l ) => / ^ E r r o r / . exec ( l ) ) ;
60+ assert . strictEqual ( errLine , `Error: ${ fixture } ` ) ;
61+ } )
62+ ) ;
63+ }
64+
65+ {
66+ const fixture = join ( fixtureDir , 'callbackify2.js' ) ;
67+ execFile (
68+ process . argv [ 0 ] ,
69+ [ fixture ] ,
70+ common . mustCall ( ( err , stdout , stderr ) => {
71+ assert . ifError ( err ) ;
72+ assert . strictEqual ( stdout . trim ( ) , fixture ) ;
73+ assert . strictEqual ( stderr , '' ) ;
74+ } )
75+ ) ;
76+ }
0 commit comments