// Flags: --permission --allow-child-process --allow-fs-read=* 'use strict'; const common = require('../common'); const { isMainThread } = require('worker_threads'); if (!isMainThread) { common.skip('This test only works on a main thread'); } const assert = require('assert'); const childProcess = require('child_process'); const fs = require('fs'); if (process.argv[2] === 'child') { assert.throws(() => { fs.writeFileSync(__filename, 'should not write'); }, common.expectsError({ code: 'ERR_ACCESS_DENIED', permission: 'FileSystemWrite', })); process.exit(0); } // Guarantee the initial state { assert.ok(process.permission.has('child')); } // When a permission is set by cli, the process shouldn't be able // to spawn unless --allow-child-process is sent { // doesNotThrow childProcess.spawnSync(process.execPath, ['--version']); childProcess.execSync(...common.escapePOSIXShell`"${process.execPath}" --version`); const child = childProcess.fork(__filename, ['child']); child.on('close', common.mustCall()); childProcess.execFileSync(process.execPath, ['--version']); }