fix: rebase 合入修复(#215 已合并 + 执行器文案 + server 重导出)
ci / test (push) Failing after 30m37s

- cloud/server.py:重导出 handler_support._chv_vm_dead_from_row,
  沿用 main 的 split 重导出约定(test_chv_arch_maint_fe 从
  cloud.server 导入该名)。
- cloud/tests/test_coverage85_server2.py:执行器非法值文案期望
  跟随分支行为(valid 列表已含 cloud-hypervisor,main 新增
  的该用例原先按旧文案断言)。
- cloud/chv/compat215.py + test_chv_arch_maint_fe.py:#215
  (facc2a2)已合入 main,四模块已存在,替换清单本身未动;
  钉住项由“模块不存在”翻为“模块已存在”,tmpfs_isolated
  扫描白名单加 canonical 定义 cloud/sandbox_policy.py。
  R1/R2 替换本身未做(属合并后工作):语义已核对,
  gates.resolve_inside 与本地版逐行一致,
  sandbox_policy.tmpfs_isolated 对 cloud-hypervisor
  同样返回 False,未触发 R2 的停手条件。
This commit is contained in:
host committed 2026-11-08 10:22:51 +00:00
1 parent dba5620e29
commit 738982ce10
4 files changed
+20 -9

No files matched your search

+14 -4
View File
@@ -405,7 +405,10 @@ class PublicApiTypesTest(unittest.TestCase):
class ReplacementChecklistTest(unittest.TestCase):
def test_points_resolve_and_215_modules_absent(self):
def test_points_resolve_and_215_modules_present(self):
# #215 已合并:四模块已存在,替换清单待按项执行;
# 本测试钉住清单本身(R1/R2/R3、R3 不替换、R2
# 暂无调用方)与 shim 不越权(无 decide 等名字)。
by_id = {p["id"]: p for p in REPLACEMENT_POINTS}
self.assertEqual(set(by_id), {"R1", "R2", "R3"})
self.assertIsNotNone(resolve_inside)
@@ -414,21 +417,28 @@ class ReplacementChecklistTest(unittest.TestCase):
self.assertIn("resolve_inside", hardening)
for mod in ("cloud.gates", "cloud.sandbox_policy",
"cloud.timeouts", "cloud.quota"):
self.assertIsNone(importlib.util.find_spec(mod), mod)
self.assertIsNotNone(importlib.util.find_spec(mod), mod)
import cloud.chv.compat215 as m
self.assertFalse(hasattr(m, "resolve_module_timeout"))
self.assertFalse(hasattr(m, "decide"))
self.assertIsNone(by_id["R3"]["replacement"])
self.assertIsNone(by_id["R2"]["caller"])
def test_tmpfs_isolated_has_no_production_caller(self):
def test_tmpfs_isolated_only_shim_and_canonical(self):
# #215 已合并:cloud/sandbox_policy.py 是 canonical
# tmpfs_isolated 定义(非 shim 的调用方);除 shim
# 与 canonical 外,生产代码不得再提及该名字(有新
# 调用方时直接 import #215 版,见 R2 清单)。
hits = []
for f in (ROOT / "cloud").rglob("*.py"):
if "tests" in f.parts:
continue
if "tmpfs_isolated" in f.read_text():
hits.append(str(f.relative_to(ROOT)))
self.assertEqual(hits, ["cloud/chv/compat215.py"])
self.assertEqual(sorted(hits), sorted([
"cloud/chv/compat215.py",
"cloud/sandbox_policy.py",
]))
def _row(**kw):