@@ -51,7 +51,7 @@ def _fail_replace(src: str, dst: str) -> None:
5151 assert updated is False
5252
5353
54- def test_ensure_proxy_runs_container_as_current_user_and_forwards_userns_mode (
54+ def test_ensure_proxy_runs_container_as_current_user_and_omits_podman_userns_mode_on_docker (
5555 tmp_path : Path , monkeypatch
5656) -> None :
5757 class _FakeContainers :
@@ -87,7 +87,7 @@ def __init__(self) -> None:
8787 run_kwargs = manager .client .containers .run_kwargs # type: ignore[union-attr]
8888 assert run_kwargs is not None
8989 assert run_kwargs ["user" ] == "1234:2345"
90- assert run_kwargs [ "userns_mode" ] == "keep-id"
90+ assert "userns_mode" not in run_kwargs
9191 assert "ports" not in run_kwargs
9292 assert db_path .parent .exists ()
9393 assert ca_dir .exists ()
@@ -127,6 +127,74 @@ def __init__(self) -> None:
127127 assert run_kwargs ["userns_mode" ] == "keep-id"
128128
129129
130+ def test_ensure_datasette_omits_podman_userns_mode_on_docker (tmp_path : Path , monkeypatch ) -> None :
131+ class _FakeContainers :
132+ def __init__ (self ) -> None :
133+ self .run_kwargs : dict | None = None
134+
135+ def run (self , ** kwargs ):
136+ self .run_kwargs = kwargs
137+ return {"id" : "datasette" }
138+
139+ class _FakeClient :
140+ def __init__ (self ) -> None :
141+ self .containers = _FakeContainers ()
142+
143+ manager = object .__new__ (DockerManager )
144+ manager .client = _FakeClient () # type: ignore[assignment]
145+ manager .runtime = "docker"
146+
147+ monkeypatch .setattr (DockerManager , "find_datasette" , lambda self : None )
148+
149+ logs_db_path = tmp_path / "logs" / "logs.db"
150+ proxy_db_path = tmp_path / "proxy" / "proxy.db"
151+ manager .ensure_datasette (
152+ image = "vibepod/datasette:latest" ,
153+ logs_db_path = logs_db_path ,
154+ proxy_db_path = proxy_db_path ,
155+ port = 8001 ,
156+ userns_mode = "keep-id" ,
157+ )
158+
159+ run_kwargs = manager .client .containers .run_kwargs # type: ignore[union-attr]
160+ assert run_kwargs is not None
161+ assert "userns_mode" not in run_kwargs
162+
163+
164+ def test_ensure_proxy_forwards_podman_userns_mode (tmp_path : Path , monkeypatch ) -> None :
165+ class _FakeContainers :
166+ def __init__ (self ) -> None :
167+ self .run_kwargs : dict | None = None
168+
169+ def run (self , ** kwargs ):
170+ self .run_kwargs = kwargs
171+ return {"id" : "proxy" }
172+
173+ class _FakeClient :
174+ def __init__ (self ) -> None :
175+ self .containers = _FakeContainers ()
176+
177+ manager = object .__new__ (DockerManager )
178+ manager .client = _FakeClient () # type: ignore[assignment]
179+ manager .runtime = "podman"
180+
181+ monkeypatch .setattr (DockerManager , "find_proxy" , lambda self : None )
182+
183+ db_path = tmp_path / "proxy" / "proxy.db"
184+ ca_dir = tmp_path / "proxy" / "mitmproxy"
185+ manager .ensure_proxy (
186+ image = "vibepod/proxy:latest" ,
187+ db_path = db_path ,
188+ ca_dir = ca_dir ,
189+ network = "vibepod-network" ,
190+ userns_mode = "keep-id" ,
191+ )
192+
193+ run_kwargs = manager .client .containers .run_kwargs # type: ignore[union-attr]
194+ assert run_kwargs is not None
195+ assert run_kwargs ["userns_mode" ] == "keep-id"
196+
197+
130198def test_ensure_proxy_connects_existing_proxy_to_requested_network (monkeypatch ) -> None :
131199 connected : list [tuple [object , str ]] = []
132200
0 commit comments