• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1describe("unittests:: core paths", () => {
2    it("normalizeSlashes", () => {
3        assert.strictEqual(ts.normalizeSlashes("a"), "a");
4        assert.strictEqual(ts.normalizeSlashes("a/b"), "a/b");
5        assert.strictEqual(ts.normalizeSlashes("a\\b"), "a/b");
6        assert.strictEqual(ts.normalizeSlashes("\\\\server\\path"), "//server/path");
7    });
8    it("getRootLength", () => {
9        assert.strictEqual(ts.getRootLength("a"), 0);
10        assert.strictEqual(ts.getRootLength("/"), 1);
11        assert.strictEqual(ts.getRootLength("/path"), 1);
12        assert.strictEqual(ts.getRootLength("c:"), 2);
13        assert.strictEqual(ts.getRootLength("c:d"), 0);
14        assert.strictEqual(ts.getRootLength("c:/"), 3);
15        assert.strictEqual(ts.getRootLength("c:\\"), 3);
16        assert.strictEqual(ts.getRootLength("//server"), 8);
17        assert.strictEqual(ts.getRootLength("//server/share"), 9);
18        assert.strictEqual(ts.getRootLength("\\\\server"), 8);
19        assert.strictEqual(ts.getRootLength("\\\\server\\share"), 9);
20        assert.strictEqual(ts.getRootLength("file:///"), 8);
21        assert.strictEqual(ts.getRootLength("file:///path"), 8);
22        assert.strictEqual(ts.getRootLength("file:///c:"), 10);
23        assert.strictEqual(ts.getRootLength("file:///c:d"), 8);
24        assert.strictEqual(ts.getRootLength("file:///c:/path"), 11);
25        assert.strictEqual(ts.getRootLength("file:///c%3a"), 12);
26        assert.strictEqual(ts.getRootLength("file:///c%3ad"), 8);
27        assert.strictEqual(ts.getRootLength("file:///c%3a/path"), 13);
28        assert.strictEqual(ts.getRootLength("file:///c%3A"), 12);
29        assert.strictEqual(ts.getRootLength("file:///c%3Ad"), 8);
30        assert.strictEqual(ts.getRootLength("file:///c%3A/path"), 13);
31        assert.strictEqual(ts.getRootLength("file://localhost"), 16);
32        assert.strictEqual(ts.getRootLength("file://localhost/"), 17);
33        assert.strictEqual(ts.getRootLength("file://localhost/path"), 17);
34        assert.strictEqual(ts.getRootLength("file://localhost/c:"), 19);
35        assert.strictEqual(ts.getRootLength("file://localhost/c:d"), 17);
36        assert.strictEqual(ts.getRootLength("file://localhost/c:/path"), 20);
37        assert.strictEqual(ts.getRootLength("file://localhost/c%3a"), 21);
38        assert.strictEqual(ts.getRootLength("file://localhost/c%3ad"), 17);
39        assert.strictEqual(ts.getRootLength("file://localhost/c%3a/path"), 22);
40        assert.strictEqual(ts.getRootLength("file://localhost/c%3A"), 21);
41        assert.strictEqual(ts.getRootLength("file://localhost/c%3Ad"), 17);
42        assert.strictEqual(ts.getRootLength("file://localhost/c%3A/path"), 22);
43        assert.strictEqual(ts.getRootLength("file://server"), 13);
44        assert.strictEqual(ts.getRootLength("file://server/"), 14);
45        assert.strictEqual(ts.getRootLength("file://server/path"), 14);
46        assert.strictEqual(ts.getRootLength("file://server/c:"), 14);
47        assert.strictEqual(ts.getRootLength("file://server/c:d"), 14);
48        assert.strictEqual(ts.getRootLength("file://server/c:/d"), 14);
49        assert.strictEqual(ts.getRootLength("file://server/c%3a"), 14);
50        assert.strictEqual(ts.getRootLength("file://server/c%3ad"), 14);
51        assert.strictEqual(ts.getRootLength("file://server/c%3a/d"), 14);
52        assert.strictEqual(ts.getRootLength("file://server/c%3A"), 14);
53        assert.strictEqual(ts.getRootLength("file://server/c%3Ad"), 14);
54        assert.strictEqual(ts.getRootLength("file://server/c%3A/d"), 14);
55        assert.strictEqual(ts.getRootLength("http://server"), 13);
56        assert.strictEqual(ts.getRootLength("http://server/path"), 14);
57    });
58    it("isUrl", () => {
59        assert.isFalse(ts.isUrl("a"));
60        assert.isFalse(ts.isUrl("/"));
61        assert.isFalse(ts.isUrl("c:"));
62        assert.isFalse(ts.isUrl("c:d"));
63        assert.isFalse(ts.isUrl("c:/"));
64        assert.isFalse(ts.isUrl("c:\\"));
65        assert.isFalse(ts.isUrl("//server"));
66        assert.isFalse(ts.isUrl("//server/share"));
67        assert.isFalse(ts.isUrl("\\\\server"));
68        assert.isFalse(ts.isUrl("\\\\server\\share"));
69        assert.isTrue(ts.isUrl("file:///path"));
70        assert.isTrue(ts.isUrl("file:///c:"));
71        assert.isTrue(ts.isUrl("file:///c:d"));
72        assert.isTrue(ts.isUrl("file:///c:/path"));
73        assert.isTrue(ts.isUrl("file://server"));
74        assert.isTrue(ts.isUrl("file://server/path"));
75        assert.isTrue(ts.isUrl("http://server"));
76        assert.isTrue(ts.isUrl("http://server/path"));
77    });
78    it("isRootedDiskPath", () => {
79        assert.isFalse(ts.isRootedDiskPath("a"));
80        assert.isTrue(ts.isRootedDiskPath("/"));
81        assert.isTrue(ts.isRootedDiskPath("c:"));
82        assert.isFalse(ts.isRootedDiskPath("c:d"));
83        assert.isTrue(ts.isRootedDiskPath("c:/"));
84        assert.isTrue(ts.isRootedDiskPath("c:\\"));
85        assert.isTrue(ts.isRootedDiskPath("//server"));
86        assert.isTrue(ts.isRootedDiskPath("//server/share"));
87        assert.isTrue(ts.isRootedDiskPath("\\\\server"));
88        assert.isTrue(ts.isRootedDiskPath("\\\\server\\share"));
89        assert.isFalse(ts.isRootedDiskPath("file:///path"));
90        assert.isFalse(ts.isRootedDiskPath("file:///c:"));
91        assert.isFalse(ts.isRootedDiskPath("file:///c:d"));
92        assert.isFalse(ts.isRootedDiskPath("file:///c:/path"));
93        assert.isFalse(ts.isRootedDiskPath("file://server"));
94        assert.isFalse(ts.isRootedDiskPath("file://server/path"));
95        assert.isFalse(ts.isRootedDiskPath("http://server"));
96        assert.isFalse(ts.isRootedDiskPath("http://server/path"));
97    });
98    it("getDirectoryPath", () => {
99        assert.strictEqual(ts.getDirectoryPath(""), "");
100        assert.strictEqual(ts.getDirectoryPath("a"), "");
101        assert.strictEqual(ts.getDirectoryPath("a/b"), "a");
102        assert.strictEqual(ts.getDirectoryPath("/"), "/");
103        assert.strictEqual(ts.getDirectoryPath("/a"), "/");
104        assert.strictEqual(ts.getDirectoryPath("/a/"), "/");
105        assert.strictEqual(ts.getDirectoryPath("/a/b"), "/a");
106        assert.strictEqual(ts.getDirectoryPath("/a/b/"), "/a");
107        assert.strictEqual(ts.getDirectoryPath("c:"), "c:");
108        assert.strictEqual(ts.getDirectoryPath("c:d"), "");
109        assert.strictEqual(ts.getDirectoryPath("c:/"), "c:/");
110        assert.strictEqual(ts.getDirectoryPath("c:/path"), "c:/");
111        assert.strictEqual(ts.getDirectoryPath("c:/path/"), "c:/");
112        assert.strictEqual(ts.getDirectoryPath("//server"), "//server");
113        assert.strictEqual(ts.getDirectoryPath("//server/"), "//server/");
114        assert.strictEqual(ts.getDirectoryPath("//server/share"), "//server/");
115        assert.strictEqual(ts.getDirectoryPath("//server/share/"), "//server/");
116        assert.strictEqual(ts.getDirectoryPath("\\\\server"), "//server");
117        assert.strictEqual(ts.getDirectoryPath("\\\\server\\"), "//server/");
118        assert.strictEqual(ts.getDirectoryPath("\\\\server\\share"), "//server/");
119        assert.strictEqual(ts.getDirectoryPath("\\\\server\\share\\"), "//server/");
120        assert.strictEqual(ts.getDirectoryPath("file:///"), "file:///");
121        assert.strictEqual(ts.getDirectoryPath("file:///path"), "file:///");
122        assert.strictEqual(ts.getDirectoryPath("file:///path/"), "file:///");
123        assert.strictEqual(ts.getDirectoryPath("file:///c:"), "file:///c:");
124        assert.strictEqual(ts.getDirectoryPath("file:///c:d"), "file:///");
125        assert.strictEqual(ts.getDirectoryPath("file:///c:/"), "file:///c:/");
126        assert.strictEqual(ts.getDirectoryPath("file:///c:/path"), "file:///c:/");
127        assert.strictEqual(ts.getDirectoryPath("file:///c:/path/"), "file:///c:/");
128        assert.strictEqual(ts.getDirectoryPath("file://server"), "file://server");
129        assert.strictEqual(ts.getDirectoryPath("file://server/"), "file://server/");
130        assert.strictEqual(ts.getDirectoryPath("file://server/path"), "file://server/");
131        assert.strictEqual(ts.getDirectoryPath("file://server/path/"), "file://server/");
132        assert.strictEqual(ts.getDirectoryPath("http://server"), "http://server");
133        assert.strictEqual(ts.getDirectoryPath("http://server/"), "http://server/");
134        assert.strictEqual(ts.getDirectoryPath("http://server/path"), "http://server/");
135        assert.strictEqual(ts.getDirectoryPath("http://server/path/"), "http://server/");
136    });
137    it("getBaseFileName", () => {
138        assert.strictEqual(ts.getBaseFileName(""), "");
139        assert.strictEqual(ts.getBaseFileName("a"), "a");
140        assert.strictEqual(ts.getBaseFileName("a/"), "a");
141        assert.strictEqual(ts.getBaseFileName("/"), "");
142        assert.strictEqual(ts.getBaseFileName("/a"), "a");
143        assert.strictEqual(ts.getBaseFileName("/a/"), "a");
144        assert.strictEqual(ts.getBaseFileName("/a/b"), "b");
145        assert.strictEqual(ts.getBaseFileName("c:"), "");
146        assert.strictEqual(ts.getBaseFileName("c:d"), "c:d");
147        assert.strictEqual(ts.getBaseFileName("c:/"), "");
148        assert.strictEqual(ts.getBaseFileName("c:\\"), "");
149        assert.strictEqual(ts.getBaseFileName("c:/path"), "path");
150        assert.strictEqual(ts.getBaseFileName("c:/path/"), "path");
151        assert.strictEqual(ts.getBaseFileName("//server"), "");
152        assert.strictEqual(ts.getBaseFileName("//server/"), "");
153        assert.strictEqual(ts.getBaseFileName("//server/share"), "share");
154        assert.strictEqual(ts.getBaseFileName("//server/share/"), "share");
155        assert.strictEqual(ts.getBaseFileName("file:///"), "");
156        assert.strictEqual(ts.getBaseFileName("file:///path"), "path");
157        assert.strictEqual(ts.getBaseFileName("file:///path/"), "path");
158        assert.strictEqual(ts.getBaseFileName("file:///c:"), "");
159        assert.strictEqual(ts.getBaseFileName("file:///c:/"), "");
160        assert.strictEqual(ts.getBaseFileName("file:///c:d"), "c:d");
161        assert.strictEqual(ts.getBaseFileName("file:///c:/d"), "d");
162        assert.strictEqual(ts.getBaseFileName("file:///c:/d/"), "d");
163        assert.strictEqual(ts.getBaseFileName("http://server"), "");
164        assert.strictEqual(ts.getBaseFileName("http://server/"), "");
165        assert.strictEqual(ts.getBaseFileName("http://server/a"), "a");
166        assert.strictEqual(ts.getBaseFileName("http://server/a/"), "a");
167        assert.strictEqual(ts.getBaseFileName("/path/a.ext", ".ext", /*ignoreCase*/ false), "a");
168        assert.strictEqual(ts.getBaseFileName("/path/a.ext", ".EXT", /*ignoreCase*/ true), "a");
169        assert.strictEqual(ts.getBaseFileName("/path/a.ext", "ext", /*ignoreCase*/ false), "a");
170        assert.strictEqual(ts.getBaseFileName("/path/a.b", ".ext", /*ignoreCase*/ false), "a.b");
171        assert.strictEqual(ts.getBaseFileName("/path/a.b", [".b", ".c"], /*ignoreCase*/ false), "a");
172        assert.strictEqual(ts.getBaseFileName("/path/a.c", [".b", ".c"], /*ignoreCase*/ false), "a");
173        assert.strictEqual(ts.getBaseFileName("/path/a.d", [".b", ".c"], /*ignoreCase*/ false), "a.d");
174    });
175    it("getAnyExtensionFromPath", () => {
176        assert.strictEqual(ts.getAnyExtensionFromPath(""), "");
177        assert.strictEqual(ts.getAnyExtensionFromPath(".ext"), ".ext");
178        assert.strictEqual(ts.getAnyExtensionFromPath("a.ext"), ".ext");
179        assert.strictEqual(ts.getAnyExtensionFromPath("/a.ext"), ".ext");
180        assert.strictEqual(ts.getAnyExtensionFromPath("a.ext/"), ".ext");
181        assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", ".ext", /*ignoreCase*/ false), ".ext");
182        assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", ".EXT", /*ignoreCase*/ true), ".ext");
183        assert.strictEqual(ts.getAnyExtensionFromPath("a.ext", "ext", /*ignoreCase*/ false), ".ext");
184        assert.strictEqual(ts.getAnyExtensionFromPath("a.b", ".ext", /*ignoreCase*/ false), "");
185        assert.strictEqual(ts.getAnyExtensionFromPath("a.b", [".b", ".c"], /*ignoreCase*/ false), ".b");
186        assert.strictEqual(ts.getAnyExtensionFromPath("a.c", [".b", ".c"], /*ignoreCase*/ false), ".c");
187        assert.strictEqual(ts.getAnyExtensionFromPath("a.d", [".b", ".c"], /*ignoreCase*/ false), "");
188    });
189    it("getPathComponents", () => {
190        assert.deepEqual(ts.getPathComponents(""), [""]);
191        assert.deepEqual(ts.getPathComponents("a"), ["", "a"]);
192        assert.deepEqual(ts.getPathComponents("./a"), ["", ".", "a"]);
193        assert.deepEqual(ts.getPathComponents("/"), ["/"]);
194        assert.deepEqual(ts.getPathComponents("/a"), ["/", "a"]);
195        assert.deepEqual(ts.getPathComponents("/a/"), ["/", "a"]);
196        assert.deepEqual(ts.getPathComponents("c:"), ["c:"]);
197        assert.deepEqual(ts.getPathComponents("c:d"), ["", "c:d"]);
198        assert.deepEqual(ts.getPathComponents("c:/"), ["c:/"]);
199        assert.deepEqual(ts.getPathComponents("c:/path"), ["c:/", "path"]);
200        assert.deepEqual(ts.getPathComponents("//server"), ["//server"]);
201        assert.deepEqual(ts.getPathComponents("//server/"), ["//server/"]);
202        assert.deepEqual(ts.getPathComponents("//server/share"), ["//server/", "share"]);
203        assert.deepEqual(ts.getPathComponents("file:///"), ["file:///"]);
204        assert.deepEqual(ts.getPathComponents("file:///path"), ["file:///", "path"]);
205        assert.deepEqual(ts.getPathComponents("file:///c:"), ["file:///c:"]);
206        assert.deepEqual(ts.getPathComponents("file:///c:d"), ["file:///", "c:d"]);
207        assert.deepEqual(ts.getPathComponents("file:///c:/"), ["file:///c:/"]);
208        assert.deepEqual(ts.getPathComponents("file:///c:/path"), ["file:///c:/", "path"]);
209        assert.deepEqual(ts.getPathComponents("file://server"), ["file://server"]);
210        assert.deepEqual(ts.getPathComponents("file://server/"), ["file://server/"]);
211        assert.deepEqual(ts.getPathComponents("file://server/path"), ["file://server/", "path"]);
212        assert.deepEqual(ts.getPathComponents("http://server"), ["http://server"]);
213        assert.deepEqual(ts.getPathComponents("http://server/"), ["http://server/"]);
214        assert.deepEqual(ts.getPathComponents("http://server/path"), ["http://server/", "path"]);
215    });
216    it("reducePathComponents", () => {
217        assert.deepEqual(ts.reducePathComponents([]), []);
218        assert.deepEqual(ts.reducePathComponents([""]), [""]);
219        assert.deepEqual(ts.reducePathComponents(["", "."]), [""]);
220        assert.deepEqual(ts.reducePathComponents(["", ".", "a"]), ["", "a"]);
221        assert.deepEqual(ts.reducePathComponents(["", "a", "."]), ["", "a"]);
222        assert.deepEqual(ts.reducePathComponents(["", ".."]), ["", ".."]);
223        assert.deepEqual(ts.reducePathComponents(["", "..", ".."]), ["", "..", ".."]);
224        assert.deepEqual(ts.reducePathComponents(["", "..", ".", ".."]), ["", "..", ".."]);
225        assert.deepEqual(ts.reducePathComponents(["", "a", ".."]), [""]);
226        assert.deepEqual(ts.reducePathComponents(["", "..", "a"]), ["", "..", "a"]);
227        assert.deepEqual(ts.reducePathComponents(["/"]), ["/"]);
228        assert.deepEqual(ts.reducePathComponents(["/", "."]), ["/"]);
229        assert.deepEqual(ts.reducePathComponents(["/", ".."]), ["/"]);
230        assert.deepEqual(ts.reducePathComponents(["/", "a", ".."]), ["/"]);
231    });
232    it("combinePaths", () => {
233        assert.strictEqual(ts.combinePaths("/", "/node_modules/@types"), "/node_modules/@types");
234        assert.strictEqual(ts.combinePaths("/a/..", ""), "/a/..");
235        assert.strictEqual(ts.combinePaths("/a/..", "b"), "/a/../b");
236        assert.strictEqual(ts.combinePaths("/a/..", "b/"), "/a/../b/");
237        assert.strictEqual(ts.combinePaths("/a/..", "/"), "/");
238        assert.strictEqual(ts.combinePaths("/a/..", "/b"), "/b");
239    });
240    it("resolvePath", () => {
241        assert.strictEqual(ts.resolvePath(""), "");
242        assert.strictEqual(ts.resolvePath("."), "");
243        assert.strictEqual(ts.resolvePath("./"), "");
244        assert.strictEqual(ts.resolvePath(".."), "..");
245        assert.strictEqual(ts.resolvePath("../"), "../");
246        assert.strictEqual(ts.resolvePath("/"), "/");
247        assert.strictEqual(ts.resolvePath("/."), "/");
248        assert.strictEqual(ts.resolvePath("/./"), "/");
249        assert.strictEqual(ts.resolvePath("/../"), "/");
250        assert.strictEqual(ts.resolvePath("/a"), "/a");
251        assert.strictEqual(ts.resolvePath("/a/"), "/a/");
252        assert.strictEqual(ts.resolvePath("/a/."), "/a");
253        assert.strictEqual(ts.resolvePath("/a/./"), "/a/");
254        assert.strictEqual(ts.resolvePath("/a/./b"), "/a/b");
255        assert.strictEqual(ts.resolvePath("/a/./b/"), "/a/b/");
256        assert.strictEqual(ts.resolvePath("/a/.."), "/");
257        assert.strictEqual(ts.resolvePath("/a/../"), "/");
258        assert.strictEqual(ts.resolvePath("/a/../b"), "/b");
259        assert.strictEqual(ts.resolvePath("/a/../b/"), "/b/");
260        assert.strictEqual(ts.resolvePath("/a/..", "b"), "/b");
261        assert.strictEqual(ts.resolvePath("/a/..", "/"), "/");
262        assert.strictEqual(ts.resolvePath("/a/..", "b/"), "/b/");
263        assert.strictEqual(ts.resolvePath("/a/..", "/b"), "/b");
264        assert.strictEqual(ts.resolvePath("/a/.", "b"), "/a/b");
265        assert.strictEqual(ts.resolvePath("/a/.", "."), "/a");
266        assert.strictEqual(ts.resolvePath("a", "b", "c"), "a/b/c");
267        assert.strictEqual(ts.resolvePath("a", "b", "/c"), "/c");
268        assert.strictEqual(ts.resolvePath("a", "b", "../c"), "a/c");
269    });
270    it("getPathRelativeTo", () => {
271        assert.strictEqual(ts.getRelativePathFromDirectory("/", "/", /*ignoreCase*/ false), "");
272        assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/a", /*ignoreCase*/ false), "");
273        assert.strictEqual(ts.getRelativePathFromDirectory("/a/", "/a", /*ignoreCase*/ false), "");
274        assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/", /*ignoreCase*/ false), "..");
275        assert.strictEqual(ts.getRelativePathFromDirectory("/a", "/b", /*ignoreCase*/ false), "../b");
276        assert.strictEqual(ts.getRelativePathFromDirectory("/a/b", "/b", /*ignoreCase*/ false), "../../b");
277        assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/b", /*ignoreCase*/ false), "../../../b");
278        assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/b/c", /*ignoreCase*/ false), "../../../b/c");
279        assert.strictEqual(ts.getRelativePathFromDirectory("/a/b/c", "/a/b", /*ignoreCase*/ false), "..");
280        assert.strictEqual(ts.getRelativePathFromDirectory("c:", "d:", /*ignoreCase*/ false), "d:/");
281        assert.strictEqual(ts.getRelativePathFromDirectory("file:///", "file:///", /*ignoreCase*/ false), "");
282        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///a", /*ignoreCase*/ false), "");
283        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/", "file:///a", /*ignoreCase*/ false), "");
284        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///", /*ignoreCase*/ false), "..");
285        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a", "file:///b", /*ignoreCase*/ false), "../b");
286        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b", "file:///b", /*ignoreCase*/ false), "../../b");
287        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///b", /*ignoreCase*/ false), "../../../b");
288        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///b/c", /*ignoreCase*/ false), "../../../b/c");
289        assert.strictEqual(ts.getRelativePathFromDirectory("file:///a/b/c", "file:///a/b", /*ignoreCase*/ false), "..");
290        assert.strictEqual(ts.getRelativePathFromDirectory("file:///c:", "file:///d:", /*ignoreCase*/ false), "file:///d:/");
291    });
292    it("toFileNameLowerCase", () => {
293        assert.strictEqual(
294            ts.toFileNameLowerCase("/user/UserName/projects/Project/file.ts"),
295            "/user/username/projects/project/file.ts"
296        );
297        assert.strictEqual(
298            ts.toFileNameLowerCase("/user/UserName/projects/projectß/file.ts"),
299            "/user/username/projects/projectß/file.ts"
300        );
301        assert.strictEqual(
302            ts.toFileNameLowerCase("/user/UserName/projectsproject/file.ts"),
303            "/user/username/projectsproject/file.ts"
304        );
305        assert.strictEqual(
306            ts.toFileNameLowerCase("/user/UserName/projects/ı/file.ts"),
307            "/user/username/projects/ı/file.ts"
308        );
309    });
310});
311