|
@@ -1,13 +1,141 @@
|
|
|
{
|
|
{
|
|
|
|
|
+ "comment": [
|
|
|
|
|
+ "## Tests for setters of https://url.spec.whatwg.org/#urlutils-members",
|
|
|
|
|
+ "",
|
|
|
|
|
+ "This file contains a JSON object.",
|
|
|
|
|
+ "Other than 'comment', each key is an attribute of the `URL` interface",
|
|
|
|
|
+ "defined in WHATWG’s URL Standard.",
|
|
|
|
|
+ "The values are arrays of test case objects for that attribute.",
|
|
|
|
|
+ "",
|
|
|
|
|
+ "To run a test case for the attribute `attr`:",
|
|
|
|
|
+ "",
|
|
|
|
|
+ "* Create a new `URL` object with the value for the 'href' key",
|
|
|
|
|
+ " the constructor single parameter. (Without a base URL.)",
|
|
|
|
|
+ " This must not throw.",
|
|
|
|
|
+ "* Set the attribute `attr` to (invoke its setter with)",
|
|
|
|
|
+ " with the value of for 'new_value' key.",
|
|
|
|
|
+ "* The value for the 'expected' key is another object.",
|
|
|
|
|
+ " For each `key` / `value` pair of that object,",
|
|
|
|
|
+ " get the attribute `key` (invoke its getter).",
|
|
|
|
|
+ " The returned string must be equal to `value`.",
|
|
|
|
|
+ "",
|
|
|
|
|
+ "Note: the 'href' setter is already covered by urltestdata.json."
|
|
|
|
|
+ ],
|
|
|
"protocol": [
|
|
"protocol": [
|
|
|
{
|
|
{
|
|
|
- "comment": "The empty scheme is not a valid scheme.",
|
|
|
|
|
- "href": "http://example.net",
|
|
|
|
|
|
|
+ "comment": "The empty string is not a valid scheme. Setter leaves the URL unchanged.",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
"new_value": "",
|
|
"new_value": "",
|
|
|
"expected": {
|
|
"expected": {
|
|
|
- "href": "http://example.net/",
|
|
|
|
|
|
|
+ "href": "a://example.net/",
|
|
|
|
|
+ "protocol": "a:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "b",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "b://example.net/",
|
|
|
|
|
+ "protocol": "b:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Upper-case ASCII is lower-cased",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "B",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "b://example.net/",
|
|
|
|
|
+ "protocol": "b:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Non-ASCII is rejected",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "é",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "a://example.net/",
|
|
|
|
|
+ "protocol": "a:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "No leading digit",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "0b",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "a://example.net/",
|
|
|
|
|
+ "protocol": "a:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "No leading punctuation",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "+b",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "a://example.net/",
|
|
|
|
|
+ "protocol": "a:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "bC0+-.",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "bc0+-.://example.net/",
|
|
|
|
|
+ "protocol": "bc0+-.:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Non-ASCII is rejected",
|
|
|
|
|
+ "href": "a://example.net",
|
|
|
|
|
+ "new_value": "bé",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "a://example.net/",
|
|
|
|
|
+ "protocol": "a:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Spec deviation: from special scheme to not is not problematic. https://github.com/whatwg/url/issues/104",
|
|
|
|
|
+ "href": "http://example.net",
|
|
|
|
|
+ "new_value": "b",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "b://example.net/",
|
|
|
|
|
+ "protocol": "b:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Cannot-be-a-base URL doesn’t have a host, but URL in a special scheme must.",
|
|
|
|
|
+ "href": "mailto:me@example.net",
|
|
|
|
|
+ "new_value": "http",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "mailto:me@example.net",
|
|
|
|
|
+ "protocol": "mailto:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Spec deviation: from non-special scheme with a host to special is not problematic. https://github.com/whatwg/url/issues/104",
|
|
|
|
|
+ "href": "ssh://me@example.net",
|
|
|
|
|
+ "new_value": "http",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "http://me@example.net/",
|
|
|
"protocol": "http:"
|
|
"protocol": "http:"
|
|
|
}
|
|
}
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Stuff after the first ':' is ignored",
|
|
|
|
|
+ "href": "http://example.net",
|
|
|
|
|
+ "new_value": "https:foo : bar",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "https://example.net/",
|
|
|
|
|
+ "protocol": "https:"
|
|
|
|
|
+ }
|
|
|
|
|
+ },
|
|
|
|
|
+ {
|
|
|
|
|
+ "comment": "Stuff after the first ':' is ignored",
|
|
|
|
|
+ "href": "data:text/html,<p>Test",
|
|
|
|
|
+ "new_value": "view-source+data:foo : bar",
|
|
|
|
|
+ "expected": {
|
|
|
|
|
+ "href": "view-source+data:text/html,<p>Test",
|
|
|
|
|
+ "protocol": "view-source+data:"
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
],
|
|
],
|
|
|
"username": [],
|
|
"username": [],
|