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 <rlau@redhat.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
This commit is contained in:
Joyee Cheung 2025-05-20 21:00:50 +02:00 committed by GitHub
parent d2a13695bf
commit 0bbe5d34e7
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,27 +1,31 @@
'use strict'; 'use strict';
const common = require('../common'); const common = require('../common');
if (!common.hasCrypto) if (!common.hasCrypto)
common.skip('missing crypto'); common.skip('missing crypto');
const assert = require('assert'); const assert = require('assert');
const child_process = require('child_process'); const { spawnSyncAndAssert } = require('../common/child_process');
const path = require('path'); const path = require('path');
process.env.NODE_DEBUG_NATIVE = 'http2'; spawnSyncAndAssert(process.execPath, [
process.env.NODE_DEBUG = 'http2';
const { stdout, stderr } = child_process.spawnSync(process.execPath, [
path.resolve(__dirname, 'test-http2-ping.js'), path.resolve(__dirname, 'test-http2-ping.js'),
], { encoding: 'utf8' }); ], {
env: {
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/), ...process.env,
stderr); NODE_DEBUG: 'http2',
assert(stderr.match(/Http2Session client \(\d+\) handling data frame for stream \d+\r?\n/), NODE_DEBUG_NATIVE: 'http2',
stderr); },
assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] reading starting\r?\n/), }, {
stderr); trim: true,
assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] closed with code 0\r?\n/), stderr(output) {
stderr); assert.match(output,
assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] closed with code 0\r?\n/), /Setting the NODE_DEBUG environment variable to 'http2' can expose sensitive data/);
stderr); assert.match(output, /\(such as passwords, tokens and authentication headers\) in the resulting log\.\r?\n/);
assert(stderr.match(/HttpStream \d+ \(\d+\) \[Http2Session server \(\d+\)\] tearing down stream\r?\n/), assert.match(output, /Http2Session client \(\d+\) handling data frame for stream \d+\r?\n/);
stderr); assert.match(output, /HttpStream \d+ \(\d+\) \[Http2Session client \(\d+\)\] reading starting\r?\n/);
assert.strictEqual(stdout.trim(), ''); 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: ''
});