From a8c2b82fbd9be05d99d18af61d23579b49b8a041 Mon Sep 17 00:00:00 2001 From: tcme Date: Thu, 1 Jun 2017 00:26:39 +0200 Subject: [PATCH] Tests (#29) * changes var to const * changes tape to test * more destructs * cleanup * changes ok to true * starts adding fd test (#17) * adds missing fd tests --- package.json | 1 - test/access.test.js | 72 +++++++++++++++++++++--------------------- test/append.test.js | 45 +++++++++++++++++++------- test/chmod.test.js | 34 ++++++++++---------- test/chown.test.js | 22 ++++++------- test/dir.test.js | 42 ++++++++++++------------ test/links.test.js | 38 +++++++++++----------- test/open.test.js | 54 +++++++++++++++---------------- test/read.test.js | 64 +++++++++++++++++++++++++------------ test/readfile.test.js | 46 +++++++++++++++++++-------- test/rename.test.js | 22 ++++++------- test/stats.test.js | 40 +++++++++++------------ test/symlinks.test.js | 46 +++++++++++++-------------- test/sync.test.js | 16 +++++----- test/test-functions.js | 14 -------- test/test.js | 6 ++-- test/truncate.test.js | 50 +++++++++++++++++++++-------- test/unlink.test.js | 20 ++++++------ test/utimes.test.js | 46 +++++++++++++-------------- test/write.test.js | 42 ++++++++++++------------ test/writefile.test.js | 58 +++++++++++++++++++++++----------- 21 files changed, 435 insertions(+), 343 deletions(-) delete mode 100644 test/test-functions.js diff --git a/package.json b/package.json index f144916..623e644 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,6 @@ "main": "lib/main.js", "scripts": { "test": "tape test/test.js | tap-difflet", - "test-length": "tape test/test-functions.js | tap-spec", "coverage": "nyc --reporter=lcov --reporter=text tape test/test.js", "codecov": "npm run coverage && codecov", "prettier": "prettier-eslint --write \"{lib,test}/*.js\"", diff --git a/test/access.test.js b/test/access.test.js index 6309ef2..ca7117d 100644 --- a/test/access.test.js +++ b/test/access.test.js @@ -1,19 +1,19 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var fs = require('fs'); +const test = require('tape'); +const { resolve } = require('path'); +const fs = require('fs'); -var dir = resolve(__dirname, 'data/access'); -var fileR = resolve(dir, 'file-r.txt'); -var fileRW = resolve(dir, 'file-rw.txt'); -var fileRWX = resolve(dir, 'file-rwx.txt'); -var fileRX = resolve(dir, 'file-rx.txt'); -var fileW = resolve(dir, 'file-w.txt'); -var fileWX = resolve(dir, 'file-wx.txt'); -var fileX = resolve(dir, 'file-x.txt'); +const dir = resolve(__dirname, 'data/access'); +const fileR = resolve(dir, 'file-r.txt'); +const fileRW = resolve(dir, 'file-rw.txt'); +const fileRWX = resolve(dir, 'file-rwx.txt'); +const fileRX = resolve(dir, 'file-rx.txt'); +const fileW = resolve(dir, 'file-w.txt'); +const fileWX = resolve(dir, 'file-wx.txt'); +const fileX = resolve(dir, 'file-x.txt'); -tape('setup access', t => { +test('setup access', t => { file .mkdir(dir) .then(() => { @@ -39,8 +39,8 @@ tape('setup access', t => { }); }); -tape('access without mode', t => { - var files = [fileR, fileRW, fileRWX, fileRX, fileW, fileWX, fileX]; +test('access without mode', t => { + const files = [fileR, fileRW, fileRWX, fileRX, fileW, fileWX, fileX]; Promise.all( files.map(path => { @@ -55,7 +55,7 @@ tape('access without mode', t => { t.pass('access correct'); }) .then(() => { - var nofile = resolve(dir, 'file-does-not-exist.txt'); + const nofile = resolve(dir, 'file-does-not-exist.txt'); files.push(nofile); return Promise.all( files.map(path => { @@ -67,8 +67,8 @@ tape('access without mode', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); + t.true(error, error); + t.true(error instanceof Error, 'is Error'); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.path, nofile); }); @@ -78,7 +78,7 @@ tape('access without mode', t => { }); }); -tape('access with mode', t => { +test('access with mode', t => { Promise.all([ file.access(fileR, 'r'), file.access(fileRW, 'rw'), @@ -126,7 +126,7 @@ tape('access with mode', t => { }); }); -tape('access error with mode', t => { +test('access error with mode', t => { Promise.all([ file.access(fileR, 'r'), file.access(fileRW, fs.R_OK | fs.W_OK), @@ -141,18 +141,18 @@ tape('access error with mode', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); - t.ok( + t.true(error, error); + t.true(error instanceof Error, 'is Error'); + t.true( /^(EACCES|EPERM)$/.test(error.code), 'error.code is EACCES (or EPERM on Windows)' ); - t.ok([fileWX, fileX].indexOf(error.path) > -1, 'is fileWX or fileX'); + t.true([fileWX, fileX].indexOf(error.path) > -1, 'is fileWX or fileX'); t.end(); }); }); -tape('access fail', t => { +test('access fail', t => { function fail() { t.fail('should not pass'); t.end(); @@ -162,9 +162,9 @@ tape('access fail', t => { .access(fileR, 'rwx') .then(fail) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); - t.ok( + t.true(error, error); + t.true(error instanceof Error, 'is Error'); + t.true( /^(EACCES|EPERM)$/.test(error.code), 'error.code is EACCES (or EPERM on Windows)' ); @@ -173,8 +173,8 @@ tape('access fail', t => { }) .then(() => { return file.access(fileR, 'w').then(fail).catch(error => { - t.ok(error, error); - t.ok( + t.true(error, error); + t.true( /^(EACCES|EPERM)$/.test(error.code), 'error.code is EACCES (or EPERM on Windows)' ); @@ -191,9 +191,9 @@ tape('access fail', t => { }) .then(fail) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); - t.ok( + t.true(error, error); + t.true(error instanceof Error, 'is Error'); + t.true( /^(EACCES|EPERM)$/.test(error.code), 'error.code is EACCES (or EPERM on Windows)' ); @@ -210,9 +210,9 @@ tape('access fail', t => { }) .then(fail) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); - t.ok( + t.true(error, error); + t.true(error instanceof Error, 'is Error'); + t.true( /^(EACCES|EPERM)$/.test(error.code), 'error.code is EACCES (or EPERM on Windows)' ); diff --git a/test/append.test.js b/test/append.test.js index 6f7eecb..fd3efad 100644 --- a/test/append.test.js +++ b/test/append.test.js @@ -1,18 +1,18 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var readFileSync = require('fs').readFileSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { readFileSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath = resolve(__dirname, './data/append.txt'); +const filepath = resolve(__dirname, './data/append.txt'); -tape('setup append', t => { +test('setup append', t => { writeFileSync(filepath, 'abc'); t.end(); }); -tape('append', t => { +test('append', t => { file .appendFile(filepath, 'def') .then(() => { @@ -26,7 +26,7 @@ tape('append', t => { }); }); -tape('append a buffer', t => { +test('append a buffer', t => { file .appendFile(filepath, new Buffer('ghi')) .then(() => { @@ -40,7 +40,28 @@ tape('append a buffer', t => { }); }); -tape('append error', t => { +test('append to fd', t => { + file + .open(filepath, { + flags: 'a+' + }) + .then(fd => { + return file.appendFile(fd, 'jkl').then(() => fd); + }) + .then(fd => file.appendFile(fd, 'mno')) + // .then(fd => file.close(fd)) + .then(() => { + t.pass('appended data to fd'); + t.equal(readFileSync(filepath, 'utf8'), 'abcdefghijklmno'); + t.end(); + }) + .catch(error => { + t.error(error); + t.end(); + }); +}); + +test('append error', t => { file .appendFile(filepath, '', { flag: 'r' @@ -50,8 +71,8 @@ tape('append error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok( + t.true(error, error); + t.true( /^(EBADF|EPERM)$/.test(error.code), 'error.code is EBADF (or EPERM on Windows)' ); diff --git a/test/chmod.test.js b/test/chmod.test.js index 79291ed..504b06b 100644 --- a/test/chmod.test.js +++ b/test/chmod.test.js @@ -1,11 +1,11 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var statSync = require('fs').statSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { statSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath = resolve(__dirname, './data/chmod.txt'); +const filepath = resolve(__dirname, './data/chmod.txt'); function isPermission(mode, permission) { mode = '0' + (mode & parseInt('0777', 8)).toString(8); @@ -13,27 +13,27 @@ function isPermission(mode, permission) { } if (process.platform != 'win32') { - tape('setup chmod', t => { + test('setup chmod', t => { writeFileSync(filepath, 'chmod test\n'); t.end(); }); - tape('chmod', t => { + test('chmod', t => { file .chmod(filepath, { mode: '0700' // nobody else }) .then(() => { - var stats = statSync(filepath); - t.ok(isPermission(stats.mode, '0700'), 'permission set to 0700'); + const stats = statSync(filepath); + t.true(isPermission(stats.mode, '0700'), 'permission set to 0700'); return file.chmod(filepath, { mode: parseInt('0755', 8) }); }) .then(() => { - var stats = statSync(filepath); - t.ok(isPermission(stats.mode, '0755'), 'permission set to 0755'); + const stats = statSync(filepath); + t.true(isPermission(stats.mode, '0755'), 'permission set to 0755'); t.end(); }) .catch(error => { @@ -42,7 +42,7 @@ if (process.platform != 'win32') { }); }); - tape('chmod error', t => { + test('chmod error', t => { file .chmod(-1, { mode: '0777' @@ -52,14 +52,14 @@ if (process.platform != 'win32') { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'fchmod', 'error.syscal is fchmod'); t.end(); }); }); - tape('chmod error 2', t => { + test('chmod error 2', t => { file .chmod(filepath) .then(() => { @@ -67,8 +67,8 @@ if (process.platform != 'win32') { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof TypeError, 'is TypeError'); + t.true(error, error); + t.true(error instanceof TypeError, 'is TypeError'); t.end(); }); }); diff --git a/test/chown.test.js b/test/chown.test.js index ed63d58..0528366 100644 --- a/test/chown.test.js +++ b/test/chown.test.js @@ -1,23 +1,23 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var statSync = require('fs').statSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { statSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath = resolve(__dirname, './data/chown.txt'); +const filepath = resolve(__dirname, './data/chown.txt'); if (process.platform != 'win32') { - tape('setup chown', t => { + test('setup chown', t => { writeFileSync(filepath, 'chown test\n'); t.end(); }); - tape('chown', t => { + test('chown', t => { file .chown(filepath) .then(() => { - var stats = statSync(filepath); + const stats = statSync(filepath); t.equal(stats.uid, process.getuid(), 'uid is process.getuid'); t.equal(stats.gid, process.getgid(), 'gid is process.getgid'); @@ -29,7 +29,7 @@ if (process.platform != 'win32') { }); }); - tape('chown error', t => { + test('chown error', t => { file .chown(-1) .then(() => { @@ -37,7 +37,7 @@ if (process.platform != 'win32') { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'fchown', 'error.syscal is fchown'); t.end(); diff --git a/test/dir.test.js b/test/dir.test.js index 0acbede..2392202 100644 --- a/test/dir.test.js +++ b/test/dir.test.js @@ -1,18 +1,18 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var dirpath1 = resolve(__dirname, './data/dir/dir/sub/subsub'); -var filepath = resolve(__dirname, './data/dir.txt'); +const dirpath1 = resolve(__dirname, './data/dir/dir/sub/subsub'); +const filepath = resolve(__dirname, './data/dir.txt'); -tape('setup dirs', t => { +test('setup dirs', t => { writeFileSync(filepath, 'chmod test\n'); t.end(); }); -tape('mkdir', t => { +test('mkdir', t => { file .mkdir(dirpath1) .then(() => { @@ -25,7 +25,7 @@ tape('mkdir', t => { }); }); -tape('mkdir on file', t => { +test('mkdir on file', t => { file .mkdir(filepath) .then(() => { @@ -33,14 +33,14 @@ tape('mkdir on file', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EEXIST', 'error.code is EEXIST'); t.equal(error.syscall, 'mkdir', 'error.syscall is mkdir'); t.end(); }); }); -tape('mkdir error', t => { +test('mkdir error', t => { file .mkdir(-1) .then(() => { @@ -48,21 +48,21 @@ tape('mkdir error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof TypeError, 'is TypeError'); + t.true(error, error); + t.true(error instanceof TypeError, 'is TypeError'); t.end(); }); }); -tape('readdir', t => { - var dir = resolve(__dirname, './data/dir'); +test('readdir', t => { + const dir = resolve(__dirname, './data/dir'); file .readdir(dir) .then(files => { - t.ok(files, 'has files'); - t.ok(Array.isArray(files), 'files is Array'); - t.ok(files.length > 1, 'has some files'); + t.true(files, 'has files'); + t.true(Array.isArray(files), 'files is Array'); + t.true(files.length > 1, 'has some files'); t.end(); }) .catch(error => { @@ -71,8 +71,8 @@ tape('readdir', t => { }); }); -tape('readdir error', t => { - var dir = resolve(__dirname, './data/dir/that/is/not/here'); +test('readdir error', t => { + const dir = resolve(__dirname, './data/dir/that/is/not/here'); file .readdir(dir) @@ -81,7 +81,7 @@ tape('readdir error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.end(); }); diff --git a/test/links.test.js b/test/links.test.js index 82869ea..6ee7aa1 100644 --- a/test/links.test.js +++ b/test/links.test.js @@ -1,19 +1,19 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/link.txt'); -var filepath2 = resolve(__dirname, './data/link/link.txt'); -var filepath3 = resolve(__dirname, './data/link/link2.txt'); +const filepath1 = resolve(__dirname, './data/link.txt'); +const filepath2 = resolve(__dirname, './data/link/link.txt'); +const filepath3 = resolve(__dirname, './data/link/link2.txt'); -tape('setup link', t => { +test('setup link', t => { writeFileSync(filepath1, 'link test\n'); t.end(); }); -tape('link', t => { +test('link', t => { file .link(filepath1, filepath2) .then(() => { @@ -30,7 +30,7 @@ tape('link', t => { }); }); -tape('link link', t => { +test('link link', t => { file .link(filepath2, filepath3) .then(() => { @@ -50,8 +50,8 @@ tape('link link', t => { }); }); -tape('link without src', t => { - var src = resolve(__dirname, './data/not/here.txt'); +test('link without src', t => { + const src = resolve(__dirname, './data/not/here.txt'); file .link(src, filepath2) .then(() => { @@ -59,16 +59,16 @@ tape('link without src', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); + t.true(error, error); + t.true(error instanceof Error, 'is Error'); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'access', 'error.syscal is access'); t.end(); }); }); -tape('link dest error', t => { - var dest = resolve(__dirname, './data/link/link.txt/sub/not/work.txt'); +test('link dest error', t => { + const dest = resolve(__dirname, './data/link/link.txt/sub/not/work.txt'); file .link(filepath1, dest) .then(() => { @@ -76,9 +76,9 @@ tape('link dest error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); - t.ok( + t.true(error, error); + t.true(error instanceof Error, 'is Error'); + t.true( /^(ENOTDIR|EEXIST)$/.test(error.code), 'error.code is ENOENT (or EEXIST on Windows)' ); diff --git a/test/open.test.js b/test/open.test.js index 7adcb54..61ff673 100644 --- a/test/open.test.js +++ b/test/open.test.js @@ -1,21 +1,21 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; +const test = require('tape'); +const { resolve } = require('path'); -var filepath1 = resolve(__dirname, './data/dir/open/open.txt'); -var filepath2 = resolve(__dirname, './data/open.txt'); +const filepath1 = resolve(__dirname, './data/dir/open/open.txt'); +const filepath2 = resolve(__dirname, './data/open.txt'); // 'w' - Open file for writing. // The file is created (if it does not exist) // or truncated (if it exists). -tape('open w file and dir created', t => { +test('open w file and dir created', t => { file .open(filepath1, { flags: 'w' }) .then(fd => { - t.ok(fd, 'has file descriptor'); + t.true(fd, 'has file descriptor'); t.equal(typeof fd, 'number', 'fd is Number'); return file.close(fd); }) @@ -30,13 +30,13 @@ tape('open w file and dir created', t => { // 'wx' - Open file for writing. // Fails if path exists. -tape('open wx (fails if path exists)', t => { +test('open wx (fails if path exists)', t => { file .open(filepath2, { flags: 'wx' }) .then(fd => { - t.ok(fd, 'has file descriptor'); + t.true(fd, 'has file descriptor'); t.equal(typeof fd, 'number', 'fd is Number'); return file.close(fd); }) @@ -50,22 +50,22 @@ tape('open wx (fails if path exists)', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EEXIST', 'error.code is EEXIST'); t.equal(error.syscall, 'open', 'error.syscall is open'); t.end(); }); }); -tape('open twice', t => { +test('open twice', t => { file .open(filepath2) .then(fd1 => { return file .open(filepath2) .then(fd2 => { - t.ok(fd1, 'has file descriptor 1'); - t.ok(fd2, 'has file descriptor 2'); + t.true(fd1, 'has file descriptor 1'); + t.true(fd2, 'has file descriptor 2'); t.equal(typeof fd1, 'number', 'fd1 is Number'); t.equal(typeof fd2, 'number', 'fd2 is Number'); return Promise.all([file.close(fd1), file.close(fd2)]); @@ -82,8 +82,8 @@ tape('open twice', t => { // 'r' - Open file for reading. // An exception occurs if the file does not exist. -tape('open r', t => { - var path = resolve(__dirname, './data/not/here.txt'); +test('open r', t => { + const path = resolve(__dirname, './data/not/here.txt'); file .open(path, { flags: 'r' @@ -93,7 +93,7 @@ tape('open r', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'open', 'error.syscall is open'); t.equal(error.path, path); @@ -103,8 +103,8 @@ tape('open r', t => { // 'wx+' - Open file for reading and writing. // Fails if path exists. -tape('open wx+ error', t => { - var path = resolve(__dirname, './data/not/here.txt'); +test('open wx+ error', t => { + const path = resolve(__dirname, './data/not/here.txt'); file .open(path, { flags: 'wx+' @@ -114,7 +114,7 @@ tape('open wx+ error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'open', 'error.syscall is open'); t.equal(error.path, path); @@ -122,7 +122,7 @@ tape('open wx+ error', t => { }); }); -tape('close', t => { +test('close', t => { file .close(-1) .then(() => { @@ -130,14 +130,14 @@ tape('close', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'close', 'error.syscall is close'); t.end(); }); }); -tape('close twice', t => { +test('close twice', t => { file .open(filepath2) .then(fd => { @@ -151,7 +151,7 @@ tape('close twice', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'close', 'error.syscall is close'); t.end(); @@ -160,15 +160,15 @@ tape('close twice', t => { // 'wx+' - Open file for reading and writing. // Fails if path exists. -tape('open one fd with wx+ at the time', t => { - var path = resolve(__dirname, './data/open-this-only-once.txt'); +test('open one fd with wx+ at the time', t => { + const path = resolve(__dirname, './data/open-this-only-once.txt'); file .open(path, { flags: 'wx+' }) .then(fd => { // ready to write data to the fd - t.ok(fd, 'has file descriptor'); + t.true(fd, 'has file descriptor'); t.equal(typeof fd, 'number', 'fd is Number'); // opening the same path again with wx+ errors, // since file already exists @@ -181,7 +181,7 @@ tape('open one fd with wx+ at the time', t => { }) .catch(error => { // expect an error since file path has been openend / created - t.ok(error, error); + t.true(error, error); // close the fd return file.close(fd); }) diff --git a/test/read.test.js b/test/read.test.js index af24935..3b49978 100644 --- a/test/read.test.js +++ b/test/read.test.js @@ -1,19 +1,19 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/read.txt'); -var filepath2 = resolve(__dirname, './data/read-foo-bar.txt'); +const filepath1 = resolve(__dirname, './data/read.txt'); +const filepath2 = resolve(__dirname, './data/read-foo-bar.txt'); -tape('setup read', t => { +test('setup read', t => { writeFileSync(filepath1, 'Hi!!!\n'); writeFileSync(filepath2, 'foo bar bOz\n'); t.end(); }); -tape('read', t => { +test('read', t => { file .read(filepath1, { length: 4 @@ -28,8 +28,8 @@ tape('read', t => { }); }); -tape('read to buffer', t => { - var buffer = new Buffer(3); +test('read to buffer', t => { + const buffer = new Buffer(3); file .read(filepath1, buffer, { offset: 0, @@ -45,7 +45,7 @@ tape('read to buffer', t => { }); }); -tape('read partly', t => { +test('read partly', t => { file .read(filepath2, { length: 3, @@ -62,13 +62,13 @@ tape('read partly', t => { }); }); -tape('read too much', t => { +test('read too much', t => { file .read(filepath2, { length: 128 }) .then(buffer => { - t.ok(buffer.length == 'foo bar bOz\n'.length, 'length is correct'); + t.true(buffer.length == 'foo bar bOz\n'.length, 'length is correct'); t.equal(buffer.toString(), 'foo bar bOz\n'); t.end(); }) @@ -78,7 +78,7 @@ tape('read too much', t => { }); }); -tape('read many', t => { +test('read many', t => { Promise.all( [filepath1, filepath2].map(path => { return file.read(path, { @@ -99,8 +99,8 @@ tape('read many', t => { }); }); -tape('read partly to buffer', t => { - var buffer = new Buffer(3); +test('read partly to buffer', t => { + const buffer = new Buffer(3); file .read(filepath2, buffer, { @@ -119,7 +119,7 @@ tape('read partly to buffer', t => { }); }); -tape('read path error', t => { +test('read path error', t => { file .read(filepath2) .then(() => { @@ -127,13 +127,35 @@ tape('read path error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof TypeError, 'is TypeError'); + t.true(error, error); + t.true(error instanceof TypeError, 'is TypeError'); t.end(); }); }); -tape('read fd error', t => { +test('read from fd', t => { + file + .open(filepath1, { + flags: 'r' + }) + .then(fd => { + return file + .read(fd, { + length: 3 + }) + .then(result => { + t.equal(result.toString(), 'Hi!'); + return file.close(fd); + }) + .then(t.end); + }) + .catch(error => { + t.error(error); + t.end(); + }); +}); + +test('read fd error', t => { file .read(-1, new Buffer(3), { offset: 0, @@ -144,7 +166,7 @@ tape('read fd error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'read', 'error.syscall is read'); t.end(); diff --git a/test/readfile.test.js b/test/readfile.test.js index 73b6eef..9fb4844 100644 --- a/test/readfile.test.js +++ b/test/readfile.test.js @@ -1,21 +1,21 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/readfile.txt'); +const filepath1 = resolve(__dirname, './data/readfile.txt'); -tape('setup readFile', t => { +test('setup readFile', t => { writeFileSync(filepath1, '0123456789\n'); t.end(); }); -tape('readFile', t => { +test('readFile', t => { file .readFile(filepath1) .then(buffer => { - t.ok(Buffer.isBuffer(buffer), 'is Buffer'); + t.true(Buffer.isBuffer(buffer), 'is Buffer'); t.deepEqual(buffer, new Buffer('0123456789\n')); t.pass('file read'); t.end(); @@ -26,13 +26,13 @@ tape('readFile', t => { }); }); -tape('readFile utf8', t => { +test('readFile utf8', t => { file .readFile(filepath1, { encoding: 'utf8' }) .then(data => { - t.ok(typeof data == 'string', 'is String'); + t.true(typeof data == 'string', 'is String'); t.equal(data, '0123456789\n'); t.pass('file read'); t.end(); @@ -43,8 +43,28 @@ tape('readFile utf8', t => { }); }); -tape('readFile non-existing file', t => { - var path = resolve(__dirname, './data/nothing-here.txt'); +test('readFile from fd', t => { + file + .open(filepath1, { + flags: 'r' + }) + .then(fd => { + return file + .readFile(fd) + .then(result => { + t.equal(result.toString(), '0123456789\n'); + return file.close(fd); + }) + .then(t.end); + }) + .catch(error => { + t.error(error); + t.end(); + }); +}); + +test('readFile non-existing file', t => { + const path = resolve(__dirname, './data/nothing-here.txt'); file .readFile(path) @@ -53,7 +73,7 @@ tape('readFile non-existing file', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'open', 'error.syscall is open'); t.equal(error.path, path); diff --git a/test/rename.test.js b/test/rename.test.js index 910aead..1655c9e 100644 --- a/test/rename.test.js +++ b/test/rename.test.js @@ -1,19 +1,19 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var readFileSync = require('fs').readFileSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { readFileSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/rename1.txt'); -var filepath2 = resolve(__dirname, './data/rename2.txt'); +const filepath1 = resolve(__dirname, './data/rename1.txt'); +const filepath2 = resolve(__dirname, './data/rename2.txt'); -tape('setup rename', t => { +test('setup rename', t => { writeFileSync(filepath1, '0123456789\n'); t.end(); }); -tape('rename', t => { +test('rename', t => { file .rename(filepath1, filepath2) .then(() => { @@ -27,7 +27,7 @@ tape('rename', t => { }); }); -tape('rename error', t => { +test('rename error', t => { file .rename('./does/not/exits.txt', './there/is/no/such/dir/file.txt') .then(() => { @@ -35,7 +35,7 @@ tape('rename error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.end(); }); diff --git a/test/stats.test.js b/test/stats.test.js index 9a46f76..2dbced5 100644 --- a/test/stats.test.js +++ b/test/stats.test.js @@ -1,21 +1,21 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/stats.txt'); -var filepath2 = resolve(__dirname, './data/stats2.txt'); -var filepath3 = resolve(__dirname, './data/stats3.txt'); +const filepath1 = resolve(__dirname, './data/stats.txt'); +const filepath2 = resolve(__dirname, './data/stats2.txt'); +const filepath3 = resolve(__dirname, './data/stats3.txt'); -tape('setup stats', t => { +test('setup stats', t => { writeFileSync(filepath1, 'Hi\n'); writeFileSync(filepath2, 'Hi\n'); writeFileSync(filepath3, 'Hi\n'); t.end(); }); -tape('stats', t => { +test('stats', t => { file .stats(filepath1) .then(stats => { @@ -29,8 +29,8 @@ tape('stats', t => { }); }); -tape('get size of many files', t => { - var getSizes = [filepath1, filepath2, filepath3].map(filepath => { +test('get size of many files', t => { + const getSizes = [filepath1, filepath2, filepath3].map(filepath => { return file.fstat(filepath).then(stat => { return stat.size; }); @@ -39,7 +39,7 @@ tape('get size of many files', t => { Promise.all(getSizes) .then(sizes => { t.equal(sizes.length, 3, 'stats.length is 3'); - t.ok( + t.true( sizes.every(size => { return size > 1; }), @@ -53,8 +53,8 @@ tape('get size of many files', t => { }); }); -tape('stats non-existing file', t => { - var path = resolve(__dirname, './data/nothing-here.txt'); +test('stats non-existing file', t => { + const path = resolve(__dirname, './data/nothing-here.txt'); file .fstat(path) @@ -63,7 +63,7 @@ tape('stats non-existing file', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'open', 'error.syscall is open'); t.equal(error.path, path); @@ -71,11 +71,11 @@ tape('stats non-existing file', t => { }); }); -tape('check if many files exist', t => { - var files = [filepath1, 'nothere.txt', 'dir']; +test('check if many files exist', t => { + const files = [filepath1, 'nothere.txt', 'dir']; function isFile(filename) { - var filepath = resolve(__dirname, 'data', filename); + const filepath = resolve(__dirname, 'data', filename); return file .fstat(filepath) .then(stat => { @@ -98,7 +98,7 @@ tape('check if many files exist', t => { }); }); -tape('stats wrong fd', t => { +test('stats wrong fd', t => { file .stats(-1) .then(() => { @@ -106,7 +106,7 @@ tape('stats wrong fd', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'fstat', 'error.syscall is fstat'); t.end(); diff --git a/test/symlinks.test.js b/test/symlinks.test.js index cda69d6..339fab7 100644 --- a/test/symlinks.test.js +++ b/test/symlinks.test.js @@ -1,26 +1,26 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var lstatSync = require('fs').lstatSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const lstatSync = require('fs').lstatSync; +const { writeFileSync } = require('fs'); -var dest1 = resolve(__dirname, './data/symlink.txt'); -var dest2 = resolve(__dirname, './data/symlink/dest.txt'); -var filepath1 = resolve(__dirname, './data/symlink/symlink.txt'); -var filepath2 = resolve(__dirname, './data/symlink/symlink2.txt'); -var dir1 = resolve(__dirname, './data/symlink/dir1'); -var dir2 = resolve(__dirname, './data/symlink/dir2'); +const dest1 = resolve(__dirname, './data/symlink.txt'); +const dest2 = resolve(__dirname, './data/symlink/dest.txt'); +const filepath1 = resolve(__dirname, './data/symlink/symlink.txt'); +const filepath2 = resolve(__dirname, './data/symlink/symlink2.txt'); +const dir1 = resolve(__dirname, './data/symlink/dir1'); +const dir2 = resolve(__dirname, './data/symlink/dir2'); // Exclude symlink tests for now // test pass with administrators permisison if (process.platform != 'win32') { - tape('setup symlink', t => { + test('setup symlink', t => { writeFileSync(dest1, 'symlink test\n'); t.end(); }); - tape('symlink', t => { + test('symlink', t => { file .symlink(dest1, filepath1) .then(() => { @@ -37,9 +37,9 @@ if (process.platform != 'win32') { }); }); - tape('symlink dir', t => { - var file1 = resolve(dir1, 'file.txt'); - var file2 = resolve(dir2, 'file.txt'); + test('symlink dir', t => { + const file1 = resolve(dir1, 'file.txt'); + const file2 = resolve(dir2, 'file.txt'); file .mkdir(dir1) @@ -54,8 +54,8 @@ if (process.platform != 'win32') { return file.readdir(dir2); }) .then(files => { - t.ok(Array.isArray(files), 'files is Array'); - t.ok(files.length == 1, 'has some files'); + t.true(Array.isArray(files), 'files is Array'); + t.true(files.length == 1, 'has some files'); t.equal(files[0], 'file.txt', 'dir 2 has file.txt'); return file.readFile(file2, { encoding: 'utf8' }); }) @@ -69,12 +69,12 @@ if (process.platform != 'win32') { }); }); - tape('symlink dest that doesnt exist yet', t => { + test('symlink dest that doesnt exist yet', t => { file .symlink(dest2, filepath2) .then(() => { t.pass('symlink created'); - t.ok(lstatSync(filepath2).isSymbolicLink(), 'is symbolic link'); + t.true(lstatSync(filepath2).isSymbolicLink(), 'is symbolic link'); return file.readFile(filepath2); }) .catch(() => { @@ -98,7 +98,7 @@ if (process.platform != 'win32') { }); }); - tape('symlink error', t => { + test('symlink error', t => { file .symlink(dest1, filepath1) .then(() => { @@ -106,8 +106,8 @@ if (process.platform != 'win32') { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'instance of Error'); + t.true(error, error); + t.true(error instanceof Error, 'instance of Error'); t.equal(error.code, 'EEXIST', 'error.code is EEXIST'); t.equal(error.syscall, 'symlink', 'error.syscal is symlink'); t.end(); diff --git a/test/sync.test.js b/test/sync.test.js index d6f6bd7..6b1b697 100644 --- a/test/sync.test.js +++ b/test/sync.test.js @@ -1,12 +1,12 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var fs = require('fs'); +const test = require('tape'); +const { resolve } = require('path'); +const fs = require('fs'); -var filepath1 = resolve(__dirname, './data/sync.txt'); +const filepath1 = resolve(__dirname, './data/sync.txt'); -tape('sync', t => { +test('sync', t => { fs.open(filepath1, 'w', (error, fd) => { t.error(error, 'no error'); @@ -29,7 +29,7 @@ tape('sync', t => { }); }); -tape('sync error', t => { +test('sync error', t => { file .sync(-1) .then(() => { @@ -37,7 +37,7 @@ tape('sync error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'fsync', 'error.syscall is fsync'); t.end(); diff --git a/test/test-functions.js b/test/test-functions.js deleted file mode 100644 index 258211f..0000000 --- a/test/test-functions.js +++ /dev/null @@ -1,14 +0,0 @@ -var file = require('../'); - -var tape = require('tape'); - -// https://top.fse.guru/nodejs-a-quick-optimization-advice-7353b820c92e#.ytqibx71s - -tape('function length below 600', function(t) { - var length; - for (var method in file) { - length = file[method].toString().length; - t.ok(length < 600, method + ' has ' + length + ' chars'); - } - t.end(); -}); diff --git a/test/test.js b/test/test.js index 3a95fcf..48077e1 100644 --- a/test/test.js +++ b/test/test.js @@ -1,10 +1,10 @@ var file = require('../'); -var tape = require('tape'); +var test = require('tape'); var rimraf = require('rimraf'); -var resolve = require('path').resolve; +var { resolve } = require('path'); -tape('setup', t => { +test('setup', t => { var path = resolve(__dirname, './data'); rimraf(path, error => { diff --git a/test/truncate.test.js b/test/truncate.test.js index 20e393b..40bcd95 100644 --- a/test/truncate.test.js +++ b/test/truncate.test.js @@ -1,24 +1,24 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var readFileSync = require('fs').readFileSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { readFileSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/truncate.txt'); +const filepath1 = resolve(__dirname, './data/truncate.txt'); -tape('setup truncate', t => { +test('setup truncate', t => { writeFileSync(filepath1, 'abcdefghijklmnopqrstuvwxyz\n'); t.end(); }); -tape('truncate', t => { +test('truncate', t => { file .truncate(filepath1, { length: 9 }) .then(() => { - var text = readFileSync(filepath1, 'utf8'); + const text = readFileSync(filepath1, 'utf8'); t.equal(text.length, 9, 'text.length is 9'); t.equal(text, 'abcdefghi'); t.end(); @@ -29,11 +29,35 @@ tape('truncate', t => { }); }); -tape('truncate all', t => { +test('truncate with fd', t => { + file + .open(filepath1, { + flags: 'r+' + }) + .then(fd => { + return file + .truncate(fd, { + length: 8 + }) + .then(() => { + const text = readFileSync(filepath1, 'utf8'); + t.equal(text.length, 8, 'text.length is 8'); + t.equal(text, 'abcdefgh'); + return file.close(fd); + }) + .then(t.end); + }) + .catch(error => { + t.error(error); + t.end(); + }); +}); + +test('truncate all', t => { file .truncate(filepath1) .then(() => { - var text = readFileSync(filepath1, 'utf8'); + const text = readFileSync(filepath1, 'utf8'); t.equal(text.length, 0, 'text.length is 0'); t.equal(text, ''); t.end(); @@ -44,7 +68,7 @@ tape('truncate all', t => { }); }); -tape('truncate error', t => { +test('truncate error', t => { file .truncate(filepath1, { length: -1 @@ -54,7 +78,7 @@ tape('truncate error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EINVAL', 'error.code is EINVAL'); t.equal(error.syscall, 'ftruncate', 'error.syscall is ftruncate'); t.end(); diff --git a/test/unlink.test.js b/test/unlink.test.js index f2826f9..3c3d723 100644 --- a/test/unlink.test.js +++ b/test/unlink.test.js @@ -1,17 +1,17 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/unlink.txt'); +const filepath1 = resolve(__dirname, './data/unlink.txt'); -tape('setup unlink', t => { +test('setup unlink', t => { writeFileSync(filepath1, 'file content\n'); t.end(); }); -tape('unlink', t => { +test('unlink', t => { file .unlink(filepath1) .then(() => { @@ -24,8 +24,8 @@ tape('unlink', t => { }); }); -tape('unlink non-existing file', t => { - var path = resolve(__dirname, './data/nothing-here.txt'); +test('unlink non-existing file', t => { + const path = resolve(__dirname, './data/nothing-here.txt'); file .unlink(path) @@ -34,7 +34,7 @@ tape('unlink non-existing file', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'ENOENT', 'error.code is ENOENT'); t.equal(error.syscall, 'unlink', 'error.syscall is unlink'); t.equal(error.path, path); diff --git a/test/utimes.test.js b/test/utimes.test.js index 8434248..d2845f5 100644 --- a/test/utimes.test.js +++ b/test/utimes.test.js @@ -1,20 +1,20 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var statSync = require('fs').statSync; -var writeFileSync = require('fs').writeFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { statSync } = require('fs'); +const { writeFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/utimes.txt'); +const filepath1 = resolve(__dirname, './data/utimes.txt'); -tape('setup utimes', t => { +test('setup utimes', t => { writeFileSync(filepath1, 'file content\n'); t.end(); }); -tape('utimes', t => { - var now = Date.now(); - var firstoct = new Date('2015-10-01'); +test('utimes', t => { + const now = Date.now(); + const firstoct = new Date('2015-10-01'); file .utimes(filepath1, { @@ -22,10 +22,10 @@ tape('utimes', t => { modification: firstoct }) .then(() => { - var stats = statSync(filepath1); - t.ok(stats.atime instanceof Date, 'atime instanceof Date'); - t.ok(stats.mtime instanceof Date, 'mtime instanceof Date'); - t.ok( + const stats = statSync(filepath1); + t.true(stats.atime instanceof Date, 'atime instanceof Date'); + t.true(stats.mtime instanceof Date, 'mtime instanceof Date'); + t.true( stats.atime.getTime() > new Date(now - 3000).getTime(), 'access was 2 seconds ago' ); @@ -42,15 +42,15 @@ tape('utimes', t => { }); }); -tape('utimes defaults to now', t => { - var before = new Date(Date.now() - 1000); +test('utimes defaults to now', t => { + const before = new Date(Date.now() - 1000); file .utimes(filepath1) .then(() => { - var stats = statSync(filepath1); - t.ok(stats.atime >= before, 'access before'); - t.ok(stats.mtime >= before, 'modification before'); + const stats = statSync(filepath1); + t.true(stats.atime >= before, 'access before'); + t.true(stats.mtime >= before, 'modification before'); t.end(); }) .catch(error => { @@ -59,7 +59,7 @@ tape('utimes defaults to now', t => { }); }); -tape('utimes error', t => { +test('utimes error', t => { file .utimes(filepath1, { access: '2015-10-01', @@ -70,12 +70,12 @@ tape('utimes error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.end(); }); }); -tape('utimes fd error', t => { +test('utimes fd error', t => { file .utimes(-1) .then(() => { @@ -83,7 +83,7 @@ tape('utimes fd error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'futime', 'error.syscall is futime'); t.end(); diff --git a/test/write.test.js b/test/write.test.js index 926b3f3..1379215 100644 --- a/test/write.test.js +++ b/test/write.test.js @@ -1,15 +1,15 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var readFileSync = require('fs').readFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { readFileSync } = require('fs'); -var filepath1 = resolve(__dirname, './data/write.json'); -var filepath2 = resolve(__dirname, './data/write.txt'); -var filepath3 = resolve(__dirname, './data/write2.txt'); -var filepath4 = resolve(__dirname, './data/dir/write/write3.txt'); +const filepath1 = resolve(__dirname, './data/write.json'); +const filepath2 = resolve(__dirname, './data/write.txt'); +const filepath3 = resolve(__dirname, './data/write2.txt'); +const filepath4 = resolve(__dirname, './data/dir/write/write3.txt'); -tape('write JSON', t => { +test('write JSON', t => { file .write(filepath1, { data: 1 }) .then(() => { @@ -23,7 +23,7 @@ tape('write JSON', t => { }); }); -tape('write buffer', t => { +test('write buffer', t => { file .write(filepath2, new Buffer('Hi!'), { offset: 0, @@ -40,7 +40,7 @@ tape('write buffer', t => { }); }); -tape('write string at position', t => { +test('write string at position', t => { file .write(filepath3, 'foo bar baz') .then(() => { @@ -64,7 +64,7 @@ tape('write string at position', t => { }); }); -tape('write buffer at position', t => { +test('write buffer at position', t => { file .write(filepath3, 'foo bar baz') .then(() => { @@ -87,7 +87,7 @@ tape('write buffer at position', t => { }); }); -tape('write file in a new directory', t => { +test('write file in a new directory', t => { file .write(filepath4, 'test\n') .then(() => { @@ -101,7 +101,7 @@ tape('write file in a new directory', t => { }); }); -tape('write twice with manually opened fd', t => { +test('write twice with manually opened fd', t => { file .open(filepath2) .then(fd => { @@ -129,7 +129,7 @@ tape('write twice with manually opened fd', t => { }); }); -tape('write with invalid offset', t => { +test('write with invalid offset', t => { file .write(filepath2, new Buffer(0), { offset: -1 @@ -139,13 +139,13 @@ tape('write with invalid offset', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof RangeError, 'is RangeError'); + t.true(error, error); + t.true(error instanceof RangeError, 'is RangeError'); t.end(); }); }); -tape('write buffer fd error', t => { +test('write buffer fd error', t => { file .write(-1, new Buffer(0)) .then(() => { @@ -153,14 +153,14 @@ tape('write buffer fd error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'write', 'error.syscall is write'); t.end(); }); }); -tape('write fd error', t => { +test('write fd error', t => { file .write(-1) .then(() => { @@ -168,7 +168,7 @@ tape('write fd error', t => { t.end(); }) .catch(error => { - t.ok(error, error); + t.true(error, error); t.equal(error.code, 'EBADF', 'error.code is EBADF'); t.equal(error.syscall, 'write', 'error.syscall is write'); t.end(); diff --git a/test/writefile.test.js b/test/writefile.test.js index 1310aa2..2eb7f34 100644 --- a/test/writefile.test.js +++ b/test/writefile.test.js @@ -1,15 +1,15 @@ -var file = require('../'); +const file = require('../'); -var tape = require('tape'); -var resolve = require('path').resolve; -var readFileSync = require('fs').readFileSync; +const test = require('tape'); +const { resolve } = require('path'); +const { readFileSync } = require('fs'); -var file1 = resolve(__dirname, './data/writefile-1.txt'); -var file2 = resolve(__dirname, './data/writefile-2.json'); -var file3 = resolve(__dirname, './data/writefile-3.txt'); -var file4 = resolve(__dirname, './data/writefile/new/file.txt'); +const file1 = resolve(__dirname, './data/writefile-1.txt'); +const file2 = resolve(__dirname, './data/writefile-2.json'); +const file3 = resolve(__dirname, './data/writefile-3.txt'); +const file4 = resolve(__dirname, './data/writefile/new/file.txt'); -tape('writeFile', t => { +test('writeFile', t => { file .writeFile(file1, 'Hello File!') .then(() => { @@ -23,7 +23,7 @@ tape('writeFile', t => { }); }); -tape('writeFile JSON', t => { +test('writeFile JSON', t => { file .writeFile(file2, { data: 1 }) .then(() => { @@ -37,7 +37,7 @@ tape('writeFile JSON', t => { }); }); -tape('writeFile Buffer', t => { +test('writeFile Buffer', t => { file .writeFile(file3, new Buffer("I'm a buffer")) .then(() => { @@ -51,7 +51,7 @@ tape('writeFile Buffer', t => { }); }); -tape('writeFile to a new directory', t => { +test('writeFile to a new directory', t => { file .writeFile(file4, 'In a new directory') .then(() => { @@ -65,7 +65,27 @@ tape('writeFile to a new directory', t => { }); }); -tape('writeFile error', t => { +test('readFile to fd', t => { + file + .open(file4, { + flags: 'r+' + }) + .then(fd => { + return file + .writeFile(fd, '_ an old') + .then(() => { + t.equal(readFileSync(file4, 'utf8'), '_ an old directory'); + return file.close(fd); + }) + .then(t.end); + }) + .catch(error => { + t.error(error); + t.end(); + }); +}); + +test('writeFile error', t => { file .writeFile() .then(() => { @@ -73,14 +93,14 @@ tape('writeFile error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof TypeError, 'is TypeError'); + t.true(error, error); + t.true(error instanceof TypeError, 'is TypeError'); t.end(); }); }); -tape('writeFile on a dir error', t => { - var dir = resolve(__dirname, './data/writefile/new'); +test('writeFile on a dir error', t => { + const dir = resolve(__dirname, './data/writefile/new'); file .writeFile(dir, 'here is a dir') .then(() => { @@ -88,8 +108,8 @@ tape('writeFile on a dir error', t => { t.end(); }) .catch(error => { - t.ok(error, error); - t.ok(error instanceof Error, 'is Error'); + t.true(error, error); + t.true(error instanceof Error, 'is Error'); t.equal(error.code, 'EISDIR', 'error.code is EISDIR'); t.end(); });