'use strict'; /* * This test makes sure that `writeFile()` always writes from the current * position of the file, instead of truncating the file, when used with file * descriptors. */ const common = require('../common'); const assert = require('assert'); const fs = require('fs'); const join = require('path').join; const tmpdir = require('../common/tmpdir'); tmpdir.refresh(); { /* writeFileSync() test. */ const filename = join(tmpdir.path, 'test.txt'); /* Open the file descriptor. */ const fd = fs.openSync(filename, 'w'); /* Write only five characters, so that the position moves to five. */ assert.deepStrictEqual(fs.writeSync(fd, 'Hello'), 5); assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'Hello'); /* Write some more with writeFileSync(). */ fs.writeFileSync(fd, 'World'); /* New content should be written at position five, instead of zero. */ assert.deepStrictEqual(fs.readFileSync(filename).toString(), 'HelloWorld'); } { /* writeFile() test. */ const file = join(tmpdir.path, 'test1.txt'); /* Open the file descriptor. */ fs.open(file, 'w', common.mustCall((err, fd) => { assert.ifError(err); /* Write only five characters, so that the position moves to five. */ fs.write(fd, 'Hello', common.mustCall((err, bytes) => { assert.ifError(err); assert.strictEqual(bytes, 5); assert.deepStrictEqual(fs.readFileSync(file).toString(), 'Hello'); /* Write some more with writeFile(). */ fs.writeFile(fd, 'World', common.mustCall((err) => { assert.ifError(err); /* New content should be written at position five, instead of zero. */ assert.deepStrictEqual(fs.readFileSync(file).toString(), 'HelloWorld'); })); })); })); }