Put lookup logic for meta-commands.

This commit is contained in:
Marcello Stanisci 2018-06-20 11:08:56 +02:00
parent 6a8c5209c3
commit 61fecfcd6f
No known key found for this signature in database
GPG Key ID: 8D526861953F4C0F
2 changed files with 32 additions and 1 deletions

View File

@ -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);

View File

@ -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;
};
/**