diff --git a/src/helper/command.c b/src/helper/command.c index d2a031478..867a84013 100644 --- a/src/helper/command.c +++ b/src/helper/command.c @@ -474,6 +474,11 @@ static int jim_exec_command(Jim_Interp *interp, struct command_context *context, if (retval == ERROR_COMMAND_CLOSE_CONNECTION) return JIM_EXIT; + Jim_Obj *error_code = Jim_NewListObj(context->interp, NULL, 0); + Jim_ListAppendElement(context->interp, error_code, Jim_NewStringObj(context->interp, "OpenOCD", -1)); + Jim_ListAppendElement(context->interp, error_code, Jim_NewIntObj(context->interp, retval)); + Jim_SetGlobalVariableStr(context->interp, "errorCode", error_code); + return JIM_ERR; } diff --git a/testing/tcl_commands/utils.tcl b/testing/tcl_commands/utils.tcl index 65e52d2fe..087bf0437 100644 --- a/testing/tcl_commands/utils.tcl +++ b/testing/tcl_commands/utils.tcl @@ -8,17 +8,22 @@ namespace eval testing_helpers { } proc check_for_error {expctd_code msg_ptrn script} { + set ::errorCode NONE set code [catch {uplevel $script} msg] set expanded_script [uplevel subst \"$script\"] - if {!$code} { + if {$code == 0} { test_failure \ "'$expanded_script' finished successfully. \ Was expecting an error." } - if {$expctd_code ne "" && $code != $expctd_code} { + if {$code != 1} { test_failure \ - "'$expanded_script' returned unexpected error code $code. \ - Was expecting $expctd_code. Error message: '$msg'" + "'$expanded_script' returned unexpected error code $code" + } + if {$expctd_code ne "" && ([lindex $::errorCode 0] ne "OpenOCD" || [lindex $::errorCode 1] != $expctd_code)} { + test_failure \ + "'$expanded_script' returned unexpected error code '$::errorCode'. \ + Was expecting 'OpenOCD $expctd_code'. Error message: '$msg'" } if {$msg_ptrn ne "" && ![regexp -- $msg_ptrn $msg]} { test_failure \ @@ -32,7 +37,7 @@ namespace eval testing_helpers { } proc check_syntax_err script { - tailcall check_for_error 1 {} $script + tailcall check_for_error -601 {} $script } proc check_matches {pattern script} { diff --git a/tools/scripts/camelcase.txt b/tools/scripts/camelcase.txt index 1c782ee35..95ef4af55 100644 --- a/tools/scripts/camelcase.txt +++ b/tools/scripts/camelcase.txt @@ -113,17 +113,20 @@ Jim_GetWide Jim_IncrRefCount Jim_InitStaticExtensions Jim_Interp +Jim_ListAppendElement Jim_ListGetIndex Jim_ListLength Jim_MakeErrorMessage Jim_NewEmptyStringObj Jim_NewIntObj +Jim_NewListObj Jim_NewStringObj Jim_Obj Jim_ProcessEvents Jim_RegisterCoreCommands Jim_SetAssocData Jim_SetEmptyResult +Jim_SetGlobalVariableStr Jim_SetResult Jim_SetResultFormatted Jim_SetResultString