- 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