File tree 2 files changed +35
-7
lines changed
2 files changed +35
-7
lines changed Original file line number Diff line number Diff line change @@ -5,19 +5,24 @@ var spawn = childProcess.spawn;
5
5
var exec = childProcess . exec ;
6
6
7
7
module . exports = function ( pid , signal , callback ) {
8
- if ( typeof pid !== "number" ) {
9
- throw new Error ( "pid must be a number" ) ;
8
+ if ( typeof signal === 'function' && callback === undefined ) {
9
+ callback = signal ;
10
+ signal = undefined ;
11
+ }
12
+
13
+ pid = parseInt ( pid ) ;
14
+ if ( Number . isNaN ( pid ) ) {
15
+ if ( callback ) {
16
+ return callback ( new Error ( "pid must be a number" ) ) ;
17
+ } else {
18
+ throw new Error ( "pid must be a number" ) ;
19
+ }
10
20
}
11
21
12
22
var tree = { } ;
13
23
var pidsToProcess = { } ;
14
24
tree [ pid ] = [ ] ;
15
25
pidsToProcess [ pid ] = 1 ;
16
-
17
- if ( typeof signal === 'function' && callback === undefined ) {
18
- callback = signal ;
19
- signal = undefined ;
20
- }
21
26
22
27
switch ( process . platform ) {
23
28
case 'win32' :
Original file line number Diff line number Diff line change @@ -31,4 +31,27 @@ describe('kill()', function(){
31
31
return done ( )
32
32
} )
33
33
} )
34
+
35
+ it ( 'should reject invalid pid' , function ( done ) {
36
+ var p = fork ( './test/spin' )
37
+ assert . ok ( p . pid )
38
+
39
+ kill ( 'rm -rf /dev/null' , function ( err ) {
40
+ assert . ok ( typeof err === 'object' )
41
+ return done ( )
42
+ } )
43
+ } )
44
+
45
+ it ( 'should reject invalid pids even if no callback' , function ( done ) {
46
+ var p = fork ( './test/spin' )
47
+ assert . ok ( p . pid )
48
+
49
+ try {
50
+ kill ( 'rm -rf /dev/null' )
51
+ assert . fail ( 'should have thrown' )
52
+ } catch ( err ) {
53
+ assert . ok ( typeof err === 'object' )
54
+ return done ( ) ;
55
+ }
56
+ } )
34
57
} )
You can’t perform that action at this time.
0 commit comments