#include "librpc/rpc/dcerpc.h"
#include "auth/gensec/gensec.h"
#include "param/param.h"
+#include "lib/util/internal_module.h"
#if HAVE_READLINE_HISTORY_H
#include <readline/history.h>
#endif
+static char *prefix_name(TALLOC_CTX *mem_ctx, const char *prefix, const char *name)
+{
+ if (prefix == NULL)
+ return talloc_strdup(mem_ctx, name);
+ else
+ return talloc_asprintf(mem_ctx, "%s.%s", prefix, name);
+}
+
+static void print_test_list(const struct torture_suite *suite, const char *prefix, const char *expr)
+{
+ struct torture_suite *o;
+ struct torture_tcase *t;
+ struct torture_test *p;
+
+ for (o = suite->children; o; o = o->next) {
+ char *name = prefix_name(NULL, prefix, o->name);
+ print_test_list(o, name, expr);
+ talloc_free(name);
+ }
+
+ for (t = suite->testcases; t; t = t->next) {
+ for (p = t->tests; p; p = p->next) {
+ char *name = talloc_asprintf(NULL, "%s.%s.%s", prefix, t->name, p->name);
+ if (strncmp(name, expr, strlen(expr)) == 0) {
+ printf("%s\n", name);
+ }
+ talloc_free(name);
+ }
+ }
+}
+
static bool run_matching(struct torture_context *torture,
const char *prefix,
const char *expr,
for (o = suite->children; o; o = o->next) {
char *name = NULL;
- if (prefix == NULL)
- name = talloc_strdup(torture, o->name);
- else
- name = talloc_asprintf(torture, "%s-%s", prefix, o->name);
+ name = prefix_name(torture, prefix, o->name);
if (gen_fnmatch(expr, name) == 0) {
*matched = true;
reload_charcnv(torture->lp_ctx);
}
for (t = suite->testcases; t; t = t->next) {
- char *name = talloc_asprintf(torture, "%s-%s", prefix, t->name);
+ char *name = talloc_asprintf(torture, "%s.%s", prefix, t->name);
if (gen_fnmatch(expr, name) == 0) {
*matched = true;
reload_charcnv(torture->lp_ctx);
ret &= torture_run_tcase_restricted(torture, t, restricted);
}
for (p = t->tests; p; p = p->next) {
- name = talloc_asprintf(torture, "%s-%s-%s", prefix, t->name, p->name);
+ name = talloc_asprintf(torture, "%s.%s.%s", prefix, t->name, p->name);
if (gen_fnmatch(expr, name) == 0) {
*matched = true;
reload_charcnv(torture->lp_ctx);
printf("\n ");
i = 0;
}
- i+=printf("%s-%s ", o->name, s->name);
+ i+=printf("%s.%s ", o->name, s->name);
}
for (t = o->testcases; t; t = t->next) {
printf("\n ");
i = 0;
}
- i+=printf("%s-%s ", o->name, t->name);
+ i+=printf("%s.%s ", o->name, t->name);
}
if (i) printf("\n");
for (o = torture_root->children; o; o = o->next) {
for (s = o->children; s; s = s->next) {
- printf("%s-%s\n", o->name, s->name);
+ printf("%s.%s\n", o->name, s->name);
}
for (t = o->testcases; t; t = t->next) {
- printf("%s-%s\n", o->name, t->name);
+ printf("%s.%s\n", o->name, t->name);
}
}
}
}
}
-_NORETURN_ static void usage(poptContext pc)
+static void usage(poptContext pc)
{
poptPrintUsage(pc, stdout, 0);
printf("\n");
print_structured_testsuite_list();
- exit(1);
}
_NORETURN_ static void max_runtime_handler(int sig)
}
if (extra_module != NULL) {
- init_module_fn fn = load_module(talloc_autofree_context(), poptGetOptArg(pc));
+ samba_init_module_fn fn = load_module(poptGetOptArg(pc), false, NULL);
if (fn == NULL)
d_printf("Unable to load module from %s\n", poptGetOptArg(pc));
return 0;
}
- if (torture_seed == 0) {
- torture_seed = time(NULL);
- }
- printf("Using seed %d\n", torture_seed);
- srandom(torture_seed);
-
argv_new = discard_const_p(char *, poptGetArgs(pc));
argc_new = argc;
}
}
+ if (list_tests) {
+ if (argc_new == 1) {
+ print_test_list(torture_root, NULL, "");
+ } else {
+ for (i=1;i<argc_new;i++) {
+ print_test_list(torture_root, NULL, argv_new[i]);
+ }
+ }
+ return 0;
+ }
+
+ if (torture_seed == 0) {
+ torture_seed = time(NULL);
+ }
+ printf("Using seed %d\n", torture_seed);
+ srandom(torture_seed);
+
if (!strcmp(ui_ops_name, "simple")) {
ui_ops = &std_ui_ops;
} else if (!strcmp(ui_ops_name, "subunit")) {
torture->lp_ctx = cmdline_lp_ctx;
- gensec_init(cmdline_lp_ctx);
+ gensec_init();
if (shell) {
/* In shell mode, just ignore any remaining test names. */
if (argc_new < 3) {
printf("You must specify a test to run, or 'ALL'\n");
usage(pc);
- exit(1);
- }
-
+ torture->results->returncode = 1;
+ } else if (!torture_parse_target(cmdline_lp_ctx, argv_new[1])) {
/* Take the target name or binding. */
- if (!torture_parse_target(cmdline_lp_ctx, argv_new[1])) {
usage(pc);
- exit(1);
- }
-
- for (i=2;i<argc_new;i++) {
- if (!torture_run_named_tests(torture, argv_new[i],
- (const char **)restricted)) {
- correct = false;
+ torture->results->returncode = 1;
+ } else {
+ for (i=2;i<argc_new;i++) {
+ if (!torture_run_named_tests(torture, argv_new[i],
+ (const char **)restricted)) {
+ correct = false;
+ }
}
}
}