Skip to content

Commit e318072

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

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-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: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
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
8+
from unittest import mock
79

810

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

0 commit comments

Comments
 (0)