Commit 4c3b260e authored by Hiroshige Hayashizaki's avatar Hiroshige Hayashizaki Committed by Chromium LUCI CQ

[Import Maps] Add tests for non-ASCII characters

As the non-bare keys and resolution results of
specifier maps are normalized (i.e. serialized URLs),
raw and percent-encoded non-ASCII strings are
considered equal (as both of them are
percent-encoded after serialization).

This CL tests that raw and percent-encoded versions of
non-ASCII characters are:

- Considered equal in non-bare specifier keys,
- Considered equal in checking backtracking, and
- Not considered equal in bare specifier keys.

For consistency, this CL also adds some backtracking tests
that don't involve non-ASCII characters but use
the same patterns of added non-ASCII tests.

Bug: 848607, https://github.com/WICG/import-maps/issues/207
Change-Id: I6c8ae478da2fcbe0f6df03a608dabdad60644ea1
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2573422
Commit-Queue: Hiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Reviewed-by: default avatarDomenic Denicola <domenic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#835824}
parent f04e32af
......@@ -8,7 +8,9 @@
"lodash-dotdot": "../node_modules/lodash-es/lodash.js",
"lodash-dotdot/": "../node_modules/lodash-es/",
"mapped/": "https://example.com/",
"mapped/path/": "https://github.com/WICG/import-maps/issues/207/"
"mapped/path/": "https://github.com/WICG/import-maps/issues/207/",
"mapped/non-ascii-1/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-2/": "https://example.com/きつね/"
}
},
"importMapBaseURL": "https://example.com/app/index.html",
......@@ -46,11 +48,23 @@
"mapped/path": "https://example.com/path",
"mapped/path/": "https://github.com/WICG/import-maps/issues/207/",
"mapped/path/..": null,
"mapped/path/../path/": null,
"mapped/path/../207": null,
"mapped/path/../207/": "https://github.com/WICG/import-maps/issues/207/",
"mapped/path//": null,
"mapped/path/WICG/import-maps/issues/207/": "https://github.com/WICG/import-maps/issues/207/WICG/import-maps/issues/207/",
"mapped/path//WICG/import-maps/issues/207/": "https://github.com/WICG/import-maps/issues/207/",
"mapped/path/../backtrack": null,
"mapped/path/../../backtrack": null,
"mapped/path/../../../backtrack": null,
"moment/../backtrack": null,
"moment/..": null
"moment/..": null,
"mapped/non-ascii-1/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-1/../%E3%81%8D%E3%81%A4%E3%81%AD/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-1/../きつね/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-2/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-2/../%E3%81%8D%E3%81%A4%E3%81%AD/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/",
"mapped/non-ascii-2/../きつね/": "https://example.com/%E3%81%8D%E3%81%A4%E3%81%AD/"
}
}
}
......
......@@ -8,7 +8,11 @@
"..": "/lib/dotdot.mjs",
"..\\": "/lib/dotdotbackslash.mjs",
"%2E": "/lib/percent2e.mjs",
"%2F": "/lib/percent2f.mjs"
"%2F": "/lib/percent2f.mjs",
"https://map.example/%E3%81%8D%E3%81%A4%E3%81%AD/": "/a/",
"https://map.example/きつね/fox/": "/b/",
"%E3%81%8D%E3%81%A4%E3%81%AD/": "/c/",
"きつね/fox/": "/d/"
}
},
"importMapBaseURL": "https://example.com/app/index.html",
......@@ -38,6 +42,30 @@
"expectedResults": {
"only-slash": null
}
},
"URL-like specifiers are normalized": {
"expectedResults": {
"https://map.example/%E3%81%8D%E3%81%A4%E3%81%AD/": "https://example.com/a/",
"https://map.example/%E3%81%8D%E3%81%A4%E3%81%AD/bar": "https://example.com/a/bar",
"https://map.example/%E3%81%8D%E3%81%A4%E3%81%AD/fox/": "https://example.com/b/",
"https://map.example/%E3%81%8D%E3%81%A4%E3%81%AD/fox/bar": "https://example.com/b/bar",
"https://map.example/きつね/": "https://example.com/a/",
"https://map.example/きつね/bar": "https://example.com/a/bar",
"https://map.example/きつね/fox/": "https://example.com/b/",
"https://map.example/きつね/fox/bar": "https://example.com/b/bar"
}
},
"Bare specifiers are not normalized": {
"expectedResults": {
"%E3%81%8D%E3%81%A4%E3%81%AD/": "https://example.com/c/",
"%E3%81%8D%E3%81%A4%E3%81%AD/bar": "https://example.com/c/bar",
"%E3%81%8D%E3%81%A4%E3%81%AD/fox/": "https://example.com/c/fox/",
"%E3%81%8D%E3%81%A4%E3%81%AD/fox/bar": "https://example.com/c/fox/bar",
"きつね/": null,
"きつね/bar": null,
"きつね/fox/": "https://example.com/d/",
"きつね/fox/bar": "https://example.com/d/bar"
}
}
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment