- From: Takeshi Yoshino <notifications@github.com>
- Date: Tue, 15 Aug 2017 16:56:33 +0000 (UTC)
- To: whatwg/streams <streams@noreply.github.com>
- Cc: Subscribed <subscribed@noreply.github.com>
- Message-ID: <whatwg/streams/pull/762/review/56395254@github.com>
tyoshino approved this pull request. > + let startCalled = false; + let startDone = false; + let transformDone = false; + let flushDone = false; + const ts = new TransformStream({ + start() { + startCalled = true; + return new Promise(resolve => setTimeout(resolve, 90)) + .then(() => { startDone = true; }); + }, + transform() { + t.step(() => { + assert_true(startDone, 'startPromise must resolve before transform is called'); + }); + return new Promise(resolve => setTimeout(resolve, 30)) + .then(() => { transformDone = true; }); I'm just putting everything inside .step() when possible so that any mistake can be captured by the testharness framework. It looks we can here, maybe. > + startCalled = true; + return new Promise(resolve => setTimeout(resolve, 90)) + .then(() => { startDone = true; }); + }, + transform() { + t.step(() => { + assert_true(startDone, 'startPromise must resolve before transform is called'); + }); + return new Promise(resolve => setTimeout(resolve, 30)) + .then(() => { transformDone = true; }); + }, + flush() { + t.step(() => { + assert_true(transformDone, 'pending transform promise must resolve before flush is called'); + }); + return new Promise(resolve => setTimeout(resolve, 50)) ditto > + t.step(() => { + assert_true(transformDone, 'pending transform promise must resolve before flush is called'); + }); + return new Promise(resolve => setTimeout(resolve, 50)) + .then(() => { flushDone = true; }); + } + }); + + assert_true(startCalled, 'start is called synchronously'); + + const writer = ts.writable.getWriter(); + writer.write('a'); + writer.close().then(t.step_func(() => { + assert_true(flushDone, 'flushPromise resolved'); + t.done(); + })) how about using step_func_done()? > + assert_true(transformDone, 'pending transform promise must resolve before flush is called'); + }); + return new Promise(resolve => setTimeout(resolve, 50)) + .then(() => { flushDone = true; }); + } + }); + + assert_true(startCalled, 'start is called synchronously'); + + const writer = ts.writable.getWriter(); + writer.write('a'); + writer.close().then(t.step_func(() => { + assert_true(flushDone, 'flushPromise resolved'); + t.done(); + })) + .catch(t.step_func(e => assert_unreached(e))); how about using unreached_func? > + t.done(); + }); + }, + transform() { + } + }); +}, 'TransformStream cannot be used after becoming errored'); + +async_test(t => { + const ts = new TransformStream({ + start() { + return new Promise(resolve => setTimeout(resolve, 90)) + .then(() => { throw thrownError; }); + }, + transform() { + t.step(() => assert_unreached('transform must never be called if start() fails')); ditto (unreached_func) for here and all the other occurrences. > + t.step(() => assert_unreached('transform must never be called if start() fails')); + }, + flush() { + t.step(() => assert_unreached('flush must never be called if start() fails')); + } + }); + + const writer = ts.writable.getWriter(); + writer.write('a').then(t.step_func(() => { + assert_unreached('writer should be errored if start() fails'); + })) + .catch(t.step_func(e => assert_equals(e, thrownError, 'writer rejects with same error'))); + writer.close().then(t.step_func(() => { + assert_unreached('writer should be errored if start() fails'); + })) + .catch(t.step_func(e => assert_equals(e, thrownError, 'writer rejects with same error'))); as we've removed plan(), we need to add some logic to check that this expectation is checked before running t.done()? > + flush() { + t.step(() => assert_unreached('flush must never be called if start() fails')); + } + }); + + const writer = ts.writable.getWriter(); + writer.write('a').then(t.step_func(() => assert_unreached('writer should be errored if start() fails'))) + .catch(t.step_func(e => assert_equals(e, controllerError, 'writer rejects with same error'))); + writer.close().then(t.step_func(() => assert_unreached('writer should be errored if start() fails'))) + .catch(t.step_func(e => assert_equals(e, controllerError, 'writer rejects with same error'))); + + const reader = ts.readable.getReader(); + + reader.read().catch(t.step_func(e => { + assert_equals(e, controllerError, 'reader rejects with same error'); + t.done(); maybe this too regarding removal of t.plan(). -- You are receiving this because you are subscribed to this thread. Reply to this email directly or view it on GitHub: https://github.com/whatwg/streams/pull/762#pullrequestreview-56395254
Received on Tuesday, 15 August 2017 16:56:57 UTC