Update web-platform-tests to revision b048002b012a8290b7dbdb0f0d685454e8837b6f

This commit is contained in:
WPT Sync Bot 2019-12-22 08:24:00 +00:00
parent 3e77a0ae09
commit 5bdea9564b
37 changed files with 901 additions and 43 deletions

View file

@ -7,7 +7,7 @@
expected: FAIL
[Opening a blob URL in a new window immediately before revoking it works.]
expected: TIMEOUT
expected: FAIL
[Opening a blob URL in a noopener about:blank window immediately before revoking it works.]
expected: FAIL

View file

@ -8331,6 +8331,18 @@
{}
]
],
"css/css-pseudo/spelling-error-002-manual.html": [
[
"css/css-pseudo/spelling-error-002-manual.html",
{}
]
],
"css/css-pseudo/spelling-error-003-manual.html": [
[
"css/css-pseudo/spelling-error-003-manual.html",
{}
]
],
"css/css-regions/animations/animations-001.html": [
[
"css/css-regions/animations/animations-001.html",
@ -139509,6 +139521,30 @@
{}
]
],
"css/css-position/position-sticky-large-top-2.tentative.html": [
[
"css/css-position/position-sticky-large-top-2.tentative.html",
[
[
"/css/css-position/position-sticky-large-top-2-ref.html",
"=="
]
],
{}
]
],
"css/css-position/position-sticky-large-top.tentative.html": [
[
"css/css-position/position-sticky-large-top.tentative.html",
[
[
"/css/css-position/position-sticky-large-top-ref.html",
"=="
]
],
{}
]
],
"css/css-position/position-sticky-nested-inline.html": [
[
"css/css-position/position-sticky-nested-inline.html",
@ -256124,6 +256160,12 @@
"css/css-position/position-sticky-inline-ref.html": [
[]
],
"css/css-position/position-sticky-large-top-2-ref.html": [
[]
],
"css/css-position/position-sticky-large-top-ref.html": [
[]
],
"css/css-position/position-sticky-nested-inline-ref.html": [
[]
],
@ -256349,6 +256391,9 @@
"css/css-pseudo/spelling-error-001-ref.html": [
[]
],
"css/css-pseudo/textpath-selection-011-ref.html": [
[]
],
"css/css-regions/META.yml": [
[]
],
@ -268382,6 +268427,9 @@
"domxpath/README.md": [
[]
],
"domxpath/helpers.js": [
[]
],
"domxpath/xml_xpath_tests.xml": [
[]
],
@ -341879,6 +341927,12 @@
{}
]
],
"domxpath/booleans.html": [
[
"domxpath/booleans.html",
{}
]
],
"domxpath/document.tentative.html": [
[
"domxpath/document.tentative.html",
@ -341891,6 +341945,18 @@
{}
]
],
"domxpath/fn-concat.html": [
[
"domxpath/fn-concat.html",
{}
]
],
"domxpath/fn-contains.html": [
[
"domxpath/fn-contains.html",
{}
]
],
"domxpath/fn-lang.html": [
[
"domxpath/fn-lang.html",
@ -341903,12 +341969,48 @@
{}
]
],
"domxpath/fn-starts-with.html": [
[
"domxpath/fn-starts-with.html",
{}
]
],
"domxpath/fn-substring-after.html": [
[
"domxpath/fn-substring-after.html",
{}
]
],
"domxpath/fn-substring-before.html": [
[
"domxpath/fn-substring-before.html",
{}
]
],
"domxpath/fn-substring.html": [
[
"domxpath/fn-substring.html",
{}
]
],
"domxpath/fn-translate.html": [
[
"domxpath/fn-translate.html",
{}
]
],
"domxpath/node-sets.html": [
[
"domxpath/node-sets.html",
{}
]
],
"domxpath/numbers.html": [
[
"domxpath/numbers.html",
{}
]
],
"domxpath/predicates.html": [
[
"domxpath/predicates.html",
@ -460110,6 +460212,12 @@
{}
]
],
"css/css-pseudo/textpath-selection-011.html": [
[
"css/css-pseudo/textpath-selection-011.html",
{}
]
],
"css/css-regions/elements/video-001.html": [
[
"css/css-regions/elements/video-001.html",
@ -589997,6 +590105,22 @@
"5b2d705e2d0721c072bedf1dcc489fae25b2014f",
"testharness"
],
"css/css-position/position-sticky-large-top-2-ref.html": [
"941047901df08a616888746d6c0332d69c9382f9",
"support"
],
"css/css-position/position-sticky-large-top-2.tentative.html": [
"1cf9c0dfb43b6bfd71c1496a5d7b3b9428d0c086",
"reftest"
],
"css/css-position/position-sticky-large-top-ref.html": [
"075551a6e856112bb12909684f718b0875fec690",
"support"
],
"css/css-position/position-sticky-large-top.tentative.html": [
"b00a0d139683717b57633e38bb9ce7f033833b65",
"reftest"
],
"css/css-position/position-sticky-left.html": [
"054cf10eabc256cde34fc738d9fcd7429946849c",
"testharness"
@ -590889,6 +591013,22 @@
"a71d6f0155e42ad0ebe33f6ea11aa5755201beaa",
"reftest"
],
"css/css-pseudo/spelling-error-002-manual.html": [
"88fa97038ce0a5791c733cbc50926e4447440259",
"manual"
],
"css/css-pseudo/spelling-error-003-manual.html": [
"559a4fe092ebaa72e31e5a07c38abcc0e6ca6122",
"manual"
],
"css/css-pseudo/textpath-selection-011-ref.html": [
"d9ba940518e121eeb0e9701ccd4e36772fdfa786",
"support"
],
"css/css-pseudo/textpath-selection-011.html": [
"2e42c6be8fbcfc756c578986517efc0b1739d1f3",
"visual"
],
"css/css-regions/META.yml": [
"37bdc98c84c0f4c9a32d3cc5b2f4e3494eb63999",
"support"
@ -620238,7 +620378,7 @@
"reftest"
],
"css/css-writing-modes/sizing-orthog-htb-in-vrl-013-ref.xht": [
"3b1fef0f84e53ad72e61fc1b849ec6521b162968",
"dea13d4238dab838610355056ddaf105e947f3bf",
"support"
],
"css/css-writing-modes/sizing-orthog-htb-in-vrl-013.xht": [
@ -640297,6 +640437,10 @@
"918997b1646d73d71a79c302953ab9f0f8ed69cc",
"support"
],
"domxpath/booleans.html": [
"41522edf05f8bc752408eb2cdde10a05bd211a7a",
"testharness"
],
"domxpath/document.tentative.html": [
"b75c0f0d66dacb47a825ae2aa00bb63a19616433",
"testharness"
@ -640305,6 +640449,14 @@
"8239d9c395e3c965c5ae2f23ed79156b7b85c01f",
"testharness"
],
"domxpath/fn-concat.html": [
"fe160966aa7983191e81ffa65f5955c86afe7bb9",
"testharness"
],
"domxpath/fn-contains.html": [
"a4d8bbfa7b3ce35b574bdcb902c4a0caa9ad39c3",
"testharness"
],
"domxpath/fn-lang.html": [
"c7c102945d070a4ea65cae0e30ea6ec64bb82c95",
"testharness"
@ -640313,10 +640465,38 @@
"a9f33a0ee3d153abd6fe05415c6ce6699ce8525c",
"testharness"
],
"domxpath/fn-starts-with.html": [
"99d2df7db6b67c9e186ade1160da6932f8dc90bd",
"testharness"
],
"domxpath/fn-substring-after.html": [
"c290914d24b0463d42959ff675f1498a7898806d",
"testharness"
],
"domxpath/fn-substring-before.html": [
"69b3f1ef6e45e948a55d49b409c5a58a9cf83381",
"testharness"
],
"domxpath/fn-substring.html": [
"3311a15061de49c5337b938d732946358f2245f3",
"testharness"
],
"domxpath/fn-translate.html": [
"ee1700d1b427ea80fc5076a22a00f2dd62f4937b",
"testharness"
],
"domxpath/helpers.js": [
"0805bd682b48461588250a22018a6bd90990d002",
"support"
],
"domxpath/node-sets.html": [
"a47314fb0869885db01fd13bd8aa35687e283d0d",
"testharness"
],
"domxpath/numbers.html": [
"e847d6cd2e53839914a649ca1cb61953c659e2ed",
"testharness"
],
"domxpath/predicates.html": [
"1786740dbd2522c15325a6e8677b07402a7cd767",
"testharness"
@ -715378,11 +715558,11 @@
"support"
],
"tools/wptrunner/wptrunner/manifestupdate.py": [
"af9af18d90715d43bbcd2ae47ce76275bb0e1577",
"2f2a8d543352d4c2128afd0314e8261668964d01",
"support"
],
"tools/wptrunner/wptrunner/metadata.py": [
"c328dcefa7253ddea952549c702723e98b4cadc4",
"bf4d7a558abb7da117c95f896c1c8c3babd77219",
"support"
],
"tools/wptrunner/wptrunner/products.py": [
@ -715470,7 +715650,7 @@
"support"
],
"tools/wptrunner/wptrunner/tests/test_update.py": [
"5f199390b64f9d0843df7900cf624a9e674f3dd7",
"5ed366788067c94245a8f7e1dadccb93da0493ab",
"support"
],
"tools/wptrunner/wptrunner/tests/test_wpttest.py": [
@ -715534,7 +715714,7 @@
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/backends/conditional.py": [
"a81ad9d06a144bff7f3cc9ed91a4260cd061b7fb",
"3b11e83012ab50fe0ea240ae056d02c8968b6a60",
"support"
],
"tools/wptrunner/wptrunner/wptmanifest/backends/static.py": [
@ -725514,7 +725694,7 @@
"testharness"
],
"webrtc/RTCRtpTransceiver.https.html": [
"67571895175f19c008743523f035aa31fced9681",
"af84fe2498c9242f49639fa1bd55a4e848affbbf",
"testharness"
],
"webrtc/RTCSctpTransport-constructor.html": [

View file

@ -0,0 +1,4 @@
[CaretPosition-001.html]
[Element at (400, 100)]
expected: FAIL

View file

@ -0,0 +1,4 @@
[elementFromPoint-001.html]
[CSSOM View - 5 - extensions to the Document interface]
expected: FAIL

View file

@ -312,12 +312,6 @@
[<iframe>: combined response Content-Type: text/html;charset=gbk text/plain text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html */*;charset=gbk]
expected: FAIL
[<iframe>: combined response Content-Type: */* text/html]
expected: FAIL
[<iframe>: combined response Content-Type: text/html;" \\" text/plain]
expected: FAIL
@ -330,9 +324,12 @@
[<iframe>: separate response Content-Type: text/plain */*]
expected: FAIL
[<iframe>: combined response Content-Type: text/plain;charset=gbk text/html]
[<iframe>: combined response Content-Type: text/html */*]
expected: FAIL
[<iframe>: separate response Content-Type: text/html;" \\" text/plain]
[<iframe>: separate response Content-Type: text/html;x=" text/plain]
expected: FAIL
[<iframe>: separate response Content-Type: text/plain */*;charset=gbk]
expected: FAIL

View file

@ -56,3 +56,9 @@
[separate text/javascript x/x]
expected: FAIL
[separate text/javascript;charset=windows-1252 error text/javascript]
expected: FAIL
[separate text/javascript;charset=windows-1252 text/javascript]
expected: FAIL

View file

@ -11,3 +11,6 @@
[X-Content-Type-Options%3A%20nosniff%0C]
expected: FAIL
[X-Content-Type-Options%3A%20%40%23%24%23%25%25%26%5E%26%5E*()()11!%2Cnosniff]
expected: FAIL

View file

@ -8,7 +8,7 @@
expected: FAIL
[Embedded credentials are treated as network errors in new windows.]
expected: TIMEOUT
expected: FAIL
[Embedded credentials matching the top-level are treated as network errors for cross-origin URLs.]
expected: TIMEOUT

View file

@ -1,4 +0,0 @@
[traverse_the_history_2.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -1,4 +0,0 @@
[traverse_the_history_3.html]
[Multiple history traversals, last would be aborted]
expected: FAIL

View file

@ -4,7 +4,7 @@
expected: FAIL
[Element with tabindex should support autofocus]
expected: FAIL
expected: TIMEOUT
[Host element with delegatesFocus including no focusable descendants should be skipped]
expected: NOTRUN
@ -16,5 +16,5 @@
expected: NOTRUN
[Non-HTMLElement should not support autofocus]
expected: TIMEOUT
expected: NOTRUN

View file

@ -1,4 +1,5 @@
[iframe_sandbox_popups_escaping-2.html]
expected: CRASH
[Check that popups from a sandboxed iframe escape the sandbox if\n allow-popups-to-escape-sandbox is used]
expected: FAIL

View file

@ -1,5 +0,0 @@
[017.html]
expected: TIMEOUT
[origin of the script that invoked the method, about:blank]
expected: TIMEOUT

View file

@ -0,0 +1,56 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test Reference: Test position:sticky element with large top in an overflow scroll container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<style>
.scroll {
border: 5px solid blue;
padding: 5px 3px 0 8px;
overflow: auto;
height: 200px;
width: 200px;
transform: scale(1);
}
.block {
width: 150px;
height: 200px;
background: yellow;
position: absolute;
top: 55px;
}
.sticky {
position: absolute;
background: purple;
width: 50px;
height: 50px;
top: 205px;
z-index: 1;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<div class="scroll">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
<div class="scroll" id="scroll2">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,59 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test: Test position:sticky element with large top in an overflow container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-position/#sticky-pos">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1598112">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2794">
<link rel="match" href="position-sticky-large-top-2-ref.html">
<meta name="assert" content="This test verifies the position of a position:sticky element with large top value can be reached by scrolling the overflow container.">
<style>
.scroll {
border: 5px solid blue;
padding: 5px 3px 0 8px;
overflow: auto;
height: 200px;
width: 200px;
}
.block {
width: 150px;
height: 200px;
background: yellow;
}
.sticky {
position: sticky;
background: purple;
width: 50px;
height: 50px;
top: 200px;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<!-- test before scroll -->
<div class="scroll">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
<!-- test after scroll -->
<div class="scroll" id="scroll2">
<span>
<div class="sticky"></div>
</span>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,51 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test Reference: Test position:sticky element with large top in an overflow scroll container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<style>
.scroll {
border: 5px solid blue;
overflow: auto;
height: 200px;
width: 200px;
transform: scale(1);
}
.block {
width: 100%;
height: 200px;
background: yellow;
position: absolute;
top: 50px;
}
.sticky {
position: absolute;
background: purple;
width: 50px;
height: 50px;
top: 200px;
z-index: 1;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<div class="scroll">
<div class="sticky"></div>
<div class="block"></div>
</div>
<div class="scroll" id="scroll2">
<div class="sticky"></div>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,54 @@
<!DOCTYPE html>
<html>
<meta charset="utf-8">
<title>CSS Position Test: Test position:sticky element with large top in an overflow container</title>
<link rel="author" title="Ting-Yu Lin" href="mailto:tlin@mozilla.com">
<link rel="author" title="Mozilla" href="http://www.mozilla.org/">
<link rel="help" href="https://drafts.csswg.org/css-position/#sticky-pos">
<link rel="help" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1598112">
<link rel="help" href="https://github.com/w3c/csswg-drafts/issues/2794">
<link rel="match" href="position-sticky-large-top-ref.html">
<meta name="assert" content="This test verifies the position of a position:sticky element with large top value can be reached by scrolling the overflow container.">
<style>
.scroll {
border: 5px solid blue;
overflow: auto;
height: 200px;
width: 200px;
}
.block {
width: 100%;
height: 200px;
background: yellow;
}
.sticky {
position: sticky;
background: purple;
width: 50px;
height: 50px;
top: 200px;
}
</style>
<script>
function runTest() {
document.getElementById("scroll2").scrollTop = 50;
}
</script>
<body onload="runTest();">
<!-- test before scroll -->
<div class="scroll">
<div class="sticky"></div>
<div class="block"></div>
</div>
<!-- test after scroll -->
<div class="scroll" id="scroll2">
<div class="sticky"></div>
<div class="block"></div>
</div>
</body>
</html>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of spelling error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
input
{
font-size: 300%;
}
input::spelling-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a red dotted line.
<div><input type="text" value="A txet sample"></div>

View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<meta charset="UTF-8">
<title>CSS Pseudo-Elements Test: highlighting of spelling error</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<meta content="" name="flags">
<style>
textarea
{
font-size: 300%;
}
textarea::spelling-error
{
color: maroon;
text-decoration: underline dotted red;
}
</style>
<p>PREREQUISITE: User agent needs to have an enabled and capable spelling error module. If it does not, then this test does not apply to such user agent.
<p>Test passes if each glyph of "txet" is maroon and if "txet" is underlined with a red dotted line.
<div><textarea rows="2" cols="20">A txet sample</textarea></div>

View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Reftest Reference</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<meta content="svg" name="flags">
<style>
text
{
fill: green;
/*
fill is the shorthand form for fill-color,
fill-image, fill-origin, fill-position, fill-size
and fill-repeat
https://www.w3.org/TR/fill-stroke-3/#fill-shorthand
*/
stroke: yellow;
/*
stroke is the shorthand form for stroke-color,
stroke-image, stroke-origin, stroke-position,
stroke-size, and stroke-repeat
https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand
*/
stroke-width: 2px;
}
</style>
<p>Test passes if the glyphs of "Curvy text sample" are green with a yellow outline.
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="550" height="300">
<path id="pathToApply"
d="M 100 200
C 100 100 200 0 500 200" fill="none" />
<text style="font-size: 48px;"><textPath xlink:href="#pathToApply" id="test">Curvy text sample</textPath></text>
</svg>
</div>

View file

@ -0,0 +1,69 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>CSS Test: active selection of text following a path (complex)</title>
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-selectors">
<link rel="help" href="https://www.w3.org/TR/css-pseudo-4/#highlight-styling">
<link rel="help" href="https://www.w3.org/TR/fill-stroke-3/#fill-shorthand">
<link rel="help" href="https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand">
<meta content="svg" name="flags">
<meta content="This test checks that an SVG application with a text following a text path can be selected and then be styled." name="assert">
<style>
::selected
{
fill: green;
/*
fill is the shorthand form for fill-color,
fill-image, fill-origin, fill-position, fill-size
and fill-repeat
https://www.w3.org/TR/fill-stroke-3/#fill-shorthand
*/
stroke: yellow;
/*
stroke is the shorthand form for stroke-color,
stroke-image, stroke-origin, stroke-position,
stroke-size, and stroke-repeat
https://www.w3.org/TR/fill-stroke-3/#stroke-shorthand
*/
stroke-width: 2px;
}
</style>
<p>Test passes if the glyphs of "Curvy text sample" are green with a yellow outline.
<div>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="550" height="300">
<path id="pathToApply"
d="M 100 200
C 100 100 200 0 500 200" fill="none" />
<text fill="red" style="font-size: 48px;"><textPath xlink:href="#pathToApply" id="test">Curvy text sample</textPath></text>
</svg>
</div>
<script>
var targetRange = document.createRange();
/* We first create an empty range */
targetRange.setStart(document.getElementById("test").childNodes[0], 0);
/*
Then we set the start boundary of the range inside textPath#test to
the 1st character, which is "C"
*/
targetRange.setEnd(document.getElementById("test").childNodes[0], 17);
/* And we set the end boundary of the range inside textPath#test
right after the 18th character which is "e" */
window.getSelection().addRange(targetRange);
/* Finally, we now select such range of content */
</script>

View file

@ -9,13 +9,14 @@
<link rel="author" title="Gérard Talbot" href="http://www.gtalbot.org/BrowserBugsSection/css21testsuite/" />
<meta name="DC.date.created" content="2016-12-22T09:54:03+11:00" scheme="W3CDTF" />
<meta name="DC.date.modified" content="2016-12-30T09:54:03+11:00" scheme="W3CDTF" />
<meta name="DC.date.modified" content="2019-12-18T09:54:03+11:00" scheme="W3CDTF" />
<meta content="" name="flags" />
<style type="text/css"><![CDATA[
html
{
direction: rtl;
width: calc(52px + 100vw + 52px);
}
@ -29,6 +30,7 @@
table
{
border-spacing: 0px;
direction: ltr;
position: absolute;
width: calc(52px + 100% + 52px);
}
@ -55,6 +57,7 @@
display: block;
}
]]></style>
</head>
<body>

View file

@ -0,0 +1,52 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#booleans">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('(./span)[4] or ./br[2]', context));
}, '"or" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) = count(./br[2])', context));
}, '"=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) != count(./br[2])', context));
}, '"!=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) < count(./br)', context));
}, '"<" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) > count(./br[2])', context));
}, '">" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_false(evaluateBoolean('count((./span)[3]) >= count(./br)', context));
}, '">=" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_true(evaluateBoolean('count((./span)[3]) <= count(./br[2])', context));
}, '"<=" operator depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-concat">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>foo</span><span>bar</span><b>ber</b>';
assert_equals(evaluateString('concat((./span)[2], ./b)', context), 'barber');
}, 'concat() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-contains">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>bar bar</span><span>bar<b>ber</b></span><b>bar</b>';
assert_true(evaluateBoolean('contains((./span)[1], ./b)', context));
}, 'contains() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-starts-with">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>foo</span><span>bar<b>ber</b></span><b>bar</b>';
assert_true(evaluateBoolean('starts-with((./span)[2], ./b)', context));
}, 'starts-with() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring-after">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span>bar<b>^</b></span><b>bar</b>';
assert_equals(evaluateString('substring-after((./span)[1], ./b)', context), '$$$');
}, 'substring-after() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring-before">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span>bar<b>$</b></span><b>bar</b>';
assert_equals(evaluateString('substring-before((./span)[1], ./b)', context), '^^^');
}, 'substring-before() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-substring">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span></span><br><br><br><br>';
assert_equals(evaluateString('substring((./span)[1], count(./br))', context), 'bar$$$');
}, 'substring() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#function-translate">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<body>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span>^^^bar$$$</span><span><b>^^^</b></span><b>bar</b><b>foo</b>';
assert_equals(evaluateString('translate((./span)[1], (./b)[1], ./b[2])', context), '^^^foo$$$');
}, 'translate() arguments depending on the context node');
</script>
</body>

