11package com .devonfw .tools .ide .tool .vscode ;
22
33import java .util .ArrayList ;
4+ import java .util .HashMap ;
45import java .util .List ;
6+ import java .util .Map ;
57
68import org .junit .jupiter .api .Test ;
79
810import com .devonfw .tools .ide .context .AbstractIdeContextTest ;
11+ import com .devonfw .tools .ide .context .AbstractIdeTestContext ;
912import com .devonfw .tools .ide .context .IdeTestContext ;
1013import com .devonfw .tools .ide .context .ProcessContextTestImpl ;
14+ import com .devonfw .tools .ide .os .SystemInfoMock ;
1115import com .devonfw .tools .ide .process .ProcessContext ;
1216import com .devonfw .tools .ide .process .ProcessMode ;
1317import com .devonfw .tools .ide .process .ProcessResult ;
@@ -114,6 +118,34 @@ private void checkInstallation(IdeTestContext context) {
114118 assertThat (context ).logAtSuccess ().hasMessageContaining ("Successfully installed vscode in version 1.92.1" );
115119 }
116120
121+ @ Test
122+ void testConfigureToolArgsSetsWslEnvVarOnWsl () {
123+
124+ // arrange
125+ IdeTestContext context = newContext (PROJECT_VSCODE );
126+ context .setSystemInfo (SystemInfoMock .LINUX_WSL_X64 );
127+ Vscode commandlet = new Vscode (context );
128+ EnvCapturingProcessContext pc = new EnvCapturingProcessContext (context );
129+ // act
130+ commandlet .configureToolArgs (pc , ProcessMode .DEFAULT , List .of ());
131+ // assert
132+ assertThat (pc .getEnvVar ("DONT_PROMPT_WSL_INSTALL" )).isEqualTo ("1" );
133+ }
134+
135+ @ Test
136+ void testConfigureToolArgsDoesNotSetWslEnvVarOnNonWsl () {
137+
138+ // arrange
139+ IdeTestContext context = newContext (PROJECT_VSCODE );
140+ context .setSystemInfo (SystemInfoMock .LINUX_X64 );
141+ Vscode commandlet = new Vscode (context );
142+ EnvCapturingProcessContext pc = new EnvCapturingProcessContext (context );
143+ // act
144+ commandlet .configureToolArgs (pc , ProcessMode .DEFAULT , List .of ());
145+ // assert
146+ assertThat (pc .getEnvVar ("DONT_PROMPT_WSL_INSTALL" )).isNull ();
147+ }
148+
117149 /**
118150 * Test double for {@link Vscode} that captures CLI arguments passed to {@link #runTool(ProcessContext, ProcessMode, List)}
119151 * so tests can assert command construction without spawning an external process.
@@ -137,4 +169,29 @@ public ProcessResult runTool(ProcessContext pc, ProcessMode processMode, List<St
137169 return new ProcessResultImpl ("code" , "code" , 0 , List .of ());
138170 }
139171 }
172+
173+ /**
174+ * {@link ProcessContextTestImpl} subclass that captures calls to {@link #withEnvVar(String, String)} for test assertions.
175+ */
176+ private static class EnvCapturingProcessContext extends ProcessContextTestImpl {
177+
178+ private final Map <String , String > capturedEnvVars = new HashMap <>();
179+
180+ private EnvCapturingProcessContext (IdeTestContext context ) {
181+
182+ super (context );
183+ }
184+
185+ @ Override
186+ public ProcessContext withEnvVar (String key , String value ) {
187+
188+ this .capturedEnvVars .put (key , value );
189+ return super .withEnvVar (key , value );
190+ }
191+
192+ String getEnvVar (String key ) {
193+
194+ return this .capturedEnvVars .get (key );
195+ }
196+ }
140197}
0 commit comments