1'use strict';
2require('../common');
3const assert = require('assert');
4const fixtures = require('../common/fixtures');
5const tmpdir = require('../common/tmpdir');
6
7const { access, copyFile, open } = require('fs').promises;
8const path = require('path');
9
10async function validate() {
11  tmpdir.refresh();
12  const dest = path.resolve(tmpdir.path, 'baz.js');
13  await assert.rejects(
14    copyFile(fixtures.path('baz.js'), dest, 'r'),
15    {
16      code: 'ERR_INVALID_ARG_TYPE',
17    }
18  );
19  await copyFile(fixtures.path('baz.js'), dest);
20  await assert.rejects(
21    access(dest, 'r'),
22    { code: 'ERR_INVALID_ARG_TYPE', message: /mode/ }
23  );
24  await access(dest);
25  const handle = await open(dest, 'r+');
26  await handle.datasync();
27  await handle.sync();
28  const buf = Buffer.from('hello world');
29  await handle.write(buf);
30  const ret = await handle.read(Buffer.alloc(11), 0, 11, 0);
31  assert.strictEqual(ret.bytesRead, 11);
32  assert.deepStrictEqual(ret.buffer, buf);
33  await handle.close();
34}
35
36validate();
37