Closed Bug 1602688 Opened 4 years ago Closed 4 years ago

[wpt-sync] Sync PR 20692 - Fix the order of operations in pipeTo

Categories

(Core :: JavaScript Engine, task, P4)

task

Tracking

()

RESOLVED FIXED
mozilla73
Tracking Status
firefox73 --- fixed

People

(Reporter: mozilla.org, Unassigned)

References

()

Details

(Whiteboard: [wptsync downstream])

Sync web-platform-tests PR 20692 into mozilla-central (this bug is closed when the sync is complete).

PR: https://github.com/web-platform-tests/wpt/pull/20692
Details from upstream follow.

Adam Rice <ricea@chromium.org> wrote:

Fix the order of operations in pipeTo

Previously, Blink's implementations of pipeTo and pipeThrough did some
initialisation operations in the wrong order. This was done to simplify
the code when there were two implementations.

Now only the native implementation remains, it is simpler to do the
operations in the correct order.

In particular, switch the order of checking options w.r.t. checking the
locked status of the streams to match the standard.

Also add tests to verify the order is correct.

BUG=1031895

Change-Id: I51fbf74f4cd33ffc357a34ab302d4c1bb7b1e77b
Reviewed-on: https://chromium-review.googlesource.com/1958550
WPT-Export-Revision: 695e43b0f43d88f82a460315f41a4f93e7e86b16

Component: web-platform-tests → JavaScript Engine
Product: Testing → Core

CI Results

Ran 13 Firefox configurations based on mozilla-central, and Firefox, Chrome, and Safari on GitHub CI

Total 10 tests

Status Summary

Firefox

OK : 4
FAIL : 88
TIMEOUT: 1
ERROR : 3

Chrome

CRASH : 8

Safari

OK : 3
FAIL : 75
ERROR : 5

Links

Gecko CI (Treeherder)
GitHub PR Head
GitHub PR Base

Details

New Tests That Don't Pass

