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