Skip to content

Commit

Permalink
Fix broken test on linux (nodejs#2699)
Browse files Browse the repository at this point in the history
* fix pull-dont-push test on linux

Signed-off-by: Matteo Collina <hello@matteocollina.com>

* fixup

Signed-off-by: Matteo Collina <hello@matteocollina.com>

* fixup

Signed-off-by: Matteo Collina <hello@matteocollina.com>

* fixup

Signed-off-by: Matteo Collina <hello@matteocollina.com>

* fixup

Signed-off-by: Matteo Collina <hello@matteocollina.com>

---------

Signed-off-by: Matteo Collina <hello@matteocollina.com>
  • Loading branch information
mcollina authored and crysmags committed Feb 27, 2024
1 parent e915252 commit a7a7b97
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 5 deletions.
9 changes: 8 additions & 1 deletion lib/fetch/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -1100,6 +1100,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) {
Expand Down Expand Up @@ -2021,7 +2026,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.
Expand Down
11 changes: 7 additions & 4 deletions test/fetch/pull-dont-push.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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)
}
}
Expand All @@ -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 {}
})
6 changes: 6 additions & 0 deletions test/wpt/runner/runner.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -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({
Expand All @@ -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) {
Expand All @@ -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',
Expand Down

0 comments on commit a7a7b97

Please sign in to comment.