diff --git a/src/agent_env/env/envs/computer/utils/site_proxy.py b/src/agent_env/env/envs/computer/utils/site_proxy.py index 64fdc3728..81c4cc421 100644 --- a/src/agent_env/env/envs/computer/utils/site_proxy.py +++ b/src/agent_env/env/envs/computer/utils/site_proxy.py @@ -25,7 +25,6 @@ import hashlib import json import os -import pwd import re import shutil import socket @@ -41,6 +40,11 @@ from typing import Optional from urllib.parse import urlsplit, urlunsplit +try: + import pwd +except ImportError: # Windows, which agent-env does not target, imports is_local and matches from here on its host. + pwd = None + HOSTS_BEGIN = "# agentenv sites" HOSTS_END = "# end agentenv sites" LOOPBACK = "127.0.0.1" diff --git a/tst/unit/env/envs/test_computer_site_proxy.py b/tst/unit/env/envs/test_computer_site_proxy.py index 4708de923..b8437438d 100644 --- a/tst/unit/env/envs/test_computer_site_proxy.py +++ b/tst/unit/env/envs/test_computer_site_proxy.py @@ -14,6 +14,7 @@ import socket import ssl import struct +import subprocess import sys import urllib.error from datetime import timedelta @@ -984,6 +985,12 @@ def missing(name): assert (Config.load(str(serve_path)).user, Config.load(str(serve_path)).serve_user) == ("agent", "nobody") +def test_the_proxy_imports_when_pwd_is_unavailable(): + subprocess.run([sys.executable, "-c", "import sys; sys.modules['pwd'] = None; " + "from agent_env.env.envs.computer.utils import site_proxy, sites; assert site_proxy.pwd is None"], + check=True) + + def test_keep_starts_serve_again_each_time_it_ends(monkeypatch): runs = []