Unnamed repository; edit this file 'description' to name the repository.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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');
        });
    });
}