| 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 = 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 () => { |
| 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 = await 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 = await substituteVariablesInEnv(envJson); |
| assert.deepStrictEqual(actualEnv["USING_VSCODE_VAR"], "code"); |
| }); |
| }); |
| } |