| import * as assert from "assert"; | |
| import type { 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 = 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 = substituteVariablesInEnv(envJson); | |
| assert.deepStrictEqual(actualEnv, expectedEnv); | |
| }); | |
| suite.addTest("Should support external variables", async () => { | |
| process.env["TEST_VARIABLE"] = "test"; | |
| const envJson = { | |
| USING_EXTERNAL_VAR: "${env:TEST_VARIABLE} test ${env:TEST_VARIABLE}", | |
| }; | |
| const expectedEnv = { | |
| USING_EXTERNAL_VAR: "test test test", | |
| }; | |
| const actualEnv = substituteVariablesInEnv(envJson); | |
| assert.deepStrictEqual(actualEnv, expectedEnv); | |
| delete process.env["TEST_VARIABLE"]; | |
| }); | |
| suite.addTest("should support VSCode variables", async () => { | |
| const envJson = { | |
| USING_VSCODE_VAR: "${workspaceFolderBasename}", | |
| }; | |
| const actualEnv = substituteVariablesInEnv(envJson); | |
| assert.deepStrictEqual(actualEnv["USING_VSCODE_VAR"], "code"); | |
| }); | |
| }); | |
| } |