Files
bun.sh/test/regression/issue/16474.test.ts

45 lines
1.5 KiB
TypeScript

import { expect, test } from "bun:test";
import { mkdirSync, writeFileSync } from "fs";
import { mkdir } from "fs/promises";
import { tmpdirSync } from "harness";
import { join, toNamespacedPath } from "path";
test("fs.mkdir recursive should not error on existing", async () => {
const testDir = tmpdirSync();
const dir1 = join(testDir, "test123");
expect(mkdirSync(dir1, { recursive: true })).toBe(toNamespacedPath(dir1));
expect(mkdirSync(dir1, { recursive: true })).toBeUndefined();
expect(() => {
mkdirSync(dir1);
}).toThrow("EEXIST: file already exists");
// relative
expect(() => {
mkdirSync("123test", { recursive: true });
mkdirSync("123test", { recursive: true });
mkdirSync("123test/456test", { recursive: true });
mkdirSync("123test/456test", { recursive: true });
}).not.toThrow();
const dir2 = join(testDir, "test456");
expect(await mkdir(dir2)).toBeUndefined();
expect(await mkdir(dir2, { recursive: true })).toBeUndefined();
// nested
const dir3 = join(testDir, "test789", "nested");
expect(mkdirSync(dir3, { recursive: true })).toBe(toNamespacedPath(join(testDir, "test789")));
expect(mkdirSync(dir3, { recursive: true })).toBeUndefined();
// file
const file = join(testDir, "test789", "file.txt");
writeFileSync(file, "hi");
expect(() => {
mkdirSync(file, { recursive: true });
}).toThrow("EEXIST: file already exists");
expect(async () => {
await mkdir(file, { recursive: true });
}).toThrow("EEXIST: file already exists");
});