diff --git a/test/parallel/test-fs-promises.js b/test/parallel/test-fs-promises.js index 714f1db05d5494..797f8e4ea269f8 100644 --- a/test/parallel/test-fs-promises.js +++ b/test/parallel/test-fs-promises.js @@ -64,6 +64,13 @@ function verifyStatObject(stat) { assert.strictEqual(typeof stat.mode, 'number'); } +async function getHandle(dest) { + await copyFile(fixtures.path('baz.js'), dest); + await access(dest, 'r'); + + return open(dest, 'r+'); +} + { async function doTest() { tmpdir.refresh(); @@ -93,6 +100,19 @@ function verifyStatObject(stat) { await handle.datasync(); await handle.sync(); + // test fs.read promises when length to read is zero bytes + { + const dest = path.resolve(tmpDir, 'test1.js'); + const handle = await getHandle(dest); + const buf = Buffer.from('DAWGS WIN'); + const bufLen = buf.length; + await handle.write(buf); + const ret = await handle.read(Buffer.alloc(bufLen), 0, 0, 0); + assert.strictEqual(ret.bytesRead, 0); + + await unlink(dest); + } + const buf = Buffer.from('hello fsPromises'); const bufLen = buf.length; await handle.write(buf); @@ -203,13 +223,22 @@ function verifyStatObject(stat) { await unlink(newLink2); - const newdir = path.resolve(tmpDir, 'dir'); - await mkdir(newdir); - stats = await stat(newdir); - assert(stats.isDirectory()); - const list = await readdir(tmpDir); - assert.deepStrictEqual(list, ['baz2.js', 'dir']); - await rmdir(newdir); + // testing readdir lists both files and directories + { + const newDir = path.resolve(tmpDir, 'dir'); + const newFile = path.resolve(tmpDir, 'foo.js'); + + await mkdir(newDir); + await writeFile(newFile, 'DAWGS WIN!', 'utf8'); + + stats = await stat(newDir); + assert(stats.isDirectory()); + const list = await readdir(tmpDir); + assert.notStrictEqual(list.indexOf('dir'), -1); + assert.notStrictEqual(list.indexOf('foo.js'), -1); + await rmdir(newDir); + await unlink(newFile); + } // mkdir when options is number. {