Skip to content

Commit fa18e91

Browse files
committed
Java: Load .env from parent directories
1 parent 5555b32 commit fa18e91

File tree

1 file changed

+29
-3
lines changed

1 file changed

+29
-3
lines changed

java/src/test/java/de/gdata/test/integration/RealApiIntegrationTests.java

Lines changed: 29 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import static org.testng.AssertJUnit.assertEquals;
77

88
import java.io.ByteArrayInputStream;
9+
import java.io.File;
910
import java.io.IOException;
1011
import java.net.URI;
1112
import java.net.URISyntaxException;
@@ -16,6 +17,7 @@
1617
import java.time.format.DateTimeFormatter;
1718
import java.util.concurrent.ExecutionException;
1819
import java.util.concurrent.TimeoutException;
20+
import java.util.Optional;
1921

2022
import org.jetbrains.annotations.NotNull;
2123
import org.junit.jupiter.api.AfterAll;
@@ -41,11 +43,35 @@
4143
import io.github.cdimascio.dotenv.Dotenv;
4244

4345
public class RealApiIntegrationTests {
44-
private static final Dotenv dotenv = Dotenv.configure()
45-
.ignoreIfMissing()
46-
.load();
46+
private static final Dotenv dotenv = getDotenv();
4747
private static Vaas vaas;
4848

49+
private static Dotenv getDotenv() {
50+
var dotenv = Dotenv.configure()
51+
.ignoreIfMissing();
52+
53+
Optional<File> envFile = findFile(".env");
54+
55+
if (envFile.isPresent()) {
56+
var directory = envFile.get().getParent();
57+
dotenv.directory(directory);
58+
}
59+
60+
return dotenv.load();
61+
}
62+
63+
private static Optional<File> findFile(String name) {
64+
File currentDirectory = new File(System.getProperty("user.dir"));
65+
File file = new File(currentDirectory, name);
66+
67+
while (!file.exists() && currentDirectory.getParentFile() != null) {
68+
currentDirectory = currentDirectory.getParentFile();
69+
file = new File(currentDirectory, name);
70+
}
71+
72+
return file.exists() ? Optional.of(file) : Optional.empty();
73+
}
74+
4975
@BeforeAll
5076
public static void setUpAll() throws URISyntaxException, InterruptedException, IOException, ExecutionException,
5177
TimeoutException, VaasAuthenticationException {

0 commit comments

Comments
 (0)