Skip to content

Commit e0362a1

Browse files
committed
Added better tests for TestcontainersConfig class
Removed unused method get_bool_env, as it was replaced with _render_bool Added more tests for proper test coverage for loading variables via testcontainers.properties file
1 parent d18904c commit e0362a1

File tree

2 files changed

+66
-15
lines changed

2 files changed

+66
-15
lines changed

core/testcontainers/core/config.py

Lines changed: 4 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,6 @@ def get_docker_socket() -> str:
4747
return "/var/run/docker.sock"
4848

4949

50-
def get_bool_env(name: str) -> bool:
51-
"""
52-
Get environment variable named `name` and convert it to bool.
53-
54-
Defaults to False.
55-
"""
56-
value = environ.get(name, "")
57-
return value.lower() in ENABLE_FLAGS
58-
59-
6050
TC_FILE = ".testcontainers.properties"
6151
TC_GLOBAL = Path.home() / TC_FILE
6252

@@ -142,8 +132,8 @@ def tc_properties_get_tc_host(self) -> Union[str, None]:
142132

143133
@property
144134
def ryuk_privileged(self) -> bool:
145-
if self._ryuk_privileged:
146-
return self._ryuk_privileged
135+
if self._ryuk_privileged is not None:
136+
return bool(self._ryuk_privileged)
147137
self._ryuk_privileged = self._render_bool("TESTCONTAINERS_RYUK_PRIVILEGED", "ryuk.container.privileged")
148138
return self._ryuk_privileged
149139

@@ -153,9 +143,8 @@ def ryuk_privileged(self, value: bool) -> None:
153143

154144
@property
155145
def ryuk_disabled(self) -> bool:
156-
if self._ryuk_disabled:
157-
return self._ryuk_disabled
158-
146+
if self._ryuk_disabled is not None:
147+
return bool(self._ryuk_disabled)
159148
self._ryuk_disabled = self._render_bool("TESTCONTAINERS_RYUK_DISABLED", "ryuk.disabled")
160149
return self._ryuk_disabled
161150

core/tests/test_config.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,68 @@ def test_read_tc_properties(monkeypatch: MonkeyPatch) -> None:
2828
assert config.tc_properties == {"tc.host": "some_value"}
2929

3030

31+
def test_set_tc_properties(monkeypatch: MonkeyPatch) -> None:
32+
"""
33+
Ensure the configuration file variables can be read if no environment variable is set
34+
"""
35+
with tempfile.TemporaryDirectory() as tmpdirname:
36+
file = f"{tmpdirname}/{TC_FILE}"
37+
with open(file, "w") as f:
38+
f.write("ryuk.disabled=true\n")
39+
f.write("ryuk.container.privileged=false\n")
40+
41+
monkeypatch.setattr("testcontainers.core.config.TC_GLOBAL", file)
42+
43+
config = TCC()
44+
45+
assert config.ryuk_disabled == True
46+
assert config.ryuk_privileged == False
47+
48+
49+
def test_override_tc_properties_1(monkeypatch: MonkeyPatch) -> None:
50+
"""
51+
Ensure that we can re-set the configuration variables programattically to override
52+
testcontainers.properties
53+
"""
54+
with tempfile.TemporaryDirectory() as tmpdirname:
55+
file = f"{tmpdirname}/{TC_FILE}"
56+
with open(file, "w") as f:
57+
f.write("ryuk.disabled=true\n")
58+
f.write("ryuk.container.privileged=false\n")
59+
60+
monkeypatch.setattr("testcontainers.core.config.TC_GLOBAL", file)
61+
62+
config = TCC()
63+
config.ryuk_disabled = False
64+
config.ryuk_privileged = True
65+
66+
assert config.ryuk_disabled == False
67+
assert config.ryuk_privileged == True
68+
69+
70+
def test_override_tc_properties_2(monkeypatch: MonkeyPatch) -> None:
71+
"""
72+
Ensure that we can override the testcontainers.properties with environment variables
73+
"""
74+
with tempfile.TemporaryDirectory() as tmpdirname:
75+
file = f"{tmpdirname}/{TC_FILE}"
76+
with open(file, "w") as f:
77+
f.write("ryuk.disabled=true\n")
78+
f.write("ryuk.container.privileged=false\n")
79+
80+
monkeypatch.setattr("testcontainers.core.config.TC_GLOBAL", file)
81+
82+
import os
83+
84+
os.environ["TESTCONTAINERS_RYUK_DISABLED"] = "false"
85+
os.environ["TESTCONTAINERS_RYUK_PRIVILEGED"] = "true"
86+
87+
config = TCC()
88+
89+
assert config.ryuk_disabled == False
90+
assert config.ryuk_privileged == True
91+
92+
3193
@mark.parametrize("docker_auth_config_env", ["key=value", ""])
3294
@mark.parametrize("warning_dict", [{}, {"key": "value"}, {"DOCKER_AUTH_CONFIG": "TEST"}])
3395
@mark.parametrize("warning_dict_post", [{}, {"key": "value"}, {"DOCKER_AUTH_CONFIG": "TEST"}])

0 commit comments

Comments
 (0)