fix(error-handling): handle FileNotFoundError in robot.helper_actor_config
CI / lint (pull_request) Successful in 26s
CI / typecheck (pull_request) Successful in 46s
CI / quality (pull_request) Successful in 35s
CI / security (pull_request) Successful in 1m1s
CI / build (pull_request) Successful in 25s
CI / helm (pull_request) Successful in 24s
CI / unit_tests (pull_request) Successful in 6m51s
CI / docker (pull_request) Successful in 11s
CI / coverage (pull_request) Successful in 10m53s
CI / e2e_tests (pull_request) Successful in 18m53s
CI / integration_tests (pull_request) Failing after 22m54s
CI / status-check (pull_request) Failing after 1s
CI / benchmark-publish (pull_request) Has been skipped
CI / benchmark-regression (pull_request) Successful in 58m21s

Wrap ActorConfiguration.from_file() in a try...except FileNotFoundError
block in robot/helper_actor_config.py. When the config file path does not
exist, print a user-friendly error message to sys.stderr and exit with
code 1 instead of crashing with an unhandled exception and raw traceback.

Also adds a Robot Framework test case 'Missing Config File Exits With
Non-Zero Code And Stderr Message' to robot/actor_configuration.robot to
cover the new error path.

ISSUES CLOSED: #2829
This commit is contained in:
2026-04-05 06:55:19 +00:00
parent e2057f9117
commit 7d5c7a1114
2 changed files with 11 additions and 1 deletions
+6
View File
@@ -40,3 +40,9 @@ V2 Actor Config Produces Provider And Graph Descriptor
List Should Contain Value ${payload['graph_keys']} agents
List Should Contain Value ${payload['graph_keys']} routes
Should Be Equal As Numbers ${payload['options']['temperature']} 0.5
Missing Config File Exits With Non-Zero Code And Stderr Message
${missing}= Set Variable ${OUTPUT DIR}/does_not_exist_actor.yaml
${result}= Run Process ${PYTHON} robot/helper_actor_config.py ${missing}
Should Not Be Equal As Integers ${result.rc} 0
Should Contain ${result.stderr} Error: Config file not found at '${missing}'
+5 -1
View File
@@ -12,7 +12,11 @@ def main() -> None:
raise SystemExit("config path required")
config_path = Path(sys.argv[1])
config = ActorConfiguration.from_file(path=config_path)
try:
config = ActorConfiguration.from_file(path=config_path)
except FileNotFoundError:
print(f"Error: Config file not found at '{config_path}'", file=sys.stderr)
sys.exit(1)
payload = {
"provider": config.provider,
"model": config.model,