-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Expand file tree
/
Copy pathadditionalFiles.test.ts
More file actions
94 lines (73 loc) · 2.93 KB
/
additionalFiles.test.ts
File metadata and controls
94 lines (73 loc) · 2.93 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import { describe, it, expect } from "vitest";
import { getGlobBase } from "../src/internal/additionalFiles.js";
describe("getGlobBase", () => {
describe("glob patterns with wildcards", () => {
it("extracts base from parent directory glob pattern", () => {
expect(getGlobBase("../shared/**")).toBe("../shared");
});
it("extracts base from relative directory glob pattern", () => {
expect(getGlobBase("./assets/*.txt")).toBe("./assets");
});
it("extracts base from nested directory glob pattern", () => {
expect(getGlobBase("files/nested/**/*.js")).toBe("files/nested");
});
it("returns current directory for top-level glob", () => {
expect(getGlobBase("**/*.js")).toBe(".");
});
it("returns current directory for star pattern", () => {
expect(getGlobBase("*.js")).toBe(".");
});
it("handles question mark wildcard", () => {
expect(getGlobBase("./src/?/*.ts")).toBe("./src");
});
it("handles bracket patterns", () => {
expect(getGlobBase("./src/[abc]/*.ts")).toBe("./src");
});
it("handles brace expansion patterns", () => {
expect(getGlobBase("./src/{a,b}/*.ts")).toBe("./src");
});
it("handles deeply nested patterns", () => {
expect(getGlobBase("a/b/c/d/**")).toBe("a/b/c/d");
});
});
describe("specific file paths without globs", () => {
it("returns parent directory for file in subdirectory", () => {
expect(getGlobBase("./config/settings.json")).toBe("./config");
});
it("returns parent directory for file in nested subdirectory", () => {
expect(getGlobBase("../shared/utils/helpers.ts")).toBe("../shared/utils");
});
it("returns current directory for single-part filename", () => {
expect(getGlobBase("file.txt")).toBe(".");
});
it("returns current directory for filename starting with dot", () => {
expect(getGlobBase(".env")).toBe(".");
});
it("returns parent directory for explicit relative path to file", () => {
expect(getGlobBase("./file.txt")).toBe(".");
});
it("returns parent directories for parent reference to file", () => {
expect(getGlobBase("../file.txt")).toBe("..");
});
it("handles multiple parent references", () => {
expect(getGlobBase("../../config/app.json")).toBe("../../config");
});
});
describe("edge cases", () => {
it("returns current directory for empty string", () => {
expect(getGlobBase("")).toBe(".");
});
it("handles Windows-style backslashes", () => {
expect(getGlobBase("..\\shared\\**")).toBe("../shared");
});
it("handles mixed forward and back slashes", () => {
expect(getGlobBase("../shared\\nested/**")).toBe("../shared/nested");
});
it("handles patterns with only dots", () => {
expect(getGlobBase("./")).toBe(".");
});
it("handles parent directory reference only", () => {
expect(getGlobBase("../")).toBe("..");
});
});
});