diff --git a/test/parallel/test-fs-make-callback.js b/test/parallel/test-fs-make-callback.js index aee980f877..8a19e1cc96 100644 --- a/test/parallel/test-fs-make-callback.js +++ b/test/parallel/test-fs-make-callback.js @@ -3,37 +3,29 @@ 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'); +const warn = 'Calling an asynchronous function without callback is deprecated.'; + +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(common.noop)); - -process.once('warning', common.mustCall((warning) => { - assert.strictEqual( - warning.message, - 'Calling an asynchronous function without callback is deprecated.' - ); - - invalidArgumentsTests(); -})); +common.expectWarning('DeprecationWarning', warn); // Passing undefined/nothing calls rethrow() internally, which emits a warning -assert.doesNotThrow(test()); +assert.doesNotThrow(testMakeCallback()); -function invalidArgumentsTests() { - assert.throws(test(null), cbTypeError); - assert.throws(test(true), cbTypeError); - assert.throws(test(false), cbTypeError); - assert.throws(test(1), cbTypeError); - assert.throws(test(0), cbTypeError); - assert.throws(test('foo'), cbTypeError); - assert.throws(test(/foo/), cbTypeError); - assert.throws(test([]), cbTypeError); - assert.throws(test({}), cbTypeError); +function invalidCallbackThrowsTests() { + callbackThrowValues.forEach((value) => { + assert.throws(testMakeCallback(value), cbTypeError); + }); } + +invalidCallbackThrowsTests(); diff --git a/test/parallel/test-fs-makeStatsCallback.js b/test/parallel/test-fs-makeStatsCallback.js new file mode 100644 index 0000000000..84a46bb72e --- /dev/null +++ b/test/parallel/test-fs-makeStatsCallback.js @@ -0,0 +1,30 @@ +'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/, [], {}]; +const warn = 'Calling an asynchronous function without callback is deprecated.'; + +function testMakeStatsCallback(cb) { + return function() { + // fs.stat() calls makeStatsCallback() on its second argument + fs.stat(__filename, cb); + }; +} + +common.expectWarning('DeprecationWarning', warn); + +// Verify the case where a callback function is provided +assert.doesNotThrow(testMakeStatsCallback(common.noop)); + +// Passing undefined/nothing calls rethrow() internally, which emits a warning +assert.doesNotThrow(testMakeStatsCallback()); + +function invalidCallbackThrowsTests() { + callbackThrowValues.forEach((value) => { + assert.throws(testMakeStatsCallback(value), cbTypeError); + }); +} + +invalidCallbackThrowsTests();