mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			63 lines
		
	
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			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");
 | |
|         });
 | |
|     });
 | |
| }
 | 
