• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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