• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2const common = require('../common');
3
4// These tests make sure that the `options` object passed to these functions are
5// never altered.
6//
7// Refer: https://github.com/nodejs/node/issues/7655
8
9const assert = require('assert');
10const fs = require('fs');
11const path = require('path');
12
13const errHandler = (e) => assert.ifError(e);
14const options = Object.freeze({});
15const tmpdir = require('../common/tmpdir');
16tmpdir.refresh();
17
18fs.readFile(__filename, options, common.mustCall(errHandler));
19fs.readFileSync(__filename, options);
20
21fs.readdir(__dirname, options, common.mustCall(errHandler));
22fs.readdirSync(__dirname, options);
23
24if (common.canCreateSymLink()) {
25  const sourceFile = path.resolve(tmpdir.path, 'test-readlink');
26  const linkFile = path.resolve(tmpdir.path, 'test-readlink-link');
27
28  fs.writeFileSync(sourceFile, '');
29  fs.symlinkSync(sourceFile, linkFile);
30
31  fs.readlink(linkFile, options, common.mustCall(errHandler));
32  fs.readlinkSync(linkFile, options);
33}
34
35{
36  const fileName = path.resolve(tmpdir.path, 'writeFile');
37  fs.writeFileSync(fileName, 'ABCD', options);
38  fs.writeFile(fileName, 'ABCD', options, common.mustCall(errHandler));
39}
40
41{
42  const fileName = path.resolve(tmpdir.path, 'appendFile');
43  fs.appendFileSync(fileName, 'ABCD', options);
44  fs.appendFile(fileName, 'ABCD', options, common.mustCall(errHandler));
45}
46
47if (!common.isIBMi) { // IBMi does not support fs.watch()
48  const watch = fs.watch(__filename, options, common.mustNotCall());
49  watch.close();
50}
51
52{
53  fs.watchFile(__filename, options, common.mustNotCall());
54  fs.unwatchFile(__filename);
55}
56
57{
58  fs.realpathSync(__filename, options);
59  fs.realpath(__filename, options, common.mustCall(errHandler));
60}
61
62{
63  const tempFileName = path.resolve(tmpdir.path, 'mkdtemp-');
64  fs.mkdtempSync(tempFileName, options);
65  fs.mkdtemp(tempFileName, options, common.mustCall(errHandler));
66}
67
68{
69  const fileName = path.resolve(tmpdir.path, 'streams');
70  fs.WriteStream(fileName, options).once('open', common.mustCall(() => {
71    fs.ReadStream(fileName, options).destroy();
72  })).end();
73}
74