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