|
7 | 7 | import logging |
8 | 8 | from contextlib import ExitStack |
9 | 9 | from functools import wraps |
10 | | -from os import rmdir |
| 10 | +from os import environ, rmdir |
11 | 11 | from pathlib import Path |
12 | 12 | from subprocess import PIPE, STDOUT, Popen |
13 | 13 | from tempfile import mkdtemp |
@@ -59,14 +59,16 @@ def __enter__(self) -> Any: |
59 | 59 | :since: 1.0.0 |
60 | 60 | """ |
61 | 61 |
|
62 | | - self._tmpdir = mkdtemp() |
| 62 | + self._tmpdir = mkdtemp(dir=environ.get("HOME")) |
63 | 63 |
|
64 | 64 | podman_sock = str(Path(self._tmpdir, "podman.sock").absolute()) |
65 | 65 |
|
66 | 66 | self._podman = PodmanClient(base_url=f"unix://{podman_sock}") |
67 | 67 | self._podman_daemon = Popen( |
68 | 68 | args=[ |
69 | 69 | "podman", |
| 70 | + "--out=/tmp/podman.log", |
| 71 | + "--log-level=debug", |
70 | 72 | "system", |
71 | 73 | "service", |
72 | 74 | f"--time={PODMAN_CONNECTION_MAX_IDLE_SECONDS}", |
@@ -137,15 +139,19 @@ def _wait_for_socket(self, sock: str) -> None: |
137 | 139 | :since: 1.0.0 |
138 | 140 | """ |
139 | 141 |
|
| 142 | + # Use variable for status to catch corner cases of fast closing sockets |
| 143 | + is_socket_available = False |
140 | 144 | sock_path = Path(sock) |
141 | 145 |
|
142 | 146 | for _ in range(0, 5 * PODMAN_CONNECTION_MAX_IDLE_SECONDS): |
143 | | - if sock_path.exists(): |
| 147 | + is_socket_available = sock_path.exists() |
| 148 | + |
| 149 | + if is_socket_available: |
144 | 150 | break |
145 | 151 |
|
146 | 152 | sleep(0.2) |
147 | 153 |
|
148 | | - if not sock_path.exists(): |
| 154 | + if not is_socket_available: |
149 | 155 | raise TimeoutError() |
150 | 156 |
|
151 | 157 | @staticmethod |
|
0 commit comments