View file

@ -0,0 +1,14 @@
function evaluateBoolean(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.BOOLEAN_TYPE, null).booleanValue;
}
function evaluateNumber(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.NUMBER_TYPE, null).numberValue;
}
function evaluateString(expression, context) {
let doc = context.ownerDocument || context;
return doc.evaluate(expression, context, null, XPathResult.STRING_TYPE, null).stringValue;
}

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<link rel="help" href="https://www.w3.org/TR/1999/REC-xpath-19991116/#numbers">
<body>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="helpers.js"></script>
<div id="context"></div>
<script>
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) + count(./br)', context), 3);
}, '"+" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) - count(./br)', context), -1);
}, '"-" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) * count(./br)', context), 2);
}, '"*" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) div count(./br)', context), 0.5);
}, '"div" operator depending on the context node');
test(() => {
const context = document.querySelector('#context');
context.innerHTML = '<span></span><span></span><span></span><br><br>';
assert_equals(evaluateNumber('count((./span)[1]) mod count(./br)', context), 1);
}, '"mod" operator depending on the context node');
</script>
</body>

View file

@ -513,7 +513,7 @@ class PropertyUpdate(object):
top_level_props, dependent_props = self.node.root.run_info_properties
update_properties = set(top_level_props)
for item in itervalues(dependent_props):
update_properties |= set(dependent_props)
update_properties |= set(item)
for condition in current_conditions:
if ((not condition.variables.issubset(update_properties) and
not run_info_by_condition[condition])):

