From accaf7fcce01b49507b179a2e7ae5fc36dc3590e Mon Sep 17 00:00:00 2001 From: rUv Date: Tue, 13 Oct 2026 01:03:04 -0700 Subject: [PATCH] Exercise confirmation hash mismatch path --- scripts/tests/test_espfi_train.py | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/scripts/tests/test_espfi_train.py b/scripts/tests/test_espfi_train.py index c4db683ee..93b11d88e 100644 --- a/scripts/tests/test_espfi_train.py +++ b/scripts/tests/test_espfi_train.py @@ -141,15 +141,18 @@ class ConfirmationGateIntegrationTests(unittest.TestCase): def test_invalid_partial_and_hash_mismatch_never_load(self): with tempfile.TemporaryDirectory() as d: root=Path(d);dataset,plan,ledger=self.gate_files(root) - cases=[self.argv(root,dataset,plan,ledger)[:-2], - self.argv(root,dataset,plan,ledger)[:-1]+['0'*64]] - plan.write_text('{bad json') - cases.append(self.argv(root,dataset,plan,ledger)) - for args in cases: - with self.subTest(args=args[-2:]), patch('csi_training.espfi.load_dataset') as load, patch('csi_training.espfi_train.optimize') as train: - with self.assertRaises(SystemExit):main(args) + cases=[(self.argv(root,dataset,plan,ledger)[:-2],1), + (self.argv(root,dataset,plan,ledger)[:-1]+['0'*64],2)] + for args,code in cases: + with self.subTest(code=code), patch('csi_training.espfi.load_dataset') as load, patch('csi_training.espfi_train.optimize') as train: + with self.assertRaisesRegex(SystemExit,str(code)):main(args) load.assert_not_called();train.assert_not_called() self.assertFalse((root/'out').exists()) + plan.write_text('{bad json') + with patch('csi_training.espfi.load_dataset') as load, patch('csi_training.espfi_train.optimize') as train: + with self.assertRaisesRegex(SystemExit,'1'): + main(self.argv(root,dataset,plan,ledger)) + load.assert_not_called();train.assert_not_called() def test_unsafe_gate_files_never_load(self): with tempfile.TemporaryDirectory() as d: