Skip to content

Commit d18904c

Browse files
committed
Fix improper reading of .testcontainers.properties
The environment variables were not overridden from the .testcontainers.properties file for ryuk variables. This causes the properties file to never actually be used. This commit detects the environment variable, and if unspecified falls back to the properties file, and if not specifed, defaults to false
1 parent fe206eb commit d18904c

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

core/testcontainers/core/config.py

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
import docker
1313

14+
ENABLE_FLAGS = ("yes", "true", "t", "y", "1")
15+
1416

1517
class ConnectionMode(Enum):
1618
bridge_ip = "bridge_ip"
@@ -52,7 +54,7 @@ def get_bool_env(name: str) -> bool:
5254
Defaults to False.
5355
"""
5456
value = environ.get(name, "")
55-
return value.lower() in ("yes", "true", "t", "y", "1")
57+
return value.lower() in ENABLE_FLAGS
5658

5759

5860
TC_FILE = ".testcontainers.properties"
@@ -96,11 +98,20 @@ def read_tc_properties() -> dict[str, str]:
9698

9799
@dataclass
98100
class TestcontainersConfiguration:
101+
def _render_bool(self, env_name: str, prop_name: str) -> bool:
102+
env_val = environ.get(env_name, None)
103+
if env_val is not None:
104+
return env_val.lower() in ENABLE_FLAGS
105+
prop_val = self.tc_properties.get(prop_name, None)
106+
if prop_val is not None:
107+
return prop_val.lower() in ENABLE_FLAGS
108+
return False
109+
99110
max_tries: int = int(environ.get("TC_MAX_TRIES", "120"))
100111
sleep_time: float = float(environ.get("TC_POOLING_INTERVAL", "1"))
101112
ryuk_image: str = environ.get("RYUK_CONTAINER_IMAGE", "testcontainers/ryuk:0.8.1")
102-
ryuk_privileged: bool = get_bool_env("TESTCONTAINERS_RYUK_PRIVILEGED")
103-
ryuk_disabled: bool = get_bool_env("TESTCONTAINERS_RYUK_DISABLED")
113+
_ryuk_privileged: Optional[bool] = None
114+
_ryuk_disabled: Optional[bool] = None
104115
_ryuk_docker_socket: str = ""
105116
ryuk_reconnection_timeout: str = environ.get("RYUK_RECONNECTION_TIMEOUT", "10s")
106117
tc_properties: dict[str, str] = field(default_factory=read_tc_properties)
@@ -129,6 +140,29 @@ def docker_auth_config(self, value: str) -> None:
129140
def tc_properties_get_tc_host(self) -> Union[str, None]:
130141
return self.tc_properties.get("tc.host")
131142

143+
@property
144+
def ryuk_privileged(self) -> bool:
145+
if self._ryuk_privileged:
146+
return self._ryuk_privileged
147+
self._ryuk_privileged = self._render_bool("TESTCONTAINERS_RYUK_PRIVILEGED", "ryuk.container.privileged")
148+
return self._ryuk_privileged
149+
150+
@ryuk_privileged.setter
151+
def ryuk_privileged(self, value: bool) -> None:
152+
self._ryuk_privileged = value
153+
154+
@property
155+
def ryuk_disabled(self) -> bool:
156+
if self._ryuk_disabled:
157+
return self._ryuk_disabled
158+
159+
self._ryuk_disabled = self._render_bool("TESTCONTAINERS_RYUK_DISABLED", "ryuk.disabled")
160+
return self._ryuk_disabled
161+
162+
@ryuk_disabled.setter
163+
def ryuk_disabled(self, value: bool) -> None:
164+
self._ryuk_disabled = value
165+
132166
@property
133167
def timeout(self) -> float:
134168
return self.max_tries * self.sleep_time

0 commit comments

Comments
 (0)