void ec_test_register(struct ec_test *test)
{
TAILQ_INSERT_TAIL(&test_list, test, next);
+ // XXX check if already exist, like for type
}
-int ec_test_check_tk_parse(const struct ec_tk *tk, int expected, ...)
+int ec_test_check_tk_parse(struct ec_tk *tk, int expected, ...)
{
struct ec_parsed_tk *p;
struct ec_strvec *vec = NULL;
return ret;
}
-int ec_test_check_tk_complete(const struct ec_tk *tk, ...)
+int ec_test_check_tk_complete(struct ec_tk *tk, ...)
{
struct ec_completed_tk *c = NULL;
struct ec_completed_tk_elt *elt;
}
}
- if (count != ec_completed_tk_count_match(c)) {
+ if (count != ec_completed_tk_count(c, EC_MATCH)) {
ec_log(EC_LOG_ERR,
"nb_completion (%d) does not match (%d)\n",
- count, ec_completed_tk_count_match(c));
+ count, ec_completed_tk_count(c, EC_MATCH));
ec_completed_tk_dump(stdout, c);
ret = -1;
}
return ret;
}
-int ec_test_all(void)
+static int launch_test(const char *name)
{
struct ec_test *test;
int ret = 0;
+ unsigned int count = 0;
TAILQ_FOREACH(test, &test_list, next) {
+ if (name != NULL && strcmp(name, test->name))
+ continue;
+
ec_log(EC_LOG_INFO, "== starting test %-20s\n", test->name);
+ count++;
if (test->test() == 0) {
ec_log(EC_LOG_INFO, "== test %-20s success\n",
test->name);
}
}
+ if (name != NULL && count == 0)
+ ec_log(EC_LOG_WARNING, "== test %s not found\n", name);
+
return ret;
}
+
+int ec_test_all(void)
+{
+ return launch_test(NULL);
+}
+
+int ec_test_one(const char *name)
+{
+ return launch_test(name);
+}