test: support standalone env comment in tests

PR-URL: https://github.com/nodejs/node/pull/59546
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
This commit is contained in:
Pietro Marchini 2025-08-22 11:24:31 +02:00 committed by GitHub
parent 56de98b13c
commit 08556f0555
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 52 additions and 28 deletions

View File

@ -116,11 +116,16 @@ if (process.argv.length === 2 &&
require('cluster').isPrimary &&
fs.existsSync(process.argv[1])) {
const { flags, envs } = parseTestMetadata();
for (const flag of flags) {
if (!process.execArgv.includes(flag) &&
const flagsTriggerSpawn = flags.some((flag) => (
!process.execArgv.includes(flag) &&
// If the binary is build without `intl` the inspect option is
// invalid. The test itself should handle this case.
(process.features.inspector || !flag.startsWith('--inspect'))) {
(process.features.inspector || !flag.startsWith('--inspect'))
));
const envsTriggerSpawn = Object.keys(envs).some((key) => process.env[key] !== envs[key]);
if (flagsTriggerSpawn || envsTriggerSpawn) {
console.log(
'NOTE: The test started as a child_process using these flags:',
inspect(flags),
@ -145,7 +150,6 @@ if (process.argv.length === 2 &&
process.exit(result.status);
}
}
}
}
const isWindows = process.platform === 'win32';

View File

@ -0,0 +1,20 @@
'use strict';
// Env: A_SET_ENV_VAR=A_SET_ENV_VAR_VALUE B_SET_ENV_VAR=B_SET_ENV_VAR_VALUE
require('../common');
const assert = require('node:assert');
const { describe, it } = require('node:test');
// This test verifies that a test file that requires 'common' can set environment variables
// via comments in the test file, similar to how we set flags via comments.
// Ref: https://github.com/nodejs/node/issues/58179
describe('env var via comment', () => {
it('should set env var A_SET_ENV_VAR', () => {
assert.strictEqual(process.env.A_SET_ENV_VAR, 'A_SET_ENV_VAR_VALUE');
});
it('should set env var B_SET_ENV_VAR', () => {
assert.strictEqual(process.env.B_SET_ENV_VAR, 'B_SET_ENV_VAR_VALUE');
});
});