node/test/parallel/test-dotenv-node-options.js
Yagiz Nizipli 769823e57c
src: add built-in .env file support
PR-URL: https://github.com/nodejs/node/pull/48890
Refs: https://github.com/orgs/nodejs/discussions/44975
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
2023-08-17 14:08:05 +00:00

74 lines
2.4 KiB
JavaScript

'use strict';
const common = require('../common');
const assert = require('node:assert');
const { describe, it } = require('node:test');
if (process.config.variables.node_without_node_options) {
common.skip('missing NODE_OPTIONS support');
}
const relativePath = '../fixtures/dotenv/node-options.env';
describe('.env supports NODE_OPTIONS', () => {
it('should have access to permission scope', async () => {
const code = `
require('assert')(process.permission.has('fs.read'));
`.trim();
const child = await common.spawnPromisified(
process.execPath,
[ `--env-file=${relativePath}`, '--eval', code ],
{ cwd: __dirname },
);
// NODE_NO_WARNINGS is set, so `stderr` should not contain
// "ExperimentalWarning: Permission is an experimental feature" message
// and thus be empty
assert.strictEqual(child.stdout, '');
assert.strictEqual(child.stderr, '');
assert.strictEqual(child.code, 0);
});
it('validate only read permissions are enabled', async () => {
const code = `
require('fs').writeFileSync(require('path').join(__dirname, 'should-not-write.txt'), 'hello', 'utf-8')
`.trim();
const child = await common.spawnPromisified(
process.execPath,
[ `--env-file=${relativePath}`, '--eval', code ],
{ cwd: __dirname },
);
assert.match(child.stderr, /Error: Access to this API has been restricted/);
assert.match(child.stderr, /code: 'ERR_ACCESS_DENIED'/);
assert.match(child.stderr, /permission: 'FileSystemWrite'/);
assert.strictEqual(child.code, 1);
});
it('TZ environment variable', { skip: !common.hasIntl || process.config.variables.icu_small }, async () => {
const code = `
require('assert')(new Date().toString().includes('Hawaii'))
`.trim();
const child = await common.spawnPromisified(
process.execPath,
[ `--env-file=${relativePath}`, '--eval', code ],
{ cwd: __dirname },
);
assert.strictEqual(child.stderr, '');
assert.strictEqual(child.code, 0);
});
it('should update UV_THREADPOOL_SIZE', async () => {
const code = `
require('assert').strictEqual(process.env.UV_THREADPOOL_SIZE, '5')
`.trim();
const child = await common.spawnPromisified(
process.execPath,
[ `--env-file=${relativePath}`, '--eval', code ],
{ cwd: __dirname },
);
assert.strictEqual(child.stderr, '');
assert.strictEqual(child.code, 0);
});
});