From b29a227c88cc74c8a6791f8047edd5c704c249cd Mon Sep 17 00:00:00 2001 From: root Date: Sat, 27 Jun 2020 20:31:32 +0200 Subject: [PATCH] fix interpolation order add interpolation order test --- src/dotenv/main.py | 2 +- tests/test_main.py | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/dotenv/main.py b/src/dotenv/main.py index c821ef73..c34ed138 100644 --- a/src/dotenv/main.py +++ b/src/dotenv/main.py @@ -220,7 +220,7 @@ def _replacement(name, default): then look into the dotenv variables """ default = default if default is not None else "" - ret = os.getenv(name, new_values.get(name, default)) + ret = new_values.get(name, os.getenv(name, default)) return ret # type: ignore def _re_sub_callback(match): diff --git a/tests/test_main.py b/tests/test_main.py index 04d86509..69cf08af 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -334,6 +334,9 @@ def test_dotenv_values_file(dotenv_file): # Reused ({"b": "c"}, "a=${b}${b}", True, {"a": "cc"}), + + # interpolate with re-defined var + ({"b": "b_os_env"}, "b='b_dot_env'\na=a/${b}", True, {"a": "a/b_dot_env", "b": "b_dot_env"}) ], ) def test_dotenv_values_stream(env, string, interpolate, expected):