Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'editors/code/tests/unit/settings.test.ts')
-rw-r--r--editors/code/tests/unit/settings.test.ts61
1 files changed, 61 insertions, 0 deletions
diff --git a/editors/code/tests/unit/settings.test.ts b/editors/code/tests/unit/settings.test.ts
new file mode 100644
index 0000000000..dca4e38d13
--- /dev/null
+++ b/editors/code/tests/unit/settings.test.ts
@@ -0,0 +1,61 @@
+import * as assert from 'assert';
+import { Context } from '.';
+import { substituteVariablesInEnv } from '../../src/config';
+
+export async function getTests(ctx: Context) {
+ await ctx.suite('Server Env Settings', suite => {
+ suite.addTest('Replacing Env Variables', async () => {
+ const envJson = {
+ USING_MY_VAR: "${env:MY_VAR} test ${env:MY_VAR}",
+ MY_VAR: "test"
+ };
+ const expectedEnv = {
+ USING_MY_VAR: "test test test",
+ MY_VAR: "test"
+ };
+ const actualEnv = await substituteVariablesInEnv(envJson);
+ assert.deepStrictEqual(actualEnv, expectedEnv);
+ });
+
+ suite.addTest('Circular dependencies remain as is', async () => {
+ const envJson = {
+ A_USES_B: "${env:B_USES_A}",
+ B_USES_A: "${env:A_USES_B}",
+ C_USES_ITSELF: "${env:C_USES_ITSELF}",
+ D_USES_C: "${env:C_USES_ITSELF}",
+ E_IS_ISOLATED: "test",
+ F_USES_E: "${env:E_IS_ISOLATED}"
+ };
+ const expectedEnv = {
+ A_USES_B: "${env:B_USES_A}",
+ B_USES_A: "${env:A_USES_B}",
+ C_USES_ITSELF: "${env:C_USES_ITSELF}",
+ D_USES_C: "${env:C_USES_ITSELF}",
+ E_IS_ISOLATED: "test",
+ F_USES_E: "test"
+ };
+ const actualEnv = await substituteVariablesInEnv(envJson);
+ assert.deepStrictEqual(actualEnv, expectedEnv);
+ });
+
+ suite.addTest('Should support external variables', async () => {
+ const envJson = {
+ USING_EXTERNAL_VAR: "${env:TEST_VARIABLE} test ${env:TEST_VARIABLE}"
+ };
+ const expectedEnv = {
+ USING_EXTERNAL_VAR: "test test test"
+ };
+
+ const actualEnv = await substituteVariablesInEnv(envJson);
+ assert.deepStrictEqual(actualEnv, expectedEnv);
+ });
+
+ suite.addTest('should support VSCode variables', async () => {
+ const envJson = {
+ USING_VSCODE_VAR: "${workspaceFolderBasename}"
+ };
+ const actualEnv = await substituteVariablesInEnv(envJson);
+ assert.deepStrictEqual(actualEnv.USING_VSCODE_VAR, 'code');
+ });
+ });
+}