Skip to content

Commit e989f8c

Browse files
authored
Merge branch 'main' into copy_file_tests
2 parents a78ce9f + 60d21f8 commit e989f8c

File tree

9 files changed

+1550
-32
lines changed

9 files changed

+1550
-32
lines changed

core/testcontainers/core/config.py

Lines changed: 35 additions & 12 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"
@@ -45,16 +47,6 @@ def get_docker_socket() -> str:
4547
return "/var/run/docker.sock"
4648

4749

48-
def get_bool_env(name: str) -> bool:
49-
"""
50-
Get environment variable named `name` and convert it to bool.
51-
52-
Defaults to False.
53-
"""
54-
value = environ.get(name, "")
55-
return value.lower() in ("yes", "true", "t", "y", "1")
56-
57-
5850
TC_FILE = ".testcontainers.properties"
5951
TC_GLOBAL = Path.home() / TC_FILE
6052

@@ -96,11 +88,20 @@ def read_tc_properties() -> dict[str, str]:
9688

9789
@dataclass
9890
class TestcontainersConfiguration:
91+
def _render_bool(self, env_name: str, prop_name: str) -> bool:
92+
env_val = environ.get(env_name, None)
93+
if env_val is not None:
94+
return env_val.lower() in ENABLE_FLAGS
95+
prop_val = self.tc_properties.get(prop_name, None)
96+
if prop_val is not None:
97+
return prop_val.lower() in ENABLE_FLAGS
98+
return False
99+
99100
max_tries: int = int(environ.get("TC_MAX_TRIES", "120"))
100101
sleep_time: float = float(environ.get("TC_POOLING_INTERVAL", "1"))
101102
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")
103+
_ryuk_privileged: Optional[bool] = None
104+
_ryuk_disabled: Optional[bool] = None
104105
_ryuk_docker_socket: str = ""
105106
ryuk_reconnection_timeout: str = environ.get("RYUK_RECONNECTION_TIMEOUT", "10s")
106107
tc_properties: dict[str, str] = field(default_factory=read_tc_properties)
@@ -129,6 +130,28 @@ def docker_auth_config(self, value: str) -> None:
129130
def tc_properties_get_tc_host(self) -> Union[str, None]:
130131
return self.tc_properties.get("tc.host")
131132

133+
@property
134+
def ryuk_privileged(self) -> bool:
135+
if self._ryuk_privileged is not None:
136+
return bool(self._ryuk_privileged)
137+
self._ryuk_privileged = self._render_bool("TESTCONTAINERS_RYUK_PRIVILEGED", "ryuk.container.privileged")
138+
return self._ryuk_privileged
139+
140+
@ryuk_privileged.setter
141+
def ryuk_privileged(self, value: bool) -> None:
142+
self._ryuk_privileged = value
143+
144+
@property
145+
def ryuk_disabled(self) -> bool:
146+
if self._ryuk_disabled is not None:
147+
return bool(self._ryuk_disabled)
148+
self._ryuk_disabled = self._render_bool("TESTCONTAINERS_RYUK_DISABLED", "ryuk.disabled")
149+
return self._ryuk_disabled
150+
151+
@ryuk_disabled.setter
152+
def ryuk_disabled(self, value: bool) -> None:
153+
self._ryuk_disabled = value
154+
132155
@property
133156
def timeout(self) -> float:
134157
return self.max_tries * self.sleep_time

core/testcontainers/core/container.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -236,15 +236,17 @@ def get_container_host_ip(self) -> str:
236236
connection_mode: ConnectionMode
237237
connection_mode = self.get_docker_client().get_connection_mode()
238238

239-
# mypy:
240-
container = self._container
241-
assert container is not None
242-
243239
if connection_mode == ConnectionMode.docker_host:
244240
return self.get_docker_client().host()
245241
elif connection_mode == ConnectionMode.gateway_ip:
242+
# mypy:
243+
container = self._container
244+
assert container is not None
246245
return self.get_docker_client().gateway_ip(container.id)
247246
elif connection_mode == ConnectionMode.bridge_ip:
247+
# mypy:
248+
container = self._container
249+
assert container is not None
248250
return self.get_docker_client().bridge_ip(container.id)
249251
else:
250252
# ensure that we covered all possible connection_modes

0 commit comments

Comments
 (0)