From 0de815a454a0b63baa1f349bcd885c49ec6e2951 Mon Sep 17 00:00:00 2001 From: Alex Olieman Date: Thu, 31 Jul 2025 20:15:37 +0200 Subject: [PATCH 1/2] print KSorobanError message to stderr --- src/komet/komet.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/komet/komet.py b/src/komet/komet.py index b17b1225..9800981d 100644 --- a/src/komet/komet.py +++ b/src/komet/komet.py @@ -164,7 +164,8 @@ def _exec_test(*, dir_path: Path | None, wasm: Path | None, max_examples: int, i try: kasmer.deploy_and_run(wasm, child_wasms, max_examples, id) sys.exit(0) - except KSorobanError: + except KSorobanError as err: + print(str(err), file=sys.stderr) sys.exit(1) From 30f3f5236ddf3b25d27a884ab186761076c3607a Mon Sep 17 00:00:00 2001 From: Alex Olieman Date: Fri, 1 Aug 2025 14:57:37 +0200 Subject: [PATCH 2/2] remove duplicate print of fuzzing failures --- src/komet/kasmer.py | 4 ++-- src/komet/komet.py | 5 ++++- src/komet/utils.py | 3 +++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/komet/kasmer.py b/src/komet/kasmer.py index 68209745..9e96b0bc 100644 --- a/src/komet/kasmer.py +++ b/src/komet/kasmer.py @@ -42,7 +42,7 @@ ) from .proof import is_functional, run_claim, run_functional_claim from .scval import SCType -from .utils import KSorobanError, concrete_definition +from .utils import KSorobanError, KSorobanFailure, concrete_definition if TYPE_CHECKING: from collections.abc import Iterable, Mapping @@ -337,7 +337,7 @@ def deploy_and_run( pretty_args = ', '.join(self.definition.krun.pretty_print(a) for a in err.counterexample) console.print(f' {err.test_name} ({pretty_args})') - raise KSorobanError(failed) + raise KSorobanFailure(failed) def deploy_and_prove( self, diff --git a/src/komet/komet.py b/src/komet/komet.py index 9800981d..35bbbda6 100644 --- a/src/komet/komet.py +++ b/src/komet/komet.py @@ -22,7 +22,7 @@ from komet.proof import simplify from .kasmer import Kasmer -from .utils import KSorobanError, concrete_definition, symbolic_definition +from .utils import KSorobanError, KSorobanFailure, concrete_definition, symbolic_definition if TYPE_CHECKING: from collections.abc import Iterator @@ -164,6 +164,9 @@ def _exec_test(*, dir_path: Path | None, wasm: Path | None, max_examples: int, i try: kasmer.deploy_and_run(wasm, child_wasms, max_examples, id) sys.exit(0) + except KSorobanFailure: + # Assume that the failures have been printed already + sys.exit(1) except KSorobanError as err: print(str(err), file=sys.stderr) sys.exit(1) diff --git a/src/komet/utils.py b/src/komet/utils.py index 15e0e561..17caf8ba 100644 --- a/src/komet/utils.py +++ b/src/komet/utils.py @@ -28,6 +28,9 @@ class KSorobanError(RuntimeError): ... +class KSorobanFailure(RuntimeError): ... + + class SorobanDefinition: """Anything related to the Soroban K definition goes here."""