rust-analyzer/editors/code/tests/unit/settings.test.ts
2024-07-06 20:23:14 +02:00

63 lines
2.4 KiB
TypeScript

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");
});
});
}