Skip to content

Commit 5138235

Browse files
authored
Merge pull request jooby-project#2468 from imeszaros/config-origin-fix
Do not override config origins
2 parents 45e2f24 + 36f8414 commit 5138235

File tree

2 files changed

+46
-32
lines changed

2 files changed

+46
-32
lines changed

jooby/src/main/java/io/jooby/Environment.java

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -362,7 +362,7 @@ private static Config resolveConfig(@Nonnull EnvironmentOptions options, Path us
362362
}
363363

364364
for (String name : names) {
365-
Config it = fileConfig(userdir, rootdirs, name);
365+
Config it = fileConfig(rootdirs, name);
366366
if (it == null) {
367367
// classpath
368368
it = classpathConfig(options.getClassLoader(), cpdirs, name);
@@ -410,15 +410,11 @@ private static Config resolveConfig(@Nonnull EnvironmentOptions options, Path us
410410
return pid;
411411
}
412412

413-
private static Config fileConfig(Path userdir, Path[] basedirs, String name) {
413+
private static Config fileConfig(Path[] basedirs, String name) {
414414
for (Path basedir : basedirs) {
415415
Path file = basedir.resolve(name);
416416
if (Files.exists(file)) {
417-
String origin = file.startsWith(userdir)
418-
? userdir.relativize(file).toString()
419-
: file.toString();
420-
return ConfigFactory.parseFile(file.toFile(),
421-
ConfigParseOptions.defaults().setOriginDescription(origin));
417+
return ConfigFactory.parseFile(file.toFile());
422418
}
423419
}
424420
return null;
@@ -430,8 +426,7 @@ private static Config classpathConfig(ClassLoader classLoader, String[] basedirs
430426
? name
431427
: Stream.concat(Stream.of(basedir.split("/")), Stream.of(name))
432428
.collect(Collectors.joining("/"));
433-
Config config = ConfigFactory.parseResources(classLoader, file,
434-
ConfigParseOptions.defaults().setOriginDescription("classpath://" + file));
429+
Config config = ConfigFactory.parseResources(classLoader, file);
435430
if (!config.isEmpty()) {
436431
return config;
437432
}

jooby/src/test/java/io/jooby/EnvironmentTest.java

Lines changed: 42 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -13,46 +13,51 @@
1313
import java.util.Map;
1414
import java.util.Properties;
1515
import java.util.function.BiConsumer;
16+
import java.util.function.Predicate;
1617

1718
import static java.util.Arrays.asList;
1819
import static org.junit.jupiter.api.Assertions.assertEquals;
20+
import static org.junit.jupiter.api.Assertions.assertTrue;
1921

2022
public class EnvironmentTest {
2123

2224
@Test
2325
public void defaultEnv() {
2426

2527
env("foo", (env, conf) -> {
26-
assertEquals("[dev]\n"
27-
+ "└── system properties\n"
28-
+ " └── env variables\n"
29-
+ " └── classpath://env/foo/application.conf\n"
30-
+ " └── defaults", env.toString());
28+
assertEnvMatches(env,
29+
"[dev]"::equals,
30+
"└── system properties"::equals,
31+
" └── env variables"::equals,
32+
pathEndsMatch("env/foo/application.conf"),
33+
" └── defaults"::equals);
3134
assertEquals("[dev]", env.getActiveNames().toString());
3235
assertEquals(System.getProperty("user.dir"), conf.getString("user.dir"));
3336
assertEquals("bar", conf.getString("foo"));
3437
assertEquals(asList("a", "b", "c"), conf.getStringList("letters"));
3538
});
3639

3740
env("foo", mapOf("application.env", "PROD"), (env, conf) -> {
38-
assertEquals("[prod]\n"
39-
+ "└── system properties\n"
40-
+ " └── env variables\n"
41-
+ " └── classpath://env/foo/application.prod.conf\n"
42-
+ " └── classpath://env/foo/application.conf\n"
43-
+ " └── defaults", env.toString());
41+
assertEnvMatches(env,
42+
"[prod]"::equals,
43+
"└── system properties"::equals,
44+
" └── env variables"::equals,
45+
pathEndsMatch("env/foo/application.prod.conf"),
46+
pathEndsMatch("env/foo/application.conf"),
47+
" └── defaults"::equals);
4448
assertEquals("[prod]", env.getActiveNames().toString());
4549
assertEquals("bazz", conf.getString("foo"));
4650
assertEquals(asList("a", "b", "c"), conf.getStringList("letters"));
4751
});
4852

4953
env("foo", mapOf("application.env", "Test, bar"), (env, conf) -> {
50-
assertEquals("[test, bar]\n"
51-
+ "└── system properties\n"
52-
+ " └── env variables\n"
53-
+ " └── classpath://env/foo/application.test.conf\n"
54-
+ " └── classpath://env/foo/application.bar.conf\n"
55-
+ " └── defaults", env.toString());
54+
assertEnvMatches(env,
55+
"[test, bar]"::equals,
56+
"└── system properties"::equals,
57+
" └── env variables"::equals,
58+
pathEndsMatch("env/foo/application.test.conf"),
59+
pathEndsMatch("env/foo/application.bar.conf"),
60+
" └── defaults"::equals);
5661
assertEquals("[test, bar]", env.getActiveNames().toString());
5762
assertEquals("test", conf.getString("foo"));
5863
assertEquals(asList("d"), conf.getStringList("letters"));
@@ -79,12 +84,13 @@ public void envfromfs() {
7984
.loadEnvironment(new EnvironmentOptions().setBasedir(basedir).setActiveNames("prod"));
8085
assertEquals("bazz", env.getConfig().getString("foo"));
8186
System.out.println(env.toString());
82-
assertEquals("[prod]\n"
83-
+ "└── system properties\n"
84-
+ " └── env variables\n"
85-
+ " └── "+ reldir.resolve("application.prod.conf")+"\n"
86-
+ " └── "+ reldir.resolve("application.conf")+"\n"
87-
+ " └── defaults", env.toString());
87+
assertEnvMatches(env,
88+
"[prod]"::equals,
89+
"└── system properties"::equals,
90+
" └── env variables"::equals,
91+
pathEndsMatch(reldir.resolve("application.prod.conf").toString()),
92+
pathEndsMatch(reldir.resolve("application.conf").toString()),
93+
" └── defaults"::equals);
8894
}
8995

9096
@Test
@@ -147,4 +153,17 @@ private Map<String, Object> mapOf(Object... values) {
147153
}
148154
return hash;
149155
}
156+
157+
private static Predicate<String> pathEndsMatch(String path) {
158+
return line -> line.replaceAll("\\\\", "/").endsWith(path.replaceAll("\\\\", "/"));
159+
}
160+
161+
@SafeVarargs
162+
private static void assertEnvMatches(Environment environment, Predicate<String>... predicates) {
163+
final String[] lines = environment.toString().split("\n");
164+
assertEquals(lines.length, predicates.length);
165+
for (int i = 0; i < predicates.length; ++i) {
166+
assertTrue(predicates[i].test(lines[i]), "Predicate for line nr. " + i + " should succeed.");
167+
}
168+
}
150169
}

0 commit comments

Comments
 (0)