Skip to content

Commit 46ee69b

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

File tree

2 files changed

+29
-2
lines changed

2 files changed

+29
-2
lines changed

src/dockerflow/version.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,22 @@
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+
if version_env_var != None:
26+
version_info["version"] = version_env_var
27+
return version_info
28+
if version_env_var != None:
29+
return { "version": version_env_var }
2330
return None

tests/core/test_version.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
# License, v. 2.0. If a copy of the MPL was not distributed with this
33
# file, you can obtain one at http://mozilla.org/MPL/2.0/.
44
import json
5+
import os
56

67
from dockerflow.version import get_version
78

@@ -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, mocker):
24+
content = {"spam": "eggs"}
25+
mocker.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, mocker):
36+
mocker.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)