'use strict'; const common = require('../common'); const fs = require('fs'); const fsPromises = fs.promises; const path = require('path'); const tmpdir = require('../common/tmpdir'); const assert = require('assert'); const tmpDir = tmpdir.path; tmpdir.refresh(); const dest = path.resolve(tmpDir, 'tmp.txt'); const buffer = Buffer.from('abc'.repeat(1000)); const buffer2 = Buffer.from('xyz'.repeat(1000)); async function doWrite() { await fsPromises.writeFile(dest, buffer); const data = fs.readFileSync(dest); assert.deepStrictEqual(data, buffer); } async function doAppend() { await fsPromises.appendFile(dest, buffer2); const data = fs.readFileSync(dest); const buf = Buffer.concat([buffer, buffer2]); assert.deepStrictEqual(buf, data); } async function doRead() { const data = await fsPromises.readFile(dest); const buf = fs.readFileSync(dest); assert.deepStrictEqual(buf, data); } async function doReadWithEncoding() { const data = await fsPromises.readFile(dest, 'utf-8'); const syncData = fs.readFileSync(dest, 'utf-8'); assert.strictEqual(typeof data, 'string'); assert.deepStrictEqual(data, syncData); } doWrite() .then(doAppend) .then(doRead) .then(doReadWithEncoding) .then(common.mustCall());