Skip to content

Commit a9c5b87

Browse files
committed
test: move buffer-as-path symlink test to its own test file
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: #34569 Reviewed-By: Pranshu Srivastava <rexagod@gmail.com> Reviewed-By: Anna Henningsen <anna@addaleax.net> Reviewed-By: Gerhard Stöbich <deb2001-github@yahoo.de>
1 parent cb142d1 commit a9c5b87

File tree

2 files changed

+64
-5
lines changed

2 files changed

+64
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
// Copyright Joyent, Inc. and other Node contributors.
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a
4+
// copy of this software and associated documentation files (the
5+
// "Software"), to deal in the Software without restriction, including
6+
// without limitation the rights to use, copy, modify, merge, publish,
7+
// distribute, sublicense, and/or sell copies of the Software, and to permit
8+
// persons to whom the Software is furnished to do so, subject to the
9+
// following conditions:
10+
//
11+
// The above copyright notice and this permission notice shall be included
12+
// in all copies or substantial portions of the Software.
13+
//
14+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15+
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16+
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17+
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18+
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20+
// USE OR OTHER DEALINGS IN THE SOFTWARE.
21+
22+
'use strict';
23+
const common = require('../common');
24+
if (!common.canCreateSymLink())
25+
common.skip('insufficient privileges');
26+
27+
const fixtures = require('../common/fixtures');
28+
29+
const assert = require('assert');
30+
const path = require('path');
31+
const fs = require('fs');
32+
33+
const tmpdir = require('../common/tmpdir');
34+
tmpdir.refresh();
35+
36+
// Test creating and reading symbolic link
37+
const linkData = fixtures.path('/cycles/root.js');
38+
const linkPath = path.join(tmpdir.path, 'symlink1.js');
39+
40+
let linkTime;
41+
let fileTime;
42+
43+
// Refs: https://github.com/nodejs/node/issues/34514
44+
fs.symlinkSync(Buffer.from(linkData), linkPath);
45+
46+
fs.lstat(linkPath, common.mustCall(function(err, stats) {
47+
assert.ifError(err);
48+
linkTime = stats.mtime.getTime();
49+
}));
50+
51+
fs.stat(linkPath, common.mustCall(function(err, stats) {
52+
assert.ifError(err);
53+
fileTime = stats.mtime.getTime();
54+
}));
55+
56+
fs.readlink(linkPath, common.mustCall(function(err, destination) {
57+
assert.ifError(err);
58+
assert.strictEqual(destination, linkData);
59+
}));
60+
61+
process.on('exit', () => {
62+
assert.notStrictEqual(linkTime, fileTime);
63+
});

test/parallel/test-fs-symlink.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -56,10 +56,6 @@ fs.symlink(linkData, linkPath, common.mustCall(function(err) {
5656
assert.ifError(err);
5757
assert.strictEqual(destination, linkData);
5858
}));
59-
60-
tmpdir.refresh();
61-
// Refs: https://github.com/nodejs/node/issues/34514
62-
fs.symlinkSync(Buffer.from(linkData), linkPath);
6359
}));
6460

6561
// Test invalid symlink
@@ -96,6 +92,6 @@ const errObj = {
9692
assert.throws(() => fs.symlink('', '', '🍏', common.mustNotCall()), errObj);
9793
assert.throws(() => fs.symlinkSync('', '', '🍏'), errObj);
9894

99-
process.on('exit', function() {
95+
process.on('exit', () => {
10096
assert.notStrictEqual(linkTime, fileTime);
10197
});

0 commit comments

Comments
 (0)