deno/tests/specs/node/node_fs_cp/main.mjs
Marvin Hagemeister 80c0998a03
Some checks are pending
ci / test release macos-x86_64 (push) Blocked by required conditions
ci / test debug windows-x86_64 (push) Blocked by required conditions
ci / test release windows-x86_64 (push) Blocked by required conditions
ci / build libs (push) Blocked by required conditions
ci / publish canary (push) Blocked by required conditions
ci / pre-build (push) Waiting to run
ci / test debug linux-aarch64 (push) Blocked by required conditions
ci / test release linux-aarch64 (push) Blocked by required conditions
ci / test debug macos-aarch64 (push) Blocked by required conditions
ci / test release macos-aarch64 (push) Blocked by required conditions
ci / bench release linux-x86_64 (push) Blocked by required conditions
ci / lint debug linux-x86_64 (push) Blocked by required conditions
ci / lint debug macos-x86_64 (push) Blocked by required conditions
ci / lint debug windows-x86_64 (push) Blocked by required conditions
ci / test debug linux-x86_64 (push) Blocked by required conditions
ci / test release linux-x86_64 (push) Blocked by required conditions
ci / test debug macos-x86_64 (push) Blocked by required conditions
fix(node/fs): cp should not create subfolder when both source and target are directories (#30408)
When both source and target paths are a directory, we should do nothing.
Previously, we would create a subdirectory in the target dir and copy
into that.

Fixes https://github.com/denoland/deno/issues/30407
2025-08-16 19:20:58 +02:00

23 lines
534 B
JavaScript

import fs from "node:fs/promises";
import path from "node:path";
const src = path.join(import.meta.dirname, "source");
const target = path.join(import.meta.dirname, "dist");
try {
await fs.rm(target, { recursive: true });
} catch {
// ignore
}
await fs.cp(src, target, { recursive: true, force: true });
await fs.cp(src, target, { recursive: true, force: true });
const entries = await Array.fromAsync(await fs.readdir(target));
console.log(entries);
try {
await fs.rm(target, { recursive: true });
} catch {
// ignore
}