示例#1
0
bool torture_run_test_restricted(struct torture_context *context,
                                 struct torture_tcase *tcase,
                                 struct torture_test *test,
                                 const char **restricted)
{
    return internal_torture_run_test(context, tcase, test, false, restricted);
}
示例#2
0
bool torture_run_tcase_restricted(struct torture_context *context,
                                  struct torture_tcase *tcase, const char **restricted)
{
    bool ret = true;
    struct torture_test *test;
    bool setup_succeeded = true;
    const char * setup_reason = "Setup failed";

    context->active_tcase = tcase;
    if (context->results->ui_ops->tcase_start)
        context->results->ui_ops->tcase_start(context, tcase);

    if (tcase->fixture_persistent && tcase->setup) {
        setup_succeeded = tcase->setup(context, &tcase->data);
    }

    if (!setup_succeeded) {
        /* Uh-oh. The setup failed, so we can't run any of the tests
         * in this testcase. The subunit format doesn't specify what
         * to do here, so we keep the failure reason, and manually
         * use it to fail every test.
         */
        if (context->last_reason != NULL) {
            setup_reason = talloc_asprintf(context,
                                           "Setup failed: %s", context->last_reason);
        }
    }

    for (test = tcase->tests; test; test = test->next) {
        if (setup_succeeded) {
            ret &= internal_torture_run_test(context, tcase, test,
                                             tcase->fixture_persistent, restricted);
        } else {
            context->active_tcase = tcase;
            context->active_test = test;
            torture_ui_test_start(context, tcase, test);
            torture_ui_test_result(context, TORTURE_FAIL, setup_reason);
        }
    }

    if (setup_succeeded && tcase->fixture_persistent && tcase->teardown &&
            !tcase->teardown(context, tcase->data)) {
        ret = false;
    }

    context->active_tcase = NULL;
    context->active_test = NULL;

    if (context->results->ui_ops->tcase_finish)
        context->results->ui_ops->tcase_finish(context, tcase);

    return (!setup_succeeded) ? false : ret;
}
示例#3
0
文件: torture.c 项目: gojdic/samba
bool torture_run_tcase(struct torture_context *context, 
		       struct torture_tcase *tcase)
{
	bool ret = true;
	char *old_testname;
	struct torture_test *test;

	context->level++;

	context->active_tcase = tcase;
	if (context->results->ui_ops->tcase_start) 
		context->results->ui_ops->tcase_start(context, tcase);

	if (tcase->fixture_persistent && tcase->setup 
		&& !tcase->setup(context, &tcase->data)) {
		/* FIXME: Use torture ui ops for reporting this error */
		fprintf(stderr, "Setup failed: ");
		if (context->last_reason != NULL)
			fprintf(stderr, "%s", context->last_reason);
		fprintf(stderr, "\n");
		ret = false;
		goto done;
	}

	old_testname = context->active_testname;
	context->active_testname = talloc_asprintf(context, "%s-%s", 
						   old_testname, tcase->name);
	for (test = tcase->tests; test; test = test->next) {
		ret &= internal_torture_run_test(context, tcase, test, 
				tcase->fixture_persistent);
	}
	talloc_free(context->active_testname);
	context->active_testname = old_testname;

	if (tcase->fixture_persistent && tcase->teardown &&
		!tcase->teardown(context, tcase->data))
		ret = false;

done:
	context->active_tcase = NULL;

	if (context->results->ui_ops->tcase_finish)
		context->results->ui_ops->tcase_finish(context, tcase);

	context->level--;

	return ret;
}
示例#4
0
文件: torture.c 项目: gojdic/samba
bool torture_run_test(struct torture_context *context, 
					  struct torture_tcase *tcase,
					  struct torture_test *test)
{
	return internal_torture_run_test(context, tcase, test, false);
}