Merge pull request #12434 from atom/mb-atom-home-from-shell-child-process

Allow ATOM_HOME to be reassigned if the new value is valid
This commit is contained in:
Max Brunsfeld
2016-08-15 17:50:19 -07:00
committed by GitHub
2 changed files with 43 additions and 0 deletions

View File

@@ -1,6 +1,8 @@
/** @babel */
/* eslint-env jasmine */
import path from 'path'
import temp from 'temp'
import child_process from 'child_process'
import {updateProcessEnv, shouldGetEnvFromShell} from '../src/update-process-env'
import dedent from 'dedent'
@@ -44,6 +46,42 @@ describe('updateProcessEnv(launchEnv)', function () {
// with another object.
expect(process.env).toBe(initialProcessEnv)
})
it('allows ATOM_HOME to be overwritten only if the new value is a valid path', function () {
newAtomHomePath = temp.mkdirSync('atom-home')
process.env = {
WILL_BE_DELETED: 'hi',
NODE_ENV: 'the-node-env',
NODE_PATH: '/the/node/path',
ATOM_HOME: '/the/atom/home'
}
updateProcessEnv({PWD: '/the/dir'})
expect(process.env).toEqual({
PWD: '/the/dir',
NODE_ENV: 'the-node-env',
NODE_PATH: '/the/node/path',
ATOM_HOME: '/the/atom/home'
})
updateProcessEnv({PWD: '/the/dir', ATOM_HOME: path.join(newAtomHomePath, 'non-existent')})
expect(process.env).toEqual({
PWD: '/the/dir',
NODE_ENV: 'the-node-env',
NODE_PATH: '/the/node/path',
ATOM_HOME: '/the/atom/home'
})
updateProcessEnv({PWD: '/the/dir', ATOM_HOME: newAtomHomePath})
expect(process.env).toEqual({
PWD: '/the/dir',
NODE_ENV: 'the-node-env',
NODE_PATH: '/the/node/path',
ATOM_HOME: newAtomHomePath
})
})
})
describe('when the launch environment does not come from a shell', function () {

View File

@@ -1,5 +1,6 @@
/** @babel */
import fs from 'fs'
import {spawnSync} from 'child_process'
const ENVIRONMENT_VARIABLES_TO_PRESERVE = new Set([
@@ -37,6 +38,10 @@ function updateProcessEnv (launchEnv) {
process.env[key] = envToAssign[key]
}
}
if (envToAssign.ATOM_HOME && fs.existsSync(envToAssign.ATOM_HOME)) {
process.env.ATOM_HOME = envToAssign.ATOM_HOME
}
}
}