View file

@ -4,6 +4,7 @@ import os
from collections import defaultdict, namedtuple
from mozlog import structuredlog
from six import itervalues
from six.moves import intern
from . import manifestupdate
@ -285,7 +286,7 @@ def update_results(id_test_map,
disable_intermittent,
update_intermittent,
remove_intermittent):
test_file_items = set(id_test_map.itervalues())
test_file_items = set(itervalues(id_test_map))
default_expected_by_type = {}
for test_type, test_cls in wpttest.manifest_test_cls.iteritems():
@ -673,6 +674,29 @@ class TestFileData(object):
return rv
def filter_unknown_props(self, update_properties, subtests):
# Remove subtests which have some conditions that aren't in update_properties
# since removing these may be inappropriate
top_level_props, dependent_props = update_properties
all_properties = set(top_level_props)
for item in itervalues(dependent_props):
all_properties |= set(item)
filtered = []
for subtest in subtests:
include = True
for key, _ in subtest.iter_properties():
conditions = subtest.get_conditions(key)
for condition in conditions:
if not condition.variables.issubset(all_properties):
include = False
break
if not include:
break
if include:
filtered.append(subtest)
return filtered
def update(self, default_expected_by_type, update_properties,
full_update=False, disable_intermittent=None, update_intermittent=False,
remove_intermittent=False):
@ -687,6 +711,7 @@ class TestFileData(object):
if full_update:
orphans = self.orphan_subtests(expected)
orphans = self.filter_unknown_props(update_properties, orphans)
if not self.requires_update and not orphans:
return

