From a27073149930e80252139dc9a80345f8d615c64f Mon Sep 17 00:00:00 2001 From: vepanimas Date: Tue, 11 Feb 2025 15:23:12 +0200 Subject: [PATCH] Allow duplicate keys for variables --- .../java/io/github/cdimascio/dotenv/DotenvBuilder.java | 2 +- src/test/java/tests/BasicTests.java | 10 ++++++++++ src/test/resources/duplicateVariable/.env | 6 ++++++ 3 files changed, 17 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/duplicateVariable/.env diff --git a/src/main/java/io/github/cdimascio/dotenv/DotenvBuilder.java b/src/main/java/io/github/cdimascio/dotenv/DotenvBuilder.java index 237370b..c7b025c 100644 --- a/src/main/java/io/github/cdimascio/dotenv/DotenvBuilder.java +++ b/src/main/java/io/github/cdimascio/dotenv/DotenvBuilder.java @@ -88,7 +88,7 @@ static class DotenvImpl implements Dotenv { public DotenvImpl(final List envVars) { final Map envVarsInFile = envVars.stream() - .collect(toMap(DotenvEntry::getKey, DotenvEntry::getValue)); + .collect(toMap(DotenvEntry::getKey, DotenvEntry::getValue, (a, b) -> b)); this.envVars = new HashMap<>(envVarsInFile); this.envVars.putAll(System.getenv()); diff --git a/src/test/java/tests/BasicTests.java b/src/test/java/tests/BasicTests.java index 0c04cdd..a2e6d0c 100644 --- a/src/test/java/tests/BasicTests.java +++ b/src/test/java/tests/BasicTests.java @@ -38,6 +38,16 @@ void dotenvIgnoreMalformed() { assertHostEnvVar(dotenv); } + @Test + void dotenvDuplicateVariable() { + final var dotenv = Dotenv.configure() + .directory("./duplicateVariable") + .load(); + + assertEquals("Overridden Again Variable", dotenv.get("MY_TEST_EV1")); + assertEquals("Variable 2", dotenv.get("MY_TEST_EV2")); + } + @Test void dotenvFilename() { final var dotenv = Dotenv.configure() diff --git a/src/test/resources/duplicateVariable/.env b/src/test/resources/duplicateVariable/.env new file mode 100644 index 0000000..e5d2bd8 --- /dev/null +++ b/src/test/resources/duplicateVariable/.env @@ -0,0 +1,6 @@ +MY_TEST_EV1=Simple Variable +MY_TEST_EV1=Overridden Variable +MY_TEST_EV1=Overridden Again Variable + +MY_TEST_EV2=Variable +MY_TEST_EV2=Variable 2