Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/src/vs/platform/environment/test/electron-main/environmentMainService.test.ts
3296 views
1
/*---------------------------------------------------------------------------------------------
2
* Copyright (c) Microsoft Corporation. All rights reserved.
3
* Licensed under the MIT License. See License.txt in the project root for license information.
4
*--------------------------------------------------------------------------------------------*/
5
6
import assert from 'assert';
7
import { EnvironmentMainService } from '../../electron-main/environmentMainService.js';
8
import product from '../../../product/common/product.js';
9
import { isLinux } from '../../../../base/common/platform.js';
10
import { ensureNoDisposablesAreLeakedInTestSuite } from '../../../../base/test/common/utils.js';
11
12
suite('EnvironmentMainService', () => {
13
14
test('can unset and restore snap env variables', () => {
15
const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product });
16
17
process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original';
18
process.env['TEST_ARG1'] = 'modified';
19
process.env['TEST_ARG2_SNAP'] = 'test_arg2';
20
process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = '';
21
process.env['TEST_ARG3'] = 'test_arg3_non_empty';
22
23
// Unset snap env variables
24
service.unsetSnapExportedVariables();
25
if (isLinux) {
26
assert.strictEqual(process.env['TEST_ARG1'], 'original');
27
assert.strictEqual(process.env['TEST_ARG2'], undefined);
28
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
29
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
30
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
31
assert.strictEqual(process.env['TEST_ARG3'], undefined);
32
} else {
33
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
34
assert.strictEqual(process.env['TEST_ARG2'], undefined);
35
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
36
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
37
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
38
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
39
}
40
41
// Restore snap env variables
42
service.restoreSnapExportedVariables();
43
if (isLinux) {
44
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
45
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
46
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
47
assert.strictEqual(process.env['TEST_ARG2'], undefined);
48
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
49
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
50
} else {
51
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
52
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
53
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
54
assert.strictEqual(process.env['TEST_ARG2'], undefined);
55
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
56
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
57
}
58
});
59
60
test('can invoke unsetSnapExportedVariables and restoreSnapExportedVariables multiple times', () => {
61
const service = new EnvironmentMainService({ '_': [] }, { '_serviceBrand': undefined, ...product });
62
// Mock snap environment
63
process.env['SNAP'] = '1';
64
process.env['SNAP_REVISION'] = 'test_revision';
65
66
process.env['TEST_ARG1_VSCODE_SNAP_ORIG'] = 'original';
67
process.env['TEST_ARG1'] = 'modified';
68
process.env['TEST_ARG2_SNAP'] = 'test_arg2';
69
process.env['TEST_ARG3_VSCODE_SNAP_ORIG'] = '';
70
process.env['TEST_ARG3'] = 'test_arg3_non_empty';
71
72
// Unset snap env variables
73
service.unsetSnapExportedVariables();
74
service.unsetSnapExportedVariables();
75
service.unsetSnapExportedVariables();
76
if (isLinux) {
77
assert.strictEqual(process.env['TEST_ARG1'], 'original');
78
assert.strictEqual(process.env['TEST_ARG2'], undefined);
79
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
80
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
81
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
82
assert.strictEqual(process.env['TEST_ARG3'], undefined);
83
} else {
84
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
85
assert.strictEqual(process.env['TEST_ARG2'], undefined);
86
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
87
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
88
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
89
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
90
}
91
92
// Restore snap env variables
93
service.restoreSnapExportedVariables();
94
service.restoreSnapExportedVariables();
95
if (isLinux) {
96
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
97
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
98
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
99
assert.strictEqual(process.env['TEST_ARG2'], undefined);
100
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
101
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
102
} else {
103
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
104
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
105
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
106
assert.strictEqual(process.env['TEST_ARG2'], undefined);
107
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
108
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
109
}
110
111
// Unset snap env variables
112
service.unsetSnapExportedVariables();
113
if (isLinux) {
114
assert.strictEqual(process.env['TEST_ARG1'], 'original');
115
assert.strictEqual(process.env['TEST_ARG2'], undefined);
116
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
117
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
118
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
119
assert.strictEqual(process.env['TEST_ARG3'], undefined);
120
} else {
121
assert.strictEqual(process.env['TEST_ARG1'], 'modified');
122
assert.strictEqual(process.env['TEST_ARG2'], undefined);
123
assert.strictEqual(process.env['TEST_ARG1_VSCODE_SNAP_ORIG'], 'original');
124
assert.strictEqual(process.env['TEST_ARG2_SNAP'], 'test_arg2');
125
assert.strictEqual(process.env['TEST_ARG3_VSCODE_SNAP_ORIG'], '');
126
assert.strictEqual(process.env['TEST_ARG3'], 'test_arg3_non_empty');
127
}
128
});
129
130
ensureNoDisposablesAreLeakedInTestSuite();
131
});
132
133