test: test_queue_sandbox robustness 断言不再读 sys.modules["queue"](全量语境下该槽位已被其它测试的 cloud/ 遮蔽污染)

This commit is contained in:
host committed 2026-11-03 02:49:26 +00:00
1 parent 48e66d6c14
commit fddd08546d
1 file changed
+14 -2
+14 -2
View File
@@ -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 与标准库无关。