@@ -247,6 +247,43 @@ def test_entry_point_loads_only_allowlisted_packages(statement: str) -> None:
247247 )
248248
249249
250+ @pytest .fixture
251+ def preloaded_startup_package (tmp_path , monkeypatch ):
252+ package = tmp_path / 'startup_package'
253+ package .mkdir ()
254+ (package / '__init__.py' ).write_text ('value = 1\n ' )
255+ (package / 'extra.py' ).write_text ('value = 2\n ' )
256+ (tmp_path / 'sitecustomize.py' ).write_text ('import startup_package\n ' )
257+ monkeypatch .setenv ('PYTHONPATH' , str (tmp_path ))
258+ return tmp_path
259+
260+
261+ def test_import_measurement_excludes_interpreter_startup (
262+ preloaded_startup_package ,
263+ ):
264+ assert (
265+ loaded_top_level_packages ("assert 'startup_package' in sys.modules" )
266+ == frozenset ()
267+ )
268+
269+
270+ def test_import_measurement_detects_new_package_after_startup (
271+ preloaded_startup_package ,
272+ ):
273+ (preloaded_startup_package / 'new_package.py' ).write_text ('value = 3\n ' )
274+ assert loaded_top_level_packages (
275+ "assert 'startup_package' in sys.modules\n import new_package"
276+ ) == frozenset ({'new_package' })
277+
278+
279+ def test_import_measurement_detects_new_submodule_of_preloaded_package (
280+ preloaded_startup_package ,
281+ ):
282+ assert loaded_top_level_packages (
283+ "assert 'startup_package' in sys.modules\n import startup_package.extra"
284+ ) == frozenset ({'startup_package' })
285+
286+
250287def test_constructing_agent_defers_optional_mcp_server_stack ():
251288 """A normal Agent does not import MCP just because its extra is installed."""
252289 if importlib .util .find_spec ('mcp' ) is None :
0 commit comments