test: support standalone env comment in tests · nodejs/node@f78f47c
@@ -116,34 +116,38 @@ if (process.argv.length === 2 &&
116116require('cluster').isPrimary &&
117117fs.existsSync(process.argv[1])) {
118118const { flags, envs } = parseTestMetadata();
119-for (const flag of flags) {
120-if (!process.execArgv.includes(flag) &&
121-// If the binary is build without `intl` the inspect option is
122-// invalid. The test itself should handle this case.
123-(process.features.inspector || !flag.startsWith('--inspect'))) {
124-console.log(
125-'NOTE: The test started as a child_process using these flags:',
126-inspect(flags),
127-'And these environment variables:',
128-inspect(envs),
129-'Use NODE_SKIP_FLAG_CHECK to run the test with the original flags.',
130-);
131-const { spawnSync } = require('child_process');
132-const args = [...flags, ...process.execArgv, ...process.argv.slice(1)];
133-const options = {
134-encoding: 'utf8',
135-stdio: 'inherit',
136-env: {
137- ...process.env,
138- ...envs,
139-},
140-};
141-const result = spawnSync(process.execPath, args, options);
142-if (result.signal) {
143-process.kill(0, result.signal);
144-} else {
145-process.exit(result.status);
146-}
119+120+const flagsTriggerSpawn = flags.some((flag) => (
121+!process.execArgv.includes(flag) &&
122+// If the binary is build without `intl` the inspect option is
123+// invalid. The test itself should handle this case.
124+(process.features.inspector || !flag.startsWith('--inspect'))
125+));
126+const envsTriggerSpawn = Object.keys(envs).some((key) => process.env[key] !== envs[key]);
127+128+if (flagsTriggerSpawn || envsTriggerSpawn) {
129+console.log(
130+'NOTE: The test started as a child_process using these flags:',
131+inspect(flags),
132+'And these environment variables:',
133+inspect(envs),
134+'Use NODE_SKIP_FLAG_CHECK to run the test with the original flags.',
135+);
136+const { spawnSync } = require('child_process');
137+const args = [...flags, ...process.execArgv, ...process.argv.slice(1)];
138+const options = {
139+encoding: 'utf8',
140+stdio: 'inherit',
141+env: {
142+ ...process.env,
143+ ...envs,
144+},
145+};
146+const result = spawnSync(process.execPath, args, options);
147+if (result.signal) {
148+process.kill(0, result.signal);
149+} else {
150+process.exit(result.status);
147151}
148152}
149153}