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 fs = require('fs'); 10const path = require('path'); 11 12const options = common.mustNotMutateObjectDeep({}); 13const tmpdir = require('../common/tmpdir'); 14tmpdir.refresh(); 15 16fs.readFile(__filename, options, common.mustSucceed()); 17fs.readFileSync(__filename, options); 18 19fs.readdir(__dirname, options, common.mustSucceed()); 20fs.readdirSync(__dirname, options); 21 22if (common.canCreateSymLink()) { 23 const sourceFile = path.resolve(tmpdir.path, 'test-readlink'); 24 const linkFile = path.resolve(tmpdir.path, 'test-readlink-link'); 25 26 fs.writeFileSync(sourceFile, ''); 27 fs.symlinkSync(sourceFile, linkFile); 28 29 fs.readlink(linkFile, options, common.mustSucceed()); 30 fs.readlinkSync(linkFile, options); 31} 32 33{ 34 const fileName = path.resolve(tmpdir.path, 'writeFile'); 35 fs.writeFileSync(fileName, 'ABCD', options); 36 fs.writeFile(fileName, 'ABCD', options, common.mustSucceed()); 37} 38 39{ 40 const fileName = path.resolve(tmpdir.path, 'appendFile'); 41 fs.appendFileSync(fileName, 'ABCD', options); 42 fs.appendFile(fileName, 'ABCD', options, common.mustSucceed()); 43} 44 45if (!common.isIBMi) { // IBMi does not support fs.watch() 46 const watch = fs.watch(__filename, options, common.mustNotCall()); 47 watch.close(); 48} 49 50{ 51 fs.watchFile(__filename, options, common.mustNotCall()); 52 fs.unwatchFile(__filename); 53} 54 55{ 56 fs.realpathSync(__filename, options); 57 fs.realpath(__filename, options, common.mustSucceed()); 58} 59 60{ 61 const tempFileName = path.resolve(tmpdir.path, 'mkdtemp-'); 62 fs.mkdtempSync(tempFileName, options); 63 fs.mkdtemp(tempFileName, options, common.mustSucceed()); 64} 65 66{ 67 const fileName = path.resolve(tmpdir.path, 'streams'); 68 fs.WriteStream(fileName, options).once('open', common.mustCall(() => { 69 fs.ReadStream(fileName, options).destroy(); 70 })).end(); 71} 72