/streams/piping/pipe-through.any.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
pipeThrough should not call pipeTo on this: FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow '0': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'undefined': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'true': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'NaN': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow '0': FAIL (Safari: FAIL)
Piping through a duck-typed pass-through transform stream should work: FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'true': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'ReadableStream': FAIL (Safari: FAIL)
Piping through a transform errored on the writable end does not cause an unhandled promise rejection: FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'ReadableStream': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow '[object Object]': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'null': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'undefined': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow '[object Object]': FAIL (Safari: FAIL)
pipeThrough should not call pipeTo on the ReadableStream prototype: FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'null': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'NaN': FAIL (Safari: FAIL)
/streams/piping/general.any.js: SKIP (Chrome: SKIP, Safari: SKIP)
/streams/piping/general.any.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream: FAIL (Safari: FAIL)
Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is true: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true: FAIL (Safari: FAIL)
pipeTo() should reject if an option getter grabs a writer: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false: FAIL (Safari: FAIL)
Piping must lock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its ReadableStream this value: FAIL (Safari: FAIL)
pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream: FAIL (Safari: FAIL)
Piping finishing must unlock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its WritableStream argument: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is false: FAIL (Safari: FAIL)
Piping from a ReadableStream from which lots of chunks are synchronously readable: FAIL (Safari: FAIL)
/streams/piping/general.any.serviceworker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream: FAIL (Safari: FAIL)
Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is true: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true: FAIL (Safari: FAIL)
pipeTo() should reject if an option getter grabs a writer: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false: FAIL (Safari: FAIL)
Piping must lock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its ReadableStream this value: FAIL (Safari: FAIL)
pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream: FAIL (Safari: FAIL)
Piping finishing must unlock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its WritableStream argument: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is false: FAIL (Safari: FAIL)
Piping from a ReadableStream from which lots of chunks are synchronously readable: FAIL (Safari: FAIL)
/streams/piping/general.any.sharedworker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream: FAIL
Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo: FAIL
an undefined rejection from write should cause pipeTo() to reject when preventCancel is true: FAIL
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true: FAIL
pipeTo() should reject if an option getter grabs a writer: FAIL
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false: FAIL
Piping must lock both the ReadableStream and WritableStream: FAIL
pipeTo must check the brand of its ReadableStream this value: FAIL
pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream: FAIL
Piping finishing must unlock both the ReadableStream and WritableStream: FAIL
pipeTo must check the brand of its WritableStream argument: FAIL
an undefined rejection from write should cause pipeTo() to reject when preventCancel is false: FAIL
Piping from a ReadableStream from which lots of chunks are synchronously readable: FAIL
/streams/piping/pipe-through.any.js: SKIP (Chrome: SKIP, Safari: SKIP)
/streams/piping/pipe-through.any.worker.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
pipeThrough should not call pipeTo on this: FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow '0': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'undefined': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'true': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'NaN': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow '0': FAIL (Safari: FAIL)
Piping through a duck-typed pass-through transform stream should work: FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'true': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'ReadableStream': FAIL (Safari: FAIL)
Piping through a transform errored on the writable end does not cause an unhandled promise rejection: FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'ReadableStream': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow '[object Object]': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'null': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'undefined': FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow '[object Object]': FAIL (Safari: FAIL)
pipeThrough should not call pipeTo on the ReadableStream prototype: FAIL (Safari: FAIL)
pipeThrough should brand-check readable and not allow 'null': FAIL (Safari: FAIL)
pipeThrough should brand-check this and not allow 'NaN': FAIL (Safari: FAIL)
/streams/piping/general.any.worker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
pipeTo must fail if the ReadableStream is locked, and not lock the WritableStream: FAIL (Safari: FAIL)
Piping from a ReadableStream for which a chunk becomes asynchronously readable after the pipeTo: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is true: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is true: FAIL (Safari: FAIL)
pipeTo() should reject if an option getter grabs a writer: FAIL (Safari: FAIL)
an undefined rejection from pull should cause pipeTo() to reject when preventAbort is false: FAIL (Safari: FAIL)
Piping must lock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its ReadableStream this value: FAIL (Safari: FAIL)
pipeTo must fail if the WritableStream is locked, and not lock the ReadableStream: FAIL (Safari: FAIL)
Piping finishing must unlock both the ReadableStream and WritableStream: FAIL (Safari: FAIL)
pipeTo must check the brand of its WritableStream argument: FAIL (Safari: FAIL)
an undefined rejection from write should cause pipeTo() to reject when preventCancel is false: FAIL (Safari: FAIL)
Piping from a ReadableStream from which lots of chunks are synchronously readable: FAIL (Safari: FAIL)
/streams/piping/pipe-through.any.serviceworker.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
/streams/piping/pipe-through.any.sharedworker.html: SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt], TIMEOUT[GitHub] (Chrome: CRASH, Safari: ERROR)

Tests Disabled in Gecko Infrastructure

/streams/piping/pipe-through.any.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
/streams/piping/general.any.js: SKIP (Chrome: SKIP, Safari: SKIP)
/streams/piping/general.any.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
/streams/piping/general.any.serviceworker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
/streams/piping/general.any.sharedworker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
/streams/piping/pipe-through.any.js: SKIP (Chrome: SKIP, Safari: SKIP)
/streams/piping/pipe-through.any.worker.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
/streams/piping/general.any.worker.html: OK[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: OK)
/streams/piping/pipe-through.any.serviceworker.html: ERROR[GitHub], SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt] (Chrome: CRASH, Safari: ERROR)
/streams/piping/pipe-through.any.sharedworker.html: SKIP[Gecko-android-em-7.0-x86_64-debug-geckoview,Gecko-android-em-7.0-x86_64-opt-geckoview,Gecko-linux64-asan-opt,Gecko-linux64-debug,Gecko-linux64-opt,Gecko-linux64-qr-debug,Gecko-linux64-qr-opt,Gecko-windows10-64-debug,Gecko-windows10-64-opt,Gecko-windows10-64-qr-debug,Gecko-windows10-64-qr-opt,Gecko-windows7-32-debug,Gecko-windows7-32-opt], TIMEOUT[GitHub] (Chrome: CRASH, Safari: ERROR)

Pushed by wptsync@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/9c700e5aa18c
[wpt PR 20692] - Fix the order of operations in pipeTo, a=testonly
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla73
You need to log in before you can comment on or make changes to this bug.