Skip to content

Commit 11412e8

Browse files
anonrigUlisesGascon
authored andcommitted
fs: do not throw error on cpSync internals
PR-URL: #50185 Reviewed-By: Geoffrey Booth <[email protected]> Reviewed-By: Antoine du Hamel <[email protected]>
1 parent 8414fb4 commit 11412e8

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

lib/internal/fs/cp/cp-sync.js

+8-17
Original file line numberDiff line numberDiff line change
@@ -116,31 +116,22 @@ function checkPathsSync(src, dest, opts) {
116116
}
117117

118118
function getStatsSync(src, dest, opts) {
119-
let destStat;
120-
const statFunc = opts.dereference ?
121-
(file) => statSync(file, { bigint: true }) :
122-
(file) => lstatSync(file, { bigint: true });
123-
const srcStat = statFunc(src);
124-
try {
125-
destStat = statFunc(dest);
126-
} catch (err) {
127-
if (err.code === 'ENOENT') return { srcStat, destStat: null };
128-
throw err;
129-
}
119+
const statFunc = opts.dereference ? statSync : lstatSync;
120+
const srcStat = statFunc(src, { bigint: true, throwIfNoEntry: true });
121+
const destStat = statFunc(dest, { bigint: true, throwIfNoEntry: false });
130122
return { srcStat, destStat };
131123
}
132124

133125
function checkParentPathsSync(src, srcStat, dest) {
134126
const srcParent = resolve(dirname(src));
135127
const destParent = resolve(dirname(dest));
136128
if (destParent === srcParent || destParent === parse(destParent).root) return;
137-
let destStat;
138-
try {
139-
destStat = statSync(destParent, { bigint: true });
140-
} catch (err) {
141-
if (err.code === 'ENOENT') return;
142-
throw err;
129+
const destStat = statSync(destParent, { bigint: true, throwIfNoEntry: false });
130+
131+
if (destStat === undefined) {
132+
return;
143133
}
134+
144135
if (areIdentical(srcStat, destStat)) {
145136
throw new ERR_FS_CP_EINVAL({
146137
message: `cannot copy ${src} to a subdirectory of self ${dest}`,

0 commit comments

Comments
 (0)