mirror of
https://github.com/servo/servo.git
synced 2025-08-14 09:55:35 +01:00
Update web-platform-tests to revision 5084587f6b05bf99ad09e7844be66dcc61070cdf
This commit is contained in:
parent
6d42d2f1e8
commit
7d1071a6a4
408 changed files with 8968 additions and 2608 deletions
|
@ -49,6 +49,87 @@ def read_script_metadata(f, regexp):
|
|||
yield (m.groups()[0], m.groups()[1])
|
||||
|
||||
|
||||
_any_variants = {
|
||||
b"default": {"longhand": {b"window", b"dedicatedworker"}},
|
||||
b"window": {"suffix": ".any.html"},
|
||||
b"serviceworker": {"force_https": True},
|
||||
b"sharedworker": {},
|
||||
b"dedicatedworker": {"suffix": ".any.worker.html"},
|
||||
b"worker": {"longhand": {b"dedicatedworker", b"sharedworker", b"serviceworker"}}
|
||||
}
|
||||
|
||||
|
||||
def get_any_variants(item):
|
||||
"""
|
||||
Returns a set of variants (bytestrings) defined by the given keyword.
|
||||
"""
|
||||
assert isinstance(item, binary_type), item
|
||||
assert not item.startswith(b"!"), item
|
||||
|
||||
variant = _any_variants.get(item, None)
|
||||
if variant is None:
|
||||
return set()
|
||||
|
||||
return variant.get("longhand", {item})
|
||||
|
||||
|
||||
def get_default_any_variants():
|
||||
"""
|
||||
Returns a set of variants (bytestrings) that will be used by default.
|
||||
"""
|
||||
return set(_any_variants[b"default"]["longhand"])
|
||||
|
||||
|
||||
def parse_variants(value):
|
||||
"""
|
||||
Returns a set of variants (bytestrings) defined by a comma-separated value.
|
||||
"""
|
||||
assert isinstance(value, binary_type), value
|
||||
|
||||
globals = get_default_any_variants()
|
||||
|
||||
for item in value.split(b","):
|
||||
item = item.strip()
|
||||
if item.startswith(b"!"):
|
||||
globals -= get_any_variants(item[1:])
|
||||
else:
|
||||
globals |= get_any_variants(item)
|
||||
|
||||
return globals
|
||||
|
||||
|
||||
def global_suffixes(value):
|
||||
"""
|
||||
Yields the relevant filename suffixes (strings) for the variants defined by
|
||||
the given comma-separated value.
|
||||
"""
|
||||
assert isinstance(value, binary_type), value
|
||||
|
||||
rv = set()
|
||||
|
||||
global_types = parse_variants(value)
|
||||
for global_type in global_types:
|
||||
variant = _any_variants[global_type]
|
||||
suffix = variant.get("suffix", ".any.%s.html" % global_type.decode("utf-8"))
|
||||
if variant.get("force_https", False):
|
||||
suffix = ".https" + suffix
|
||||
rv.add(suffix)
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
def global_variant_url(url, suffix):
|
||||
"""
|
||||
Returns a url created from the given url and suffix (all strings).
|
||||
"""
|
||||
url = url.replace(".any.", ".")
|
||||
# If the url must be loaded over https, ensure that it will have
|
||||
# the form .https.any.js
|
||||
if ".https." in url and suffix.startswith(".https."):
|
||||
url = url.replace(".https.", ".")
|
||||
return replace_end(url, ".js", suffix)
|
||||
|
||||
|
||||
class SourceFile(object):
|
||||
parsers = {"html":lambda x:html5lib.parse(x, treebuilder="etree"),
|
||||
"xhtml":lambda x:ElementTree.parse(x, XMLParser.XMLParser()),
|
||||
|
@ -370,11 +451,18 @@ class SourceFile(object):
|
|||
@cached_property
|
||||
def test_variants(self):
|
||||
rv = []
|
||||
for element in self.variant_nodes:
|
||||
if "content" in element.attrib:
|
||||
variant = element.attrib["content"]
|
||||
assert variant == "" or variant[0] in ["#", "?"]
|
||||
rv.append(variant)
|
||||
if self.ext == ".js":
|
||||
for (key, value) in self.script_metadata:
|
||||
if key == b"variant":
|
||||
rv.append(value.decode("utf-8"))
|
||||
else:
|
||||
for element in self.variant_nodes:
|
||||
if "content" in element.attrib:
|
||||
variant = element.attrib["content"]
|
||||
rv.append(variant)
|
||||
|
||||
for variant in rv:
|
||||
assert variant == "" or variant[0] in ["#", "?"], variant
|
||||
|
||||
if not rv:
|
||||
rv = [""]
|
||||
|
@ -510,22 +598,34 @@ class SourceFile(object):
|
|||
rv = VisualTest.item_type, [VisualTest(self, self.url)]
|
||||
|
||||
elif self.name_is_multi_global:
|
||||
rv = TestharnessTest.item_type, [
|
||||
TestharnessTest(self, replace_end(self.url, ".any.js", ".any.html"),
|
||||
timeout=self.timeout),
|
||||
TestharnessTest(self, replace_end(self.url, ".any.js", ".any.worker.html"),
|
||||
timeout=self.timeout),
|
||||
globals = b""
|
||||
for (key, value) in self.script_metadata:
|
||||
if key == b"global":
|
||||
globals = value
|
||||
break
|
||||
|
||||
tests = [
|
||||
TestharnessTest(self, global_variant_url(self.url, suffix) + variant, timeout=self.timeout)
|
||||
for suffix in sorted(global_suffixes(globals))
|
||||
for variant in self.test_variants
|
||||
]
|
||||
rv = TestharnessTest.item_type, tests
|
||||
|
||||
elif self.name_is_worker:
|
||||
rv = (TestharnessTest.item_type,
|
||||
[TestharnessTest(self, replace_end(self.url, ".worker.js", ".worker.html"),
|
||||
timeout=self.timeout)])
|
||||
test_url = replace_end(self.url, ".worker.js", ".worker.html")
|
||||
tests = [
|
||||
TestharnessTest(self, test_url + variant, timeout=self.timeout)
|
||||
for variant in self.test_variants
|
||||
]
|
||||
rv = TestharnessTest.item_type, tests
|
||||
|
||||
elif self.name_is_window:
|
||||
rv = (TestharnessTest.item_type,
|
||||
[TestharnessTest(self, replace_end(self.url, ".window.js", ".window.html"),
|
||||
timeout=self.timeout)])
|
||||
test_url = replace_end(self.url, ".window.js", ".window.html")
|
||||
tests = [
|
||||
TestharnessTest(self, test_url + variant, timeout=self.timeout)
|
||||
for variant in self.test_variants
|
||||
]
|
||||
rv = TestharnessTest.item_type, tests
|
||||
|
||||
elif self.name_is_webdriver:
|
||||
rv = WebdriverSpecTest.item_type, [WebdriverSpecTest(self, self.url,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue