From e0133a831cf2516059b5fedf2ddb5f40701e79ee Mon Sep 17 00:00:00 2001 From: himself65 Date: Tue, 28 Jul 2020 23:14:00 +0800 Subject: [PATCH 1/3] fs: fix when path is buffer --- lib/internal/fs/utils.js | 3 ++- test/parallel/test-fs-symlink.js | 3 +++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index 712bd87d85f6e6..3439857a042156 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -336,6 +336,7 @@ function preprocessSymlinkDestination(path, type, linkPath) { // No preprocessing is needed on Unix. return path; } + path = '' + path; if (type === 'junction') { // Junctions paths need to be absolute and \\?\-prefixed. // A relative target is relative to the link's parent directory. @@ -347,7 +348,7 @@ function preprocessSymlinkDestination(path, type, linkPath) { return pathModule.toNamespacedPath(path); } // Windows symlinks don't tolerate forward slashes. - return ('' + path).replace(/\//g, '\\'); + return path.replace(/\//g, '\\'); } // Constructor for file stats. diff --git a/test/parallel/test-fs-symlink.js b/test/parallel/test-fs-symlink.js index d1784fdd3a07f4..7b17c58e82e7be 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-symlink.js @@ -58,6 +58,9 @@ fs.symlink(linkData, linkPath, common.mustCall(function(err) { })); })); +// Fixes: https://github.com/nodejs/node/issues/34514 +fs.symlinkSync(Buffer.from(linkData), linkPath); + // Test invalid symlink { const linkData = fixtures.path('/not/exists/file'); From 0547fc8fc8ce4af2615c2801134e144c43492c8c Mon Sep 17 00:00:00 2001 From: himself65 Date: Tue, 28 Jul 2020 23:54:42 +0800 Subject: [PATCH 2/3] fixup! --- test/parallel/test-fs-symlink.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/parallel/test-fs-symlink.js b/test/parallel/test-fs-symlink.js index 7b17c58e82e7be..033ba641109235 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-symlink.js @@ -58,6 +58,7 @@ fs.symlink(linkData, linkPath, common.mustCall(function(err) { })); })); +tmpdir.refresh(); // Fixes: https://github.com/nodejs/node/issues/34514 fs.symlinkSync(Buffer.from(linkData), linkPath); From af685bdc4879454f0a1232b7b44859e4845c4cec Mon Sep 17 00:00:00 2001 From: himself65 Date: Wed, 29 Jul 2020 01:17:47 +0800 Subject: [PATCH 3/3] fixup! --- test/parallel/test-fs-symlink.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/test/parallel/test-fs-symlink.js b/test/parallel/test-fs-symlink.js index 033ba641109235..28938f41d66010 100644 --- a/test/parallel/test-fs-symlink.js +++ b/test/parallel/test-fs-symlink.js @@ -56,11 +56,11 @@ fs.symlink(linkData, linkPath, common.mustCall(function(err) { assert.ifError(err); assert.strictEqual(destination, linkData); })); -})); -tmpdir.refresh(); -// Fixes: https://github.com/nodejs/node/issues/34514 -fs.symlinkSync(Buffer.from(linkData), linkPath); + tmpdir.refresh(); + // Fixes: https://github.com/nodejs/node/issues/34514 + fs.symlinkSync(Buffer.from(linkData), linkPath); +})); // Test invalid symlink {