1313import java .util .Map ;
1414import java .util .Properties ;
1515import java .util .function .BiConsumer ;
16+ import java .util .function .Predicate ;
1617
1718import static java .util .Arrays .asList ;
1819import static org .junit .jupiter .api .Assertions .assertEquals ;
20+ import static org .junit .jupiter .api .Assertions .assertTrue ;
1921
2022public 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