diff --git a/src/exchange-lib/testing_api_loop.c b/src/exchange-lib/testing_api_loop.c index 7efadb396..03485068f 100644 --- a/src/exchange-lib/testing_api_loop.c +++ b/src/exchange-lib/testing_api_loop.c @@ -57,11 +57,33 @@ TALER_TESTING_interpreter_lookup_command "Attempt to lookup command for empty label\n"); return NULL; } - for (unsigned int i=0;NULL != (cmd = &is->commands[i])->label;i++) + for (unsigned int i=0; + NULL != (cmd = &is->commands[i])->label; + i++) + { + /* Give precedence to top-level commands. */ if ( (NULL != cmd->label) && (0 == strcmp (cmd->label, label)) ) return cmd; + + if (GNUNET_YES == cmd->meta) + { + struct TALER_TESTING_Command *batch = cmd->cls; + + /* NOTE: the batch does need a "end" CMD in the + * last place. */ + for (unsigned int i=0; + NULL != (cmd = &batch[i])->label; + i++) + { + if ( (NULL != cmd->label) && + (0 == strcmp (cmd->label, + label)) ) + return cmd; + } + } + } GNUNET_log (GNUNET_ERROR_TYPE_WARNING, "Command not found: %s\n", label); diff --git a/src/include/taler_testing_lib.h b/src/include/taler_testing_lib.h index 428bcb78a..57e2f0df9 100644 --- a/src/include/taler_testing_lib.h +++ b/src/include/taler_testing_lib.h @@ -300,6 +300,15 @@ struct TALER_TESTING_Command const char *trait, unsigned int index); + + /** + * Has GNUNET_YES if the command is a "meta" one. Meta + * commands are those that takes arrays of commands and + * execute them. Are used to group testing commands in + * order to improve readability of test cases. + */ + unsigned int meta; + }; /**