View file

@ -66,7 +66,7 @@ def update(tests, *logs, **kwargs):
updater.update_from_log(log)
update_properties = (["debug", "os", "version", "processor"],
{"os": ["version"], "processor": "bits"})
{"os": ["version"], "processor": ["bits"]})
expected_data = {}
metadata.load_expected = lambda _, __, test_path, *args: expected_data.get(test_path)
@ -1259,6 +1259,28 @@ def test_update_full_unknown():
"expected", run_info_2) == "ERROR"
@pytest.mark.xfail(sys.version[0] == "3",
reason="metadata doesn't support py3")
def test_update_full_unknown_missing():
tests = [("path/to/test.htm", [test_id], "testharness", """[test.htm]
[subtest_deleted]
expected:
if release_or_beta: ERROR
FAIL
""")]
log_0 = suite_log([("test_start", {"test": test_id}),
("test_status", {"test": test_id,
"subtest": "test1",
"status": "PASS",
"expected": "PASS"}),
("test_end", {"test": test_id,
"status": "OK"})],
run_info={"debug": False, "release_or_beta": False})
updated = update(tests, log_0, full_update=True)
assert len(updated) == 0
@pytest.mark.xfail(sys.version[0] == "3",
reason="metadata doesn't support py3")

View file

@ -381,6 +381,10 @@ class ManifestItem(object):
for item in iterkeys(self._flatten()):
yield item
def iter_properties(self):
for item in self._data:
yield item, self._data[item]
def remove_value(self, key, value):
if key not in self._data:
return

