"""server._row_get 统一回归测试(CI 第二阶段 F811/mypy no-redef)。 背景:cloud/server.py 顶部 import cloud.peer_messages.row_get 为 _row_get,文件后部又定义了一份逐行相同的本地 _row_get (try return row[name] except KeyError/IndexError/TypeError -> None),遮蔽 import。本轨删本地定义,全部调用点解析到 import 的同一份实现。本测试钉住两点: - server._row_get 与 peer_messages.row_get 是同一对象; - 缺列/空行/正常取值三路行为与原来本地定义一致。 """ import sys import unittest from pathlib import Path try: from cloud.peer_messages import row_get as peer_row_get from cloud.server import _row_get except ImportError: sys.path.insert(0, str(Path(__file__).resolve().parents[2])) from cloud.peer_messages import row_get as peer_row_get from cloud.server import _row_get class RowGetUnifiedTest(unittest.TestCase): def test_same_implementation(self): self.assertIs(_row_get, peer_row_get) def test_present_and_missing(self): self.assertEqual(_row_get({"a": 1}, "a"), 1) self.assertIsNone(_row_get({"a": 1}, "missing")) self.assertIsNone(_row_get(None, "a")) def test_index_error_row(self): class OldRow: def __getitem__(self, name): raise IndexError(name) self.assertIsNone(_row_get(OldRow(), "missing_col")) if __name__ == "__main__": unittest.main()