From 6b4a8d5398baa4c9d34c4998aabca32948474430 Mon Sep 17 00:00:00 2001 From: sapphi-red <49056869+sapphi-red@users.noreply.github.com> Date: Sun, 3 Dec 2023 21:19:54 +0900 Subject: [PATCH] win: fix fs.promises.realpath for long paths Unlike other fs functions that work with paths, realpath isn't using pathModule.toNamespacedPath prior to calling libuv function. This is causing issues on windows. Windows long path test is also improved to cover the mentioned issue. Fixes: #51031 --- lib/internal/fs/promises.js | 2 +- test/parallel/test-fs-long-path.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/internal/fs/promises.js b/lib/internal/fs/promises.js index 43d4ad7c0e9f63..3a65cb4669dbc1 100644 --- a/lib/internal/fs/promises.js +++ b/lib/internal/fs/promises.js @@ -1160,7 +1160,7 @@ async function realpath(path, options) { options = getOptions(options); path = getValidatedPath(path); return await PromisePrototypeThen( - binding.realpath(path, options.encoding, kUsePromises), + binding.realpath(pathModule.toNamespacedPath(path), options.encoding, kUsePromises), undefined, handleErrorFromBinding, ); diff --git a/test/parallel/test-fs-long-path.js b/test/parallel/test-fs-long-path.js index f3a8ea7a9ebf9e..11724a88dc4c29 100644 --- a/test/parallel/test-fs-long-path.js +++ b/test/parallel/test-fs-long-path.js @@ -46,4 +46,7 @@ fs.writeFile(fullPath, 'ok', common.mustSucceed(() => { // Tests https://github.com/nodejs/node/issues/39721 fs.realpath.native(fullPath, common.mustSucceed()); + + // Tests https://github.com/nodejs/node/issues/51031 + fs.promises.realpath(fullPath).then(common.mustCall(), common.mustNotCall()); }));