mirror of
https://github.com/denoland/deno.git
synced 2025-10-02 23:24:37 +00:00
migrate deno_path to deno_std (denoland/deno_std#26)
Previously https://github.com/zhmushan/deno_path
Original: 1a35f9daf5
This commit is contained in:
parent
3c8f564ab8
commit
2d58da520f
16 changed files with 2292 additions and 3 deletions
124
path/join_test.ts
Normal file
124
path/join_test.ts
Normal file
|
@ -0,0 +1,124 @@
|
|||
import { test, assertEqual } from "https://deno.land/x/testing/testing.ts";
|
||||
import * as path from "./index";
|
||||
|
||||
const backslashRE = /\\/g;
|
||||
|
||||
const joinTests =
|
||||
// arguments result
|
||||
[
|
||||
[[".", "x/b", "..", "/b/c.js"], "x/b/c.js"],
|
||||
[[], "."],
|
||||
[["/.", "x/b", "..", "/b/c.js"], "/x/b/c.js"],
|
||||
[["/foo", "../../../bar"], "/bar"],
|
||||
[["foo", "../../../bar"], "../../bar"],
|
||||
[["foo/", "../../../bar"], "../../bar"],
|
||||
[["foo/x", "../../../bar"], "../bar"],
|
||||
[["foo/x", "./bar"], "foo/x/bar"],
|
||||
[["foo/x/", "./bar"], "foo/x/bar"],
|
||||
[["foo/x/", ".", "bar"], "foo/x/bar"],
|
||||
[["./"], "./"],
|
||||
[[".", "./"], "./"],
|
||||
[[".", ".", "."], "."],
|
||||
[[".", "./", "."], "."],
|
||||
[[".", "/./", "."], "."],
|
||||
[[".", "/////./", "."], "."],
|
||||
[["."], "."],
|
||||
[["", "."], "."],
|
||||
[["", "foo"], "foo"],
|
||||
[["foo", "/bar"], "foo/bar"],
|
||||
[["", "/foo"], "/foo"],
|
||||
[["", "", "/foo"], "/foo"],
|
||||
[["", "", "foo"], "foo"],
|
||||
[["foo", ""], "foo"],
|
||||
[["foo/", ""], "foo/"],
|
||||
[["foo", "", "/bar"], "foo/bar"],
|
||||
[["./", "..", "/foo"], "../foo"],
|
||||
[["./", "..", "..", "/foo"], "../../foo"],
|
||||
[[".", "..", "..", "/foo"], "../../foo"],
|
||||
[["", "..", "..", "/foo"], "../../foo"],
|
||||
[["/"], "/"],
|
||||
[["/", "."], "/"],
|
||||
[["/", ".."], "/"],
|
||||
[["/", "..", ".."], "/"],
|
||||
[[""], "."],
|
||||
[["", ""], "."],
|
||||
[[" /foo"], " /foo"],
|
||||
[[" ", "foo"], " /foo"],
|
||||
[[" ", "."], " "],
|
||||
[[" ", "/"], " /"],
|
||||
[[" ", ""], " "],
|
||||
[["/", "foo"], "/foo"],
|
||||
[["/", "/foo"], "/foo"],
|
||||
[["/", "//foo"], "/foo"],
|
||||
[["/", "", "/foo"], "/foo"],
|
||||
[["", "/", "foo"], "/foo"],
|
||||
[["", "/", "/foo"], "/foo"]
|
||||
];
|
||||
|
||||
// Windows-specific join tests
|
||||
const windowsJoinTests = [
|
||||
// arguments result
|
||||
// UNC path expected
|
||||
[["//foo/bar"], "\\\\foo\\bar\\"],
|
||||
[["\\/foo/bar"], "\\\\foo\\bar\\"],
|
||||
[["\\\\foo/bar"], "\\\\foo\\bar\\"],
|
||||
// UNC path expected - server and share separate
|
||||
[["//foo", "bar"], "\\\\foo\\bar\\"],
|
||||
[["//foo/", "bar"], "\\\\foo\\bar\\"],
|
||||
[["//foo", "/bar"], "\\\\foo\\bar\\"],
|
||||
// UNC path expected - questionable
|
||||
[["//foo", "", "bar"], "\\\\foo\\bar\\"],
|
||||
[["//foo/", "", "bar"], "\\\\foo\\bar\\"],
|
||||
[["//foo/", "", "/bar"], "\\\\foo\\bar\\"],
|
||||
// UNC path expected - even more questionable
|
||||
[["", "//foo", "bar"], "\\\\foo\\bar\\"],
|
||||
[["", "//foo/", "bar"], "\\\\foo\\bar\\"],
|
||||
[["", "//foo/", "/bar"], "\\\\foo\\bar\\"],
|
||||
// No UNC path expected (no double slash in first component)
|
||||
[["\\", "foo/bar"], "\\foo\\bar"],
|
||||
[["\\", "/foo/bar"], "\\foo\\bar"],
|
||||
[["", "/", "/foo/bar"], "\\foo\\bar"],
|
||||
// No UNC path expected (no non-slashes in first component -
|
||||
// questionable)
|
||||
[["//", "foo/bar"], "\\foo\\bar"],
|
||||
[["//", "/foo/bar"], "\\foo\\bar"],
|
||||
[["\\\\", "/", "/foo/bar"], "\\foo\\bar"],
|
||||
[["//"], "\\"],
|
||||
// No UNC path expected (share name missing - questionable).
|
||||
[["//foo"], "\\foo"],
|
||||
[["//foo/"], "\\foo\\"],
|
||||
[["//foo", "/"], "\\foo\\"],
|
||||
[["//foo", "", "/"], "\\foo\\"],
|
||||
// No UNC path expected (too many leading slashes - questionable)
|
||||
[["///foo/bar"], "\\foo\\bar"],
|
||||
[["////foo", "bar"], "\\foo\\bar"],
|
||||
[["\\\\\\/foo/bar"], "\\foo\\bar"],
|
||||
// Drive-relative vs drive-absolute paths. This merely describes the
|
||||
// status quo, rather than being obviously right
|
||||
[["c:"], "c:."],
|
||||
[["c:."], "c:."],
|
||||
[["c:", ""], "c:."],
|
||||
[["", "c:"], "c:."],
|
||||
[["c:.", "/"], "c:.\\"],
|
||||
[["c:.", "file"], "c:file"],
|
||||
[["c:", "/"], "c:\\"],
|
||||
[["c:", "file"], "c:\\file"]
|
||||
];
|
||||
|
||||
test(function join() {
|
||||
joinTests.forEach(function(p) {
|
||||
const actual = path.posix.join.apply(null, p[0]);
|
||||
assertEqual(actual, p[1]);
|
||||
});
|
||||
});
|
||||
|
||||
test(function joinWin32() {
|
||||
joinTests.forEach(function(p) {
|
||||
const actual = path.win32.join.apply(null, p[0]).replace(backslashRE, "/");
|
||||
assertEqual(actual, p[1]);
|
||||
});
|
||||
windowsJoinTests.forEach(function(p) {
|
||||
const actual = path.win32.join.apply(null, p[0]);
|
||||
assertEqual(actual, p[1]);
|
||||
});
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue