-
Notifications
You must be signed in to change notification settings - Fork 144
Expand file tree
/
Copy pathglob.spec.ts
More file actions
124 lines (103 loc) · 3.19 KB
/
glob.spec.ts
File metadata and controls
124 lines (103 loc) · 3.19 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
import { globToRegExp, isBalancedCurlyBrackets, isValidGlobExpression } from "./glob";
describe("glob functions", () => {
describe("globToRegExp()", () => {
it("glob = <empty>", () => {
expect(globToRegExp("")).toBe("");
});
it("glob = abc", () => {
expect(globToRegExp("abc")).toBe("abc");
});
it("glob = foo=bar", () => {
expect(globToRegExp("foo=bar")).toBe("foo=bar");
});
it("glob = *", () => {
expect(globToRegExp("*")).toBe(".*");
});
it("glob = /*", () => {
expect(globToRegExp("/*")).toBe("\\/.*");
});
it("glob = /foo/*", () => {
expect(globToRegExp("/foo/*")).toBe("\\/foo\\/.*");
});
it("glob = /*.{ext}", () => {
expect(globToRegExp("/*.{ext}")).toBe("\\/.*\\.(ext)");
});
it("glob = /*.{ext,gif}", () => {
expect(globToRegExp("/*.{ext,gif}")).toBe("\\/.*\\.(ext|gif)");
});
it("glob = /foo/*.{ext,gif}", () => {
expect(globToRegExp("/foo/*.{ext,gif}")).toBe("\\/foo\\/.*\\.(ext|gif)");
});
it("glob = {foo,bar}.json", () => {
expect(globToRegExp("{foo,bar}.json")).toBe("(foo|bar)\\.json");
});
it("glob = /foo*", () => {
expect(globToRegExp("/foo*")).toBe("\\/foo.*");
});
});
// describe isValidGlobExpression
describe("isValidGlobExpression()", () => {
// valid expressions
["*", "/*", "/foo/*", "/foo/*.ext", "/*.ext", "*.ext", "/foo/*.ext", "/foo/*.{ext}", "/foo/*.{ext,ext}"].forEach((glob) => {
describe("should be TRUE for the following values", () => {
it(`glob = ${glob}`, () => {
expect(isValidGlobExpression(glob)).toBe(true);
});
});
});
// invalid expressions
[
undefined,
"",
"*.*",
"**.*",
"**.**",
"**",
"*/*",
"*/*.ext",
"*.ext/*",
"*/*.ext*",
"*.ext/*.ext",
"/blog/*/management",
"/foo/*.{ext,,,,}",
"/foo/*.{ext,",
"/foo/*.ext,}",
"/foo/*.ext}",
"/foo/*.{}",
"/foo/*.",
"/foo/.",
].forEach((glob) => {
describe("should be FALSE for the following values", () => {
it(`glob = ${glob}`, () => {
expect(isValidGlobExpression(glob)).toBe(false);
});
});
});
});
describe("isBalancedCurlyBrackets()", () => {
it("should be true for {}", () => {
expect(isBalancedCurlyBrackets("{,,,}")).toBe(true);
});
it("should be true for {}{}{}", () => {
expect(isBalancedCurlyBrackets("{,,,}{,,,}{,,,}")).toBe(true);
});
it("should be true for {{}}", () => {
expect(isBalancedCurlyBrackets("{,,,{,,,},,,}")).toBe(true);
});
it("should be false for }{", () => {
expect(isBalancedCurlyBrackets("},,,{")).toBe(false);
});
it("should be false for }{}{", () => {
expect(isBalancedCurlyBrackets("},,,{,,,},,,{")).toBe(false);
});
it("should be false for {", () => {
expect(isBalancedCurlyBrackets("{,,,")).toBe(false);
});
it("should be false for }", () => {
expect(isBalancedCurlyBrackets(",,,}")).toBe(false);
});
it("should be false for {}}{{}", () => {
expect(isBalancedCurlyBrackets("{,,,}},,,{{,,,}")).toBe(false);
});
});
});