mirror of https://github.com/nodejs/node.git
102 lines
3.0 KiB
JavaScript
102 lines
3.0 KiB
JavaScript
'use strict';
|
|
|
|
// This tests that --trace-env works.
|
|
const common = require('../common');
|
|
const { spawnSyncAndAssert } = require('../common/child_process');
|
|
const assert = require('assert');
|
|
const fixtures = require('../common/fixtures');
|
|
|
|
// Check reads from the Node.js internals.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('empty.js')], {
|
|
stderr(output) {
|
|
// This is a non-exhaustive list of the environment variables checked
|
|
// during startup of an empty script at the time this test was written.
|
|
// If the internals remove any one of them, the checks here can be updated
|
|
// accordingly.
|
|
if (common.hasIntl) {
|
|
assert.match(output, /get "NODE_ICU_DATA"/);
|
|
}
|
|
if (common.hasCrypto) {
|
|
assert.match(output, /get "NODE_EXTRA_CA_CERTS"/);
|
|
|
|
const { hasOpenSSL3 } = require('../common/crypto');
|
|
if (hasOpenSSL3) {
|
|
assert.match(output, /get "OPENSSL_CONF"/);
|
|
}
|
|
}
|
|
assert.match(output, /get "NODE_DEBUG_NATIVE"/);
|
|
assert.match(output, /get "NODE_COMPILE_CACHE"/);
|
|
assert.match(output, /get "NODE_NO_WARNINGS"/);
|
|
assert.match(output, /get "NODE_V8_COVERAGE"/);
|
|
assert.match(output, /get "NODE_DEBUG"/);
|
|
assert.match(output, /get "NODE_CHANNEL_FD"/);
|
|
assert.match(output, /get "NODE_UNIQUE_ID"/);
|
|
if (common.isWindows) {
|
|
assert.match(output, /get "USERPROFILE"/);
|
|
} else {
|
|
assert.match(output, /get "HOME"/);
|
|
}
|
|
assert.match(output, /get "NODE_PATH"/);
|
|
assert.match(output, /get "WATCH_REPORT_DEPENDENCIES"/);
|
|
}
|
|
});
|
|
|
|
// Check get from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'get.js') ], {
|
|
env: {
|
|
...process.env,
|
|
FOO: 'FOO',
|
|
BAR: undefined,
|
|
}
|
|
}, {
|
|
stderr(output) {
|
|
assert.match(output, /get "FOO"/);
|
|
assert.match(output, /get "BAR"/);
|
|
}
|
|
});
|
|
|
|
// Check set from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'set.js') ], {
|
|
stderr(output) {
|
|
assert.match(output, /set "FOO"/);
|
|
}
|
|
});
|
|
|
|
// Check define from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'define.js') ], {
|
|
stderr(output) {
|
|
assert.match(output, /set "FOO"/);
|
|
}
|
|
});
|
|
|
|
// Check query from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'query.js') ], {
|
|
env: {
|
|
...process.env,
|
|
FOO: 'FOO',
|
|
BAR: undefined,
|
|
BAZ: undefined,
|
|
}
|
|
}, {
|
|
stderr(output) {
|
|
assert.match(output, /query "FOO"/);
|
|
assert.match(output, /query "BAR"/);
|
|
assert.match(output, /query "BAZ"/);
|
|
}
|
|
});
|
|
|
|
// Check delete from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'delete.js') ], {
|
|
stderr(output) {
|
|
assert.match(output, /delete "FOO"/);
|
|
}
|
|
});
|
|
|
|
// Check enumeration from user land.
|
|
spawnSyncAndAssert(process.execPath, ['--trace-env', fixtures.path('process-env', 'enumerate.js') ], {
|
|
stderr(output) {
|
|
const matches = output.match(/enumerate environment variables/g);
|
|
assert.strictEqual(matches.length, 2);
|
|
}
|
|
});
|