Skip to content

Commit 6d171d0

Browse files
committed
test(utils): enhance vitestFsMock with unionfs for improved file system handling
1 parent 65193a7 commit 6d171d0

3 files changed

Lines changed: 31 additions & 7 deletions

File tree

packages/asyncapi-typescript-plugin/package.json

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,6 @@
5050
"eslint": "^9.39.1",
5151
"memfs": "^4.56.10",
5252
"rimraf": "^6.1.2",
53-
"unionfs": "^4.6.0",
5453
"vitest": "^3.2.4"
5554
},
5655
"files": [
Lines changed: 31 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,49 @@
11
import { vi } from 'vitest';
22

3-
const createMemFs = vi.hoisted(
4-
() => async (_fsOriginal: typeof import('node:fs')) => {
3+
const createUnionFs = vi.hoisted(
4+
() => async (fsOriginal: typeof import('node:fs')) => {
55
const { Volume, createFsFromVolume } = await import('memfs');
6+
const { ufs } = await import('unionfs');
67

7-
return createFsFromVolume(Volume.fromJSON({}));
8+
const memFs = createFsFromVolume(Volume.fromJSON({}));
9+
const union = ufs.use(memFs as never).use(fsOriginal as never);
10+
11+
if (union.promises && typeof fsOriginal.promises?.rm === 'function') {
12+
const memFsPromises = (
13+
memFs as {
14+
promises?: { rm?: (path: string, options?: object) => Promise<void> };
15+
}
16+
).promises;
17+
(
18+
union.promises as {
19+
rm: (path: string, options?: object) => Promise<void>;
20+
}
21+
).rm = async (path, options) => {
22+
if (typeof memFsPromises?.rm === 'function') {
23+
try {
24+
return await memFsPromises.rm(path, options);
25+
} catch {
26+
return await fsOriginal.promises.rm(path, options);
27+
}
28+
}
29+
return await fsOriginal.promises.rm(path, options);
30+
};
31+
}
32+
33+
return union;
834
}
935
);
1036

1137
vi.mock('node:fs', async (importOriginal) => {
1238
return {
13-
default: await createMemFs(
39+
default: await createUnionFs(
1440
await importOriginal<typeof import('node:fs')>()
1541
),
1642
};
1743
});
1844

1945
vi.mock('fs', async (importOriginal) => {
2046
return {
21-
default: await createMemFs(await importOriginal<typeof import('fs')>()),
47+
default: await createUnionFs(await importOriginal<typeof import('fs')>()),
2248
};
2349
});

yarn.lock

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4745,7 +4745,6 @@ __metadata:
47454745
openapi-typescript: "npm:^7.10.1"
47464746
rimraf: "npm:^6.1.2"
47474747
typescript: "npm:^5.6.2"
4748-
unionfs: "npm:^4.6.0"
47494748
vitest: "npm:^3.2.4"
47504749
languageName: unknown
47514750
linkType: soft

0 commit comments

Comments
 (0)