summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcello Stanisci <stanisci.m@gmail.com>2018-06-20 11:08:56 +0200
committerMarcello Stanisci <stanisci.m@gmail.com>2018-06-20 11:08:56 +0200
commit61fecfcd6f3e2e66e136c22195c38c99be8baa31 (patch)
tree04af3ab71f8e3b31eb0412831b93e4d118a5c10f
parent6a8c5209c35470ac90b1f4d79d05e28bfa42c8ef (diff)
downloadexchange-61fecfcd6f3e2e66e136c22195c38c99be8baa31.tar.gz
exchange-61fecfcd6f3e2e66e136c22195c38c99be8baa31.tar.bz2
exchange-61fecfcd6f3e2e66e136c22195c38c99be8baa31.zip
Put lookup logic for meta-commands.
-rw-r--r--src/exchange-lib/testing_api_loop.c24
-rw-r--r--src/include/taler_testing_lib.h9
2 files changed, 32 insertions, 1 deletions
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;
+
};
/**