Skip to content

Commit 80447af

Browse files
iroquetaBeta Bot
authored andcommitted
Cherry pick branch 'genexuslabs:FixTestGxReadEnvVar' into beta
1 parent 36c908c commit 80447af

File tree

2 files changed

+33
-47
lines changed

2 files changed

+33
-47
lines changed

java/pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@
159159
<artifactId>commons-dbcp2</artifactId>
160160
<version>2.9.0</version>
161161
</dependency>
162+
<dependency>
163+
<groupId>com.github.stefanbirkner</groupId>
164+
<artifactId>system-lambda</artifactId>
165+
<version>1.2.1</version>
166+
<scope>test</scope>
167+
</dependency>
162168
</dependencies>
163169

164170
<build>

java/src/test/java/com/genexus/TestGxReadEnvVar.java

Lines changed: 27 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.genexus.sampleapp.GXcfg;
55
import com.genexus.specific.java.Connect;
66
import com.genexus.util.EnvVarReader;
7+
import com.github.stefanbirkner.systemlambda.SystemLambda;
78
import org.junit.Assert;
89
import org.junit.Test;
910

@@ -22,55 +23,34 @@ public class TestGxReadEnvVar {
2223
private static final String SECOND_VALUE = "SecondDB_URL";
2324

2425
@Test
25-
public void testGxReadEnvVar()
26-
{
26+
public void testGxReadEnvVar() throws Exception {
2727
Connect.init();
2828
ModelContext modelContext = ModelContext.getModelContext(GXcfg.class);
29-
try {
30-
Map<String, String> newenv = new HashMap<>();
31-
newenv.put(FIRST_ENV_VAR, FIRST_VALUE);
32-
setEnvVar(newenv);
33-
String envVarValue = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
34-
Assert.assertEquals(FIRST_VALUE, envVarValue);
3529

36-
newenv.put(SECOND_ENV_VAR, SECOND_VALUE);
37-
setEnvVar(newenv);
38-
envVarValue = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
39-
Assert.assertEquals(SECOND_VALUE, envVarValue);
40-
newenv.put(FIRST_ENV_VAR, null);
41-
setEnvVar(newenv);
42-
newenv.put(SECOND_ENV_VAR, null);
43-
setEnvVar(newenv);
44-
} catch (Exception e) {
45-
e.printStackTrace();
46-
}
47-
}
48-
49-
private void setEnvVar(Map<String, String> newenv) throws Exception{
50-
try {
51-
Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
52-
Field theEnvironmentField = processEnvironmentClass.getDeclaredField("theEnvironment");
53-
theEnvironmentField.setAccessible(true);
54-
Map<String, String> env = (Map<String, String>) theEnvironmentField.get(null);
55-
env.putAll(newenv);
56-
Field theCaseInsensitiveEnvironmentField = processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment");
57-
theCaseInsensitiveEnvironmentField.setAccessible(true);
58-
Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
59-
cienv.putAll(newenv);
60-
} catch (NoSuchFieldException e)
61-
{
62-
Class[] classes = Collections.class.getDeclaredClasses();
63-
Map<String, String> env = System.getenv();
64-
for (Class cl : classes) {
65-
if ("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {
66-
Field field = cl.getDeclaredField("m");
67-
field.setAccessible(true);
68-
Object obj = field.get(env);
69-
Map<String, String> map = (Map<String, String>) obj;
70-
map.clear();
71-
map.putAll(newenv);
72-
}
73-
}
74-
}
30+
SystemLambda.withEnvironmentVariable(FIRST_ENV_VAR, FIRST_VALUE)
31+
.execute(() -> {
32+
String envVarValue = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
33+
Assert.assertEquals(FIRST_VALUE, envVarValue);
34+
});
35+
36+
SystemLambda.withEnvironmentVariable(SECOND_ENV_VAR, SECOND_VALUE)
37+
.execute(() -> {
38+
String envVarValue = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
39+
Assert.assertEquals(SECOND_VALUE, envVarValue);
40+
});
41+
42+
SystemLambda.withEnvironmentVariable(FIRST_ENV_VAR, FIRST_VALUE)
43+
.and(SECOND_ENV_VAR, SECOND_VALUE)
44+
.execute(() -> {
45+
String envVarValue1 = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
46+
Assert.assertEquals(SECOND_VALUE, envVarValue1); // Prioridad según tu EnvVarReader
47+
});
48+
49+
SystemLambda.withEnvironmentVariable(FIRST_ENV_VAR, null)
50+
.and(SECOND_ENV_VAR, null)
51+
.execute(() -> {
52+
String envVarValue = EnvVarReader.getEnvironmentVar(GX_DATASTORE, GX_PROP, null);
53+
Assert.assertNull(envVarValue);
54+
});
7555
}
7656
}

0 commit comments

Comments
 (0)