Path: blob/main/src/vs/platform/environment/test/electron-main/environmentMainService.test.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import assert from 'assert';6import { EnvironmentMainService } from '../../electron-main/environmentMainService.js';7import product from '../../../product/common/product.js';8import { isLinux } from '../../../../base/common/platform.js';9import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';1011suite('EnvironmentMainService', () => {1213test('can unset and restore snap env variables', () => {14const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product });1516process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original';17process.env['TEST_ARG1'] = 'modified';18process.env['TEST_ARG2_SNAP'] = 'test_arg2';19process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = '';20process.env['TEST_ARG3'] = 'test_arg3_non_empty';2122// Unset snap env variables23service.unsetSnapExportedVariables();24if (isLinux) {25assert.strictEqual(process.env['TEST_ARG1'], 'original');26assert.strictEqual(process.env['TEST_ARG2'], undefined);27assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');28assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');29assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');30assert.strictEqual(process.env['TEST_ARG3'], undefined);31} else {32assert.strictEqual(process.env['TEST_ARG1'], 'modified');33assert.strictEqual(process.env['TEST_ARG2'], undefined);34assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');35assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');36assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');37assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');38}3940// Restore snap env variables41service.restoreSnapExportedVariables();42if (isLinux) {43assert.strictEqual(process.env['TEST_ARG1'], 'modified');44assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');45assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');46assert.strictEqual(process.env['TEST_ARG2'], undefined);47assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');48assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');49} else {50assert.strictEqual(process.env['TEST_ARG1'], 'modified');51assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');52assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');53assert.strictEqual(process.env['TEST_ARG2'], undefined);54assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');55assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');56}57});5859test('can invoke unsetSnapExportedVariables and restoreSnapExportedVariables multiple times', () => {60const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product });61// Mock snap environment62process.env['SNAP'] = '1';63process.env['SNAP_REVISION'] = 'test_revision';6465process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original';66process.env['TEST_ARG1'] = 'modified';67process.env['TEST_ARG2_SNAP'] = 'test_arg2';68process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = '';69process.env['TEST_ARG3'] = 'test_arg3_non_empty';7071// Unset snap env variables72service.unsetSnapExportedVariables();73service.unsetSnapExportedVariables();74service.unsetSnapExportedVariables();75if (isLinux) {76assert.strictEqual(process.env['TEST_ARG1'], 'original');77assert.strictEqual(process.env['TEST_ARG2'], undefined);78assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');79assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');80assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');81assert.strictEqual(process.env['TEST_ARG3'], undefined);82} else {83assert.strictEqual(process.env['TEST_ARG1'], 'modified');84assert.strictEqual(process.env['TEST_ARG2'], undefined);85assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');86assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');87assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');88assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');89}9091// Restore snap env variables92service.restoreSnapExportedVariables();93service.restoreSnapExportedVariables();94if (isLinux) {95assert.strictEqual(process.env['TEST_ARG1'], 'modified');96assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');97assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');98assert.strictEqual(process.env['TEST_ARG2'], undefined);99assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');100assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');101} else {102assert.strictEqual(process.env['TEST_ARG1'], 'modified');103assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');104assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');105assert.strictEqual(process.env['TEST_ARG2'], undefined);106assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');107assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');108}109110// Unset snap env variables111service.unsetSnapExportedVariables();112if (isLinux) {113assert.strictEqual(process.env['TEST_ARG1'], 'original');114assert.strictEqual(process.env['TEST_ARG2'], undefined);115assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');116assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');117assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');118assert.strictEqual(process.env['TEST_ARG3'], undefined);119} else {120assert.strictEqual(process.env['TEST_ARG1'], 'modified');121assert.strictEqual(process.env['TEST_ARG2'], undefined);122assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');123assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');124assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');125assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');126}127});128129ensureNoDisposablesAreLeakedInTestSuite();130});131132133