summaryrefslogtreecommitdiff
path: root/cli/js/tests/url_test.ts
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2020-05-04 19:32:54 +0100
committerGitHub <noreply@github.com>2020-05-04 14:32:54 -0400
commit8c509bd88517ebc92673d9da91e71a08868e830e (patch)
tree5c880d6bafb1b5f22d69b3f1cfc52bbd4ea63056 /cli/js/tests/url_test.ts
parent6c02b061ce157b9fc3d20f9bcace0bc6638290d3 (diff)
feat(URL): Support drive letters for file URLs on Windows (#5074)
refactor: Parse URLs more sequentially. This makes it easier to change matching behaviour depending on the protocol. fix: Fail when a host isn't given for certain protocols. fix: Convert back-slashes info forward-slashes.
Diffstat (limited to 'cli/js/tests/url_test.ts')
-rw-r--r--cli/js/tests/url_test.ts56
1 files changed, 56 insertions, 0 deletions
diff --git a/cli/js/tests/url_test.ts b/cli/js/tests/url_test.ts
index 6529bf055..5b403fb1c 100644
--- a/cli/js/tests/url_test.ts
+++ b/cli/js/tests/url_test.ts
@@ -132,6 +132,43 @@ unitTest(function urlSearchParamsReuse(): void {
assert(sp === url.searchParams, "Search params should be reused.");
});
+unitTest(function urlBackSlashes(): void {
+ const url = new URL(
+ "https:\\\\foo:bar@baz.qat:8000\\qux\\quux?foo=bar&baz=12#qat"
+ );
+ assertEquals(
+ url.href,
+ "https://foo:bar@baz.qat:8000/qux/quux?foo=bar&baz=12#qat"
+ );
+});
+
+unitTest(function urlRequireHost(): void {
+ assertEquals(new URL("file:///").href, "file:///");
+ assertThrows(() => {
+ new URL("ftp:///");
+ });
+ assertThrows(() => {
+ new URL("http:///");
+ });
+ assertThrows(() => {
+ new URL("https:///");
+ });
+ assertThrows(() => {
+ new URL("ws:///");
+ });
+ assertThrows(() => {
+ new URL("wss:///");
+ });
+});
+
+unitTest(function urlDriveLetter() {
+ assertEquals(
+ new URL("file:///C:").href,
+ Deno.build.os == "windows" ? "file:///C:/" : "file:///C:"
+ );
+ assertEquals(new URL("http://example.com/C:").href, "http://example.com/C:");
+});
+
unitTest(function urlBaseURL(): void {
const base = new URL(
"https://foo:bar@baz.qat:8000/qux/quux?foo=bar&baz=12#qat"
@@ -158,6 +195,25 @@ unitTest(function urlRelativeWithBase(): void {
assertEquals(new URL("../b", "file:///a/a/a").href, "file:///a/b");
});
+unitTest(function urlDriveLetterBase() {
+ assertEquals(
+ new URL("/b", "file:///C:/a/b").href,
+ Deno.build.os == "windows" ? "file:///C:/b" : "file:///b"
+ );
+ assertEquals(
+ new URL("D:", "file:///C:/a/b").href,
+ Deno.build.os == "windows" ? "file:///D:/" : "file:///C:/a/D:"
+ );
+ assertEquals(
+ new URL("/D:", "file:///C:/a/b").href,
+ Deno.build.os == "windows" ? "file:///D:/" : "file:///D:"
+ );
+ assertEquals(
+ new URL("D:/b", "file:///C:/a/b").href,
+ Deno.build.os == "windows" ? "file:///D:/b" : "file:///C:/a/D:/b"
+ );
+});
+
unitTest(function emptyBasePath(): void {
assertEquals(new URL("", "http://example.com").href, "http://example.com/");
});