View file

@ -1205,14 +1205,27 @@
// Wait a little, just in case some stray events fire
await new Promise(r => t.step_timeout(r, 100));
assert_equals(1, countMuteAudio1.count, "Got 1 mute event for pc1's audio track");
assert_equals(1, countMuteVideo1.count, "Got 1 mute event for pc1's video track");
assert_equals(1, countMuteAudio2.count, "Got 1 mute event for pc2's audio track");
assert_equals(1, countMuteVideo2.count, "Got 1 mute event for pc2's video track");
assert_equals(2, countUnmuteAudio1.count, "Got 2 unmute events for pc1's audio track");
assert_equals(2, countUnmuteVideo1.count, "Got 2 unmute events for pc1's video track");
assert_equals(2, countUnmuteAudio2.count, "Got 2 unmute events for pc2's audio track");
assert_equals(2, countUnmuteVideo2.count, "Got 2 unmute events for pc2's video track");
// Receiving an RTCP bye should generate a mute event. How often this
// happens depends upon the browser and on timing. Rather than try to
// match an individual browser's current behaviour, this checks to see
// that we receive at least the minimum number of expected mute and
// unmute events.
assert_greater_than_equal(countMuteAudio1.count, 1,
"Expect 1 mute event for pc1's audio track");
assert_greater_than_equal(countMuteVideo1.count, 1,
"Expect 1 mute event for pc1's video track");
assert_greater_than_equal(countMuteAudio2.count, 1,
"Expect 1 mute event for pc2's audio track");
assert_greater_than_equal(countMuteVideo2.count, 1,
"Expect 1 mute event for pc2's video track");
assert_greater_than_equal(countUnmuteAudio1.count, 2,
"Expect 2 unmute events for pc1's audio track");
assert_greater_than_equal(countUnmuteVideo1.count, 2,
"Expect 2 unmute events for pc1's video track");
assert_greater_than_equal(countUnmuteAudio2.count, 2,
"Expect 2 unmute events for pc2's audio track");
assert_greater_than_equal(countUnmuteVideo2.count, 2,
"Expect 2 unmute events for pc2's video track");
};
const checkStop = async t => {