From 4a06d470ef71637d31a296ea0bdaa1f78ae197ea Mon Sep 17 00:00:00 2001 From: James M Snell Date: Sat, 2 Aug 2025 07:23:15 -0700 Subject: [PATCH] test: add known issue test for fs.cpSync dereference bug MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs: https://github.com/nodejs/node/issues/58939 PR-URL: https://github.com/nodejs/node/pull/58941 Reviewed-By: Juan José Arboleda Reviewed-By: Luigi Pinca --- .../test-fs-cp-sync-dereference.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 test/known_issues/test-fs-cp-sync-dereference.js diff --git a/test/known_issues/test-fs-cp-sync-dereference.js b/test/known_issues/test-fs-cp-sync-dereference.js new file mode 100644 index 00000000000..fbb07a8f781 --- /dev/null +++ b/test/known_issues/test-fs-cp-sync-dereference.js @@ -0,0 +1,39 @@ +'use strict'; + +// Refs: https://github.com/nodejs/node/issues/58939 +// +// The cpSync function is not correctly handling the `dereference` option. +// In this test, both the cp and cpSync functions are attempting to copy +// a file over a symlinked directory. In the cp case it works fine. In the +// cpSync case it fails with an error. + +const common = require('../common'); + +const { + cp, + cpSync, + mkdirSync, + symlinkSync, + writeFileSync, +} = require('fs'); + +const { + join, +} = require('path'); + +const tmpdir = require('../common/tmpdir'); +tmpdir.refresh(); + +const pathA = join(tmpdir.path, 'a'); +const pathB = join(tmpdir.path, 'b'); +const pathC = join(tmpdir.path, 'c'); +const pathD = join(tmpdir.path, 'd'); + +writeFileSync(pathA, 'file a'); +mkdirSync(pathB); +symlinkSync(pathB, pathC, 'dir'); +symlinkSync(pathB, pathD, 'dir'); + +cp(pathA, pathD, { dereference: false }, common.mustSucceed()); + +cpSync(pathA, pathC, { dereference: false });