diff --git a/cloud/tests/test_queue_sandbox.py b/cloud/tests/test_queue_sandbox.py index 2f411a6..df73f08 100644 --- a/cloud/tests/test_queue_sandbox.py +++ b/cloud/tests/test_queue_sandbox.py @@ -655,9 +655,21 @@ class TestImportRobustness(unittest.TestCase): """ def test_stdlib_queue_not_shadowed(self): - # 本文件加载后,sys.modules["queue"] 仍是标准库,不是 cloud/queue.py。 - import queue as stdlib_queue + # 本文件用的 TaskQueue 必须是 cloud.queue 包导入的,与顶层 + # sys.modules["queue"] 无关:全量套件里已有其它测试把 cloud/ + # 插进 sys.path 并以顶层名 import queue,sys.modules["queue"] + # 在该语境下就是 cloud/queue.py,那是其它测试的污染,不是 + # 本文件的依赖——本断言绝不能读 sys.modules["queue"]。 + # 标准库 queue 改从 stdlib 目录按路径独立加载、与包导入对照。 + import importlib.util + import sysconfig + self.assertEqual(TaskQueue.__module__, "cloud.queue") + stdlib_path = sysconfig.get_paths()["stdlib"] + "/queue.py" + spec = importlib.util.spec_from_file_location( + "stdlib_queue_for_robustness_check", stdlib_path) + stdlib_queue = importlib.util.module_from_spec(spec) + spec.loader.exec_module(stdlib_queue) self.assertNotIn("cloud", stdlib_queue.__file__) self.assertNotIn("TaskQueue", dir(stdlib_queue)) # 包导入的 TaskQueue 与标准库无关。