From a9c5b873ca47555aeaaaffa9c7374358f33cc28e Mon Sep 17 00:00:00 2001 From: Rich Trott Date: Thu, 30 Jul 2020 11:43:40 -0700 Subject: [PATCH] test: move buffer-as-path symlink test to its own test file MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The buffer-as-path test for fs.symlinkSync() is a bit unusual and potentially error-prone embedded in the general fs.symlink() test. Move it to its own test file. Refs: https://github.com/nodejs/node/pull/34540/files#r463168354 PR-URL: https://github.com/nodejs/node/pull/34569 Reviewed-By: Pranshu Srivastava Reviewed-By: Anna Henningsen Reviewed-By: Gerhard Stöbich --- test/parallel/test-fs-symlink-buffer-path.js | 63 ++++++++++++++++++++ test/parallel/test-fs-symlink.js | 6 +- 2 files changed, 64 insertions(+), 5 deletions(-) create mode 100644 test/parallel/test-fs-symlink-buffer-path.js 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 45bc99b48980a8..3d140865a34f33 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-symlink.js @@ -56,10 +56,6 @@ fs.symlink(linkData, linkPath, common.mustCall(function(err) { assert.ifError(err); assert.strictEqual(destination, linkData); })); - - tmpdir.refresh(); - // Refs: https://github.com/nodejs/node/issues/34514 - fs.symlinkSync(Buffer.from(linkData), linkPath); })); // Test invalid symlink @@ -96,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); });