diff --git a/test/parallel/test-fs-symlink-buffer-path.js b/test/parallel/test-fs-symlink-buffer-path.js new file mode 100644 index 00000000000000..e2cdb6bc5411e0 --- /dev/null +++ b/test/parallel/test-fs-symlink-buffer-path.js @@ -0,0 +1,63 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +'use strict'; +const common = require('../common'); +if (!common.canCreateSymLink()) + common.skip('insufficient privileges'); + +const fixtures = require('../common/fixtures'); + +const assert = require('assert'); +const path = require('path'); +const fs = require('fs'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +// Test creating and reading symbolic link +const linkData = fixtures.path('/cycles/root.js'); +const linkPath = path.join(tmpdir.path, 'symlink1.js'); + +let linkTime; +let fileTime; + +// Refs: https://github.com/nodejs/node/issues/34514 +fs.symlinkSync(Buffer.from(linkData), linkPath); + +fs.lstat(linkPath, common.mustCall(function(err, stats) { + assert.ifError(err); + linkTime = stats.mtime.getTime(); +})); + +fs.stat(linkPath, common.mustCall(function(err, stats) { + assert.ifError(err); + fileTime = stats.mtime.getTime(); +})); + +fs.readlink(linkPath, common.mustCall(function(err, destination) { + assert.ifError(err); + assert.strictEqual(destination, linkData); +})); + +process.on('exit', () => { + assert.notStrictEqual(linkTime, fileTime); +}); diff --git a/test/parallel/test-fs-symlink.js b/test/parallel/test-fs-symlink.js index d1784fdd3a07f4..3d140865a34f33 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-symlink.js @@ -92,6 +92,6 @@ const errObj = { assert.throws(() => fs.symlink('', '', '🍏', common.mustNotCall()), errObj); assert.throws(() => fs.symlinkSync('', '', '🍏'), errObj); -process.on('exit', function() { +process.on('exit', () => { assert.notStrictEqual(linkTime, fileTime); });