Skip to content

Commit 9f3bbdc

Browse files
committed
Adding an optional version env var for the version endpoint to return
1 parent 276ff50 commit 9f3bbdc

File tree

2 files changed

+28
-2
lines changed

2 files changed

+28
-2
lines changed

src/dockerflow/version.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,21 @@
99

1010
def get_version(root):
1111
"""
12-
Load and return the contents of version.json.
12+
Load and return the contents of version.json. If a DOCKERFLOW_VERSION
13+
env var is set, sets the "version" attribute to the env var value.
1314
1415
:param root: The root path that the ``version.json`` file will be opened
1516
:type root: str
1617
:returns: Content of ``version.json`` or None
1718
:rtype: dict or None
1819
"""
1920
version_json = os.path.join(root, "version.json")
21+
version_env_var = os.getenv("DOCKERFLOW_VERSION")
2022
if os.path.exists(version_json):
2123
with open(version_json, "r") as version_json_file:
22-
return json.load(version_json_file)
24+
version_info = json.load(version_json_file)
25+
version_info["version"] = version_env_var or version_info["version"]
26+
return version_info
27+
if version_env_var != None:
28+
return { "version": version_env_var }
2329
return None

tests/core/test_version.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import json
55

66
from dockerflow.version import get_version
7+
from unittest import mock
78

89

910
def test_get_version(tmpdir):
@@ -18,3 +19,22 @@ def test_get_version(tmpdir):
1819
def test_no_version_json(tmpdir):
1920
version = get_version(str(tmpdir))
2021
assert version is None
22+
23+
def test_env_var_override(tmpdir):
24+
content = {"spam": "eggs"}
25+
mock.patch.dict(os.environ, { "DOCKERFLOW_VERSION": "foo"})
26+
version_json = tmpdir.join("version.json")
27+
version_json.write(json.dumps(content))
28+
29+
version = get_version(str(tmpdir))
30+
assert version == {
31+
"spam": "eggs",
32+
"version": "foo"
33+
}
34+
35+
def test_env_var_override_with_no_json(tmpdir):
36+
mock.patch.dict(os.environ, { "DOCKERFLOW_VERSION": "foo"})
37+
version = get_version(str(tmpdir))
38+
assert version == {
39+
"version": "foo"
40+
}

0 commit comments

Comments
 (0)