-
Notifications
You must be signed in to change notification settings - Fork 29.6k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
PR-URL: #14616 Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Refael Ackermann <refack@gmail.com>
- Loading branch information
1 parent
c88f99f
commit fc49cf4
Showing
8 changed files
with
69 additions
and
133 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,27 +1,14 @@ | ||
'use strict'; | ||
require('../common'); | ||
const assert = require('assert'); | ||
const common = require('../common'); | ||
|
||
let called = 0; | ||
let closed = 0; | ||
|
||
const timeout = setTimeout(function() { | ||
called++; | ||
}, 10); | ||
const timeout = setTimeout(common.mustCall(), 10); | ||
timeout.unref(); | ||
|
||
// Wrap `close` method to check if the handle was closed | ||
const close = timeout._handle.close; | ||
timeout._handle.close = function() { | ||
closed++; | ||
timeout._handle.close = common.mustCall(function() { | ||
return close.apply(this, arguments); | ||
}; | ||
}); | ||
|
||
// Just to keep process alive and let previous timer's handle die | ||
setTimeout(function() { | ||
}, 50); | ||
|
||
process.on('exit', function() { | ||
assert.strictEqual(called, 1); | ||
assert.strictEqual(closed, 1); | ||
}); | ||
setTimeout(() => {}, 50); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,58 @@ | ||
'use strict'; | ||
|
||
require('../common'); | ||
const common = require('../common'); | ||
const assert = require('assert'); | ||
|
||
let interval_fired = false; | ||
let timeout_fired = false; | ||
let unref_interval = false; | ||
let unref_timer = false; | ||
let unref_callbacks = 0; | ||
let checks = 0; | ||
|
||
const LONG_TIME = 10 * 1000; | ||
const SHORT_TIME = 100; | ||
|
||
assert.doesNotThrow(function() { | ||
assert.doesNotThrow(() => { | ||
setTimeout(() => {}, 10).unref().ref().unref(); | ||
}, 'ref and unref are chainable'); | ||
|
||
assert.doesNotThrow(function() { | ||
assert.doesNotThrow(() => { | ||
setInterval(() => {}, 10).unref().ref().unref(); | ||
}, 'ref and unref are chainable'); | ||
|
||
setInterval(function() { | ||
interval_fired = true; | ||
}, LONG_TIME).unref(); | ||
setInterval(common.mustNotCall('Interval should not fire'), LONG_TIME).unref(); | ||
setTimeout(common.mustNotCall('Timer should not fire'), LONG_TIME).unref(); | ||
|
||
setTimeout(function() { | ||
timeout_fired = true; | ||
}, LONG_TIME).unref(); | ||
|
||
const interval = setInterval(function() { | ||
const interval = setInterval(common.mustCall(() => { | ||
unref_interval = true; | ||
clearInterval(interval); | ||
}, SHORT_TIME); | ||
}), SHORT_TIME); | ||
interval.unref(); | ||
|
||
setTimeout(function() { | ||
setTimeout(common.mustCall(() => { | ||
unref_timer = true; | ||
}, SHORT_TIME).unref(); | ||
}), SHORT_TIME).unref(); | ||
|
||
const check_unref = setInterval(function() { | ||
const check_unref = setInterval(() => { | ||
if (checks > 5 || (unref_interval && unref_timer)) | ||
clearInterval(check_unref); | ||
checks += 1; | ||
}, 100); | ||
|
||
setTimeout(function() { | ||
unref_callbacks++; | ||
this.unref(); | ||
}, SHORT_TIME); | ||
{ | ||
const timeout = | ||
setTimeout(common.mustCall(() => { | ||
timeout.unref(); | ||
}), SHORT_TIME); | ||
} | ||
|
||
// Should not timeout the test | ||
setInterval(function() { | ||
this.unref(); | ||
}, SHORT_TIME); | ||
{ | ||
// Should not timeout the test | ||
const timeout = | ||
setInterval(() => timeout.unref(), SHORT_TIME); | ||
} | ||
|
||
// Should not assert on args.Holder()->InternalFieldCount() > 0. See #4261. | ||
{ | ||
const t = setInterval(() => {}, 1); | ||
process.nextTick(t.unref.bind({})); | ||
process.nextTick(t.unref.bind(t)); | ||
} | ||
|
||
process.on('exit', function() { | ||
assert.strictEqual(interval_fired, false, | ||
'Interval should not fire'); | ||
assert.strictEqual(timeout_fired, false, | ||
'Timeout should not fire'); | ||
assert.strictEqual(unref_timer, true, | ||
'An unrefd timeout should still fire'); | ||
assert.strictEqual(unref_interval, true, | ||
'An unrefd interval should still fire'); | ||
assert.strictEqual(unref_callbacks, 1, | ||
'Callback should only run once'); | ||
}); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,20 +1,7 @@ | ||
'use strict'; | ||
|
||
require('../common'); | ||
const assert = require('assert'); | ||
const common = require('../common'); | ||
|
||
let once = 0; | ||
|
||
process.on('beforeExit', () => { | ||
if (once > 1) | ||
throw new RangeError('beforeExit should only have been called once!'); | ||
|
||
setTimeout(() => {}, 1).unref(); | ||
once++; | ||
}); | ||
|
||
process.on('exit', (code) => { | ||
if (code !== 0) return; | ||
|
||
assert.strictEqual(once, 1); | ||
}); | ||
process.on('beforeExit', common.mustCall(() => { | ||
setTimeout(common.mustNotCall(), 1).unref(); | ||
})); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters