• 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.mustCall(function(err, f) {
25  assert.ifError(err);
26  assert.deepStrictEqual(files, f.sort());
27}));
28
29// readdir() on file should throw ENOTDIR
30// https://github.com/joyent/node/issues/1869
31assert.throws(function() {
32  fs.readdirSync(__filename);
33}, /Error: ENOTDIR: not a directory/);
34
35fs.readdir(__filename, common.mustCall(function(e) {
36  assert.strictEqual(e.code, 'ENOTDIR');
37}));
38
39[false, 1, [], {}, null, undefined].forEach((i) => {
40  assert.throws(
41    () => fs.readdir(i, common.mustNotCall()),
42    {
43      code: 'ERR_INVALID_ARG_TYPE',
44      name: 'TypeError'
45    }
46  );
47  assert.throws(
48    () => fs.readdirSync(i),
49    {
50      code: 'ERR_INVALID_ARG_TYPE',
51      name: 'TypeError'
52    }
53  );
54});
55