Skip to content

Commit 93c917c

Browse files
Trotttargos
authored andcommitted
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 <[email protected]> Reviewed-By: Anna Henningsen <[email protected]> Reviewed-By: Gerhard Stöbich <[email protected]>
1 parent cd95bf3 commit 93c917c

File tree

2 files changed

+61
-5
lines changed

2 files changed

+61
-5
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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.mustSucceed((stats) => {
47+
linkTime = stats.mtime.getTime();
48+
}));
49+
50+
fs.stat(linkPath, common.mustSucceed((stats) => {
51+
fileTime = stats.mtime.getTime();
52+
}));
53+
54+
fs.readlink(linkPath, common.mustSucceed((destination) => {
55+
assert.strictEqual(destination, linkData);
56+
}));
57+
58+
process.on('exit', () => {
59+
assert.notStrictEqual(linkTime, fileTime);
60+
});

test/parallel/test-fs-symlink.js

+1-5
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,6 @@ fs.symlink(linkData, linkPath, common.mustSucceed(() => {
5151
fs.readlink(linkPath, common.mustSucceed((destination) => {
5252
assert.strictEqual(destination, linkData);
5353
}));
54-
55-
tmpdir.refresh();
56-
// Refs: https://github.com/nodejs/node/issues/34514
57-
fs.symlinkSync(Buffer.from(linkData), linkPath);
5854
}));
5955

6056
// Test invalid symlink
@@ -89,6 +85,6 @@ const errObj = {
8985
assert.throws(() => fs.symlink('', '', '🍏', common.mustNotCall()), errObj);
9086
assert.throws(() => fs.symlinkSync('', '', '🍏'), errObj);
9187

92-
process.on('exit', function() {
88+
process.on('exit', () => {
9389
assert.notStrictEqual(linkTime, fileTime);
9490
});

0 commit comments

Comments
 (0)