From 0bbe5d34e74e8b4cc161a4777b161bfb917cf1e5 Mon Sep 17 00:00:00 2001 From: Joyee Cheung Date: Tue, 20 May 2025 21:00:50 +0200 Subject: [PATCH] test: show more information in test-http2-debug upon failure Use spawnSyncAndAssert() so that the stderr is logged when it doesn't match expectations. PR-URL: https://github.com/nodejs/node/pull/58391 Refs: https://github.com/nodejs/node/issues/58353 Reviewed-By: Richard Lau Reviewed-By: Luigi Pinca --- test/parallel/test-http2-debug.js | 42 +++++++++++++++++-------------- 1 file changed, 23 insertions(+), 19 deletions(-) diff --git a/test/parallel/test-http2-debug.js b/test/parallel/test-http2-debug.js index a465f74af24..5f2f6c54da7 100644 --- a/test/parallel/test-http2-debug.js +++ b/test/parallel/test-http2-debug.js @@ -1,27 +1,31 @@ 'use strict'; + const common = require('../common'); if (!common.hasCrypto) common.skip('missing crypto'); const assert = require('assert'); -const child_process = require('child_process'); +const { spawnSyncAndAssert } = require('../common/child_process'); const path = require('path'); -process.env.NODE_DEBUG_NATIVE = 'http2'; -process.env.NODE_DEBUG = 'http2'; -const { stdout, stderr } = child_process.spawnSync(process.execPath, [ +spawnSyncAndAssert(process.execPath, [ path.resolve(__dirname, 'test-http2-ping.js'), -], { encoding: 'utf8' }); - -assert(stderr.match(/Setting the NODE_DEBUG environment variable to 'http2' can expose sensitive data \(such as passwords, tokens and authentication headers\) in the resulting log\.\r?\n/), - stderr); -assert(stderr.match(/Http2Session client \(\d+\) handling data frame for stream \d+\r?\n/), - stderr); -assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] reading starting\r?\n/), - stderr); -assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] closed with code 0\r?\n/), - stderr); -assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] closed with code 0\r?\n/), - stderr); -assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] tearing down stream\r?\n/), - stderr); -assert.strictEqual(stdout.trim(), ''); +], { + env: { + ...process.env, + NODE_DEBUG: 'http2', + NODE_DEBUG_NATIVE: 'http2', + }, +}, { + trim: true, + stderr(output) { + assert.match(output, + /Setting the NODE_DEBUG environment variable to 'http2' can expose sensitive data/); + assert.match(output, /\(such as passwords, tokens and authentication headers\) in the resulting log\.\r?\n/); + assert.match(output, /Http2Session client \(\d+\) handling data frame for stream \d+\r?\n/); + assert.match(output, /HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] reading starting\r?\n/); + assert.match(output, /HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] closed with code 0\r?\n/); + assert.match(output, /HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] closed with code 0\r?\n/); + assert.match(output, /HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] tearing down stream\r?\n/); + }, + stdout: '' +});