From 349c9477501e17e332b6b625b126d4adf0c9b29d Mon Sep 17 00:00:00 2001 From: Matteo Collina Date: Tue, 6 Feb 2024 00:31:55 +0100 Subject: [PATCH] Fix broken test on linux (#2699) * fix pull-dont-push test on linux Signed-off-by: Matteo Collina * fixup Signed-off-by: Matteo Collina * fixup Signed-off-by: Matteo Collina * fixup Signed-off-by: Matteo Collina * fixup Signed-off-by: Matteo Collina --------- Signed-off-by: Matteo Collina --- lib/fetch/index.js | 9 ++++++++- test/fetch/pull-dont-push.js | 11 +++++++---- test/wpt/runner/runner.mjs | 6 ++++++ 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/fetch/index.js b/lib/fetch/index.js index a8e73ae45ee..6de1f735fd3 100644 --- a/lib/fetch/index.js +++ b/lib/fetch/index.js @@ -1175,6 +1175,11 @@ function fetchFinale (fetchParams, response) { const byteStream = new ReadableStream({ readableStream: transformStream.readable, async pull (controller) { + // TODO(mcollina): removen this block, not sure why pull() is called twice + if (this.readableStream.locked) { + return + } + const reader = this.readableStream.getReader() while (controller.desiredSize >= 0) { @@ -2096,7 +2101,9 @@ async function httpNetworkFetch ( // into stream. const buffer = new Uint8Array(bytes) if (buffer.byteLength) { - fetchParams.controller.controller.enqueue(buffer) + try { + fetchParams.controller.controller.enqueue(buffer) + } catch {} } // 8. If stream is errored, then terminate the ongoing fetch. diff --git a/test/fetch/pull-dont-push.js b/test/fetch/pull-dont-push.js index 24bad7c3923..3d4f80d3369 100644 --- a/test/fetch/pull-dont-push.js +++ b/test/fetch/pull-dont-push.js @@ -10,9 +10,10 @@ const { setTimeout: sleep } = require('timers/promises') const { closeServerAsPromise } = require('../utils/node-http') -test('Allow the usage of custom implementation of AbortController', async (t) => { +test('pull dont\'t push', async (t) => { let count = 0 let socket + const max = 1_000_000 const server = createServer((req, res) => { res.statusCode = 200 socket = res.socket @@ -21,7 +22,7 @@ test('Allow the usage of custom implementation of AbortController', async (t) => const stream = new Readable({ read () { this.push('a') - if (count++ > 1000000) { + if (count++ > max) { this.push(null) } } @@ -42,12 +43,14 @@ test('Allow the usage of custom implementation of AbortController', async (t) => // Some time is needed to fill the buffer await sleep(1000) - assert.strictEqual(socket.bytesWritten < 1024 * 1024, true) // 1 MB socket.destroy() + assert.strictEqual(count < max, true) // the stream should be closed before the max // consume the stream try { /* eslint-disable-next-line no-empty, no-unused-vars */ - for await (const chunk of res.body) {} + for await (const chunk of res.body) { + // process._rawDebug('chunk', chunk) + } } catch {} }) diff --git a/test/wpt/runner/runner.mjs b/test/wpt/runner/runner.mjs index 8af9eb7c68d..4673c8fc0be 100644 --- a/test/wpt/runner/runner.mjs +++ b/test/wpt/runner/runner.mjs @@ -254,6 +254,7 @@ export class WPTRunner extends EventEmitter { this.#stats.completed += 1 if (message.result.status === 1) { + let expectedFailure = false this.#stats.failed += 1 wptResult?.subtests.push({ @@ -265,6 +266,7 @@ export class WPTRunner extends EventEmitter { const name = normalizeName(message.result.name) if (file.flaky?.includes(name)) { + expectedFailure = true this.#stats.expectedFailures += 1 } else if (file.allowUnexpectedFailures || topLevel.allowUnexpectedFailures || file.fail?.includes(name)) { if (!file.allowUnexpectedFailures && !topLevel.allowUnexpectedFailures) { @@ -274,11 +276,15 @@ export class WPTRunner extends EventEmitter { } } + expectedFailure = true this.#stats.expectedFailures += 1 } else { process.exitCode = 1 console.error(message.result) } + if (!expectedFailure) { + process._rawDebug(`Failed test: ${path}`) + } } else { wptResult?.subtests.push({ status: 'PASS',