@@ -435,24 +435,48 @@ def test_ups_uses_push_face_for_push_intent(self) -> None:
435435
436436
437437class UnverifiedParityTests (unittest .TestCase ):
438- """CLI exit 127 与钩子 skipped 口径对齐(此前 CLI 报失败)。"""
438+ """rc2/ 127 按场景分流:rc2 = unverified(两处一致);rc127 = 故意分歧。
439439
440- def test_rc_127_is_unverified_in_run_per_language (self ) -> None :
440+ check CLI 是 CI/健康面——工具缺失必须红(环境无关性由 test_mcp_server
441+ 的失败日志/安静模式用例依赖);交互钩子对 127 归 skipped 不挡工作。
442+ 这是有意设计,本测试锁住它,防止再被"统一"。
443+ """
444+
445+ @staticmethod
446+ def _fake_run (returncode : int ):
441447 import run_per_language as rpl
442448
443449 class _Fake :
444- returncode = 127
445- stdout = ""
446- stderr = "command not found"
450+ pass
447451
452+ _Fake .returncode = returncode
453+ _Fake .stdout = ""
454+ _Fake .stderr = "boom" if returncode != 0 else ""
448455 original = rpl .subprocess .run
449456 rpl .subprocess .run = lambda * a , ** k : _Fake ()
457+ return original
458+
459+ def test_rc_127_is_failure_in_cli (self ) -> None :
460+ import run_per_language as rpl
461+
462+ original = self ._fake_run (127 )
450463 try :
451464 results = rpl .run_check (["python" ], Path (tempfile .mkdtemp (prefix = "cg-127-" )))
452465 finally :
453466 rpl .subprocess .run = original
467+ self .assertFalse (results [0 ]["passed" ], "CLI 面工具缺失必须报失败" )
468+ self .assertNotIn ("unverified" , results [0 ])
469+
470+ def test_rc_2_is_unverified_in_cli (self ) -> None :
471+ import run_per_language as rpl
472+
473+ original = self ._fake_run (2 )
474+ try :
475+ results = rpl .run_check (["python" ], Path (tempfile .mkdtemp (prefix = "cg-2-" )))
476+ finally :
477+ rpl .subprocess .run = original
454478 self .assertTrue (results [0 ]["passed" ])
455- self .assertIn ("exit 127 " , results [0 ].get ("unverified" , "" ))
479+ self .assertIn ("exit 2 " , results [0 ].get ("unverified" , "" ))
456480
457481
458482class FourHookDedupTests (unittest .TestCase ):
0 commit comments