1'use strict'; 2 3const common = require('../common'); 4const assert = require('assert'); 5const fs = require('fs'); 6 7const tmpdir = require('../common/tmpdir'); 8 9const readdirDir = tmpdir.path; 10const files = ['empty', 'files', 'for', 'just', 'testing']; 11 12// Make sure tmp directory is clean 13tmpdir.refresh(); 14 15// Create the necessary files 16files.forEach(function(currentFile) { 17 fs.closeSync(fs.openSync(`${readdirDir}/${currentFile}`, 'w')); 18}); 19 20// Check the readdir Sync version 21assert.deepStrictEqual(files, fs.readdirSync(readdirDir).sort()); 22 23// Check the readdir async version 24fs.readdir(readdirDir, common.mustSucceed((f) => { 25 assert.deepStrictEqual(files, f.sort()); 26})); 27 28// readdir() on file should throw ENOTDIR 29// https://github.com/joyent/node/issues/1869 30assert.throws(function() { 31 fs.readdirSync(__filename); 32}, /Error: ENOTDIR: not a directory/); 33 34fs.readdir(__filename, common.mustCall(function(e) { 35 assert.strictEqual(e.code, 'ENOTDIR'); 36})); 37 38[false, 1, [], {}, null, undefined].forEach((i) => { 39 assert.throws( 40 () => fs.readdir(i, common.mustNotCall()), 41 { 42 code: 'ERR_INVALID_ARG_TYPE', 43 name: 'TypeError' 44 } 45 ); 46 assert.throws( 47 () => fs.readdirSync(i), 48 { 49 code: 'ERR_INVALID_ARG_TYPE', 50 name: 'TypeError' 51 } 52 ); 53}); 54