mirror of https://github.com/lukechilds/node.git
Browse Source
makeCallback and makeStatsCallback are both tested intedependently. PR-URL: https://github.com/nodejs/node/pull/12140 Backport-PR-URL: https://github.com/nodejs/node/pull/13785 Fixes: https://github.com/nodejs/node/issues/12136 Reviewed-By: Luigi Pinca <luigipinca@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com> Reviewed-By: Colin Ihrig <cjihrig@gmail.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>v6.x
committed by
Myles Borins
2 changed files with 45 additions and 18 deletions
@ -1,28 +1,28 @@ |
|||
'use strict'; |
|||
require('../common'); |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('fs'); |
|||
const cbTypeError = /^TypeError: "callback" argument must be a function$/; |
|||
const callbackThrowValues = [null, true, false, 0, 1, 'foo', /foo/, [], {}]; |
|||
|
|||
function test(cb) { |
|||
const { sep } = require('path'); |
|||
|
|||
common.refreshTmpDir(); |
|||
|
|||
function testMakeCallback(cb) { |
|||
return function() { |
|||
// fs.stat() calls makeCallback() on its second argument
|
|||
fs.stat(__filename, cb); |
|||
// fs.mkdtemp() calls makeCallback() on its third argument
|
|||
fs.mkdtemp(`${common.tmpDir}${sep}`, {}, cb); |
|||
}; |
|||
} |
|||
|
|||
// Verify the case where a callback function is provided
|
|||
assert.doesNotThrow(test(function() {})); |
|||
// Passing undefined/nothing calls rethrow() internally
|
|||
assert.doesNotThrow(testMakeCallback()); |
|||
|
|||
// Passing undefined calls rethrow() internally, which is fine
|
|||
assert.doesNotThrow(test(undefined)); |
|||
function invalidCallbackThrowsTests() { |
|||
callbackThrowValues.forEach((value) => { |
|||
assert.throws(testMakeCallback(value), cbTypeError); |
|||
}); |
|||
} |
|||
|
|||
// Anything else should throw
|
|||
assert.throws(test(null)); |
|||
assert.throws(test(true)); |
|||
assert.throws(test(false)); |
|||
assert.throws(test(1)); |
|||
assert.throws(test(0)); |
|||
assert.throws(test('foo')); |
|||
assert.throws(test(/foo/)); |
|||
assert.throws(test([])); |
|||
assert.throws(test({})); |
|||
invalidCallbackThrowsTests(); |
|||
|
@ -0,0 +1,27 @@ |
|||
'use strict'; |
|||
const common = require('../common'); |
|||
const assert = require('assert'); |
|||
const fs = require('fs'); |
|||
const cbTypeError = /^TypeError: "callback" argument must be a function$/; |
|||
const callbackThrowValues = [null, true, false, 0, 1, 'foo', /foo/, [], {}]; |
|||
|
|||
function testMakeStatsCallback(cb) { |
|||
return function() { |
|||
// fs.stat() calls makeStatsCallback() on its second argument
|
|||
fs.stat(__filename, cb); |
|||
}; |
|||
} |
|||
|
|||
// Verify the case where a callback function is provided
|
|||
assert.doesNotThrow(testMakeStatsCallback(common.noop)); |
|||
|
|||
// Passing undefined/nothing calls rethrow() internally
|
|||
assert.doesNotThrow(testMakeStatsCallback()); |
|||
|
|||
function invalidCallbackThrowsTests() { |
|||
callbackThrowValues.forEach((value) => { |
|||
assert.throws(testMakeStatsCallback(value), cbTypeError); |
|||
}); |
|||
} |
|||
|
|||
invalidCallbackThrowsTests(); |
Loading…
Reference in new issue