svn commit: samba r16321 - in branches/SAMBA_4_0/source/torture: .

jelmer at samba.org jelmer at samba.org
Fri Jun 16 23:10:16 GMT 2006


Author: jelmer
Date: 2006-06-16 23:10:15 +0000 (Fri, 16 Jun 2006)
New Revision: 16321

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=16321

Log:
Add suite_start/suite_finish hooks, support --format=quiet

Modified:
   branches/SAMBA_4_0/source/torture/smbtorture.c
   branches/SAMBA_4_0/source/torture/ui.c
   branches/SAMBA_4_0/source/torture/ui.h


Changeset:
Modified: branches/SAMBA_4_0/source/torture/smbtorture.c
===================================================================
--- branches/SAMBA_4_0/source/torture/smbtorture.c	2006-06-16 23:07:42 UTC (rev 16320)
+++ branches/SAMBA_4_0/source/torture/smbtorture.c	2006-06-16 23:10:15 UTC (rev 16321)
@@ -234,17 +234,16 @@
 }
 
 static void simple_tcase_start (struct torture_context *ctx, 
-							   struct torture_tcase *tcase,
-							   struct torture_test *test)
+							   struct torture_tcase *tcase)
 {
-	printf("Testing %s...\n", tcase->name);
+	printf("Testing %s\n", tcase->name);
 }
 
 static void simple_test_start (struct torture_context *ctx, 
 							   struct torture_tcase *tcase,
 							   struct torture_test *test)
 {
-	printf("Testing %s/%s...\n", tcase->name, test->name);
+	printf("Testing %s/%s\n", tcase->name, test->name);
 }
 
 static void simple_test_result (struct torture_context *context, 
@@ -354,6 +353,18 @@
 	.test_result = harness_test_result
 };
 
+static void quiet_test_start (struct torture_context *ctx, 
+							    struct torture_tcase *tcase,
+								struct torture_test *test)
+{
+	putchar('.');
+}
+
+const static struct torture_ui_ops quiet_ui_ops = {
+	.test_start = quiet_test_start,
+};
+
+
 /****************************************************************************
   main program
 ****************************************************************************/
@@ -509,6 +520,8 @@
 		torture->ui_ops = &subunit_ui_ops;
 	} else if (!strcmp(ui_ops_name, "harness")) {
 		torture->ui_ops = &harness_ui_ops;
+	} else if (!strcmp(ui_ops_name, "quiet")) {
+		torture->ui_ops = &quiet_ui_ops;
 	} else {
 		printf("Unknown output format '%s'\n", ui_ops_name);
 		exit(1);

Modified: branches/SAMBA_4_0/source/torture/ui.c
===================================================================
--- branches/SAMBA_4_0/source/torture/ui.c	2006-06-16 23:07:42 UTC (rev 16320)
+++ branches/SAMBA_4_0/source/torture/ui.c	2006-06-16 23:10:15 UTC (rev 16321)
@@ -27,6 +27,10 @@
 {
 	va_list ap;
 	char *tmp;
+
+	if (!context->ui_ops->comment)
+		return;
+
 	va_start(ap, comment);
 	tmp = talloc_vasprintf(context, comment, ap);
 		
@@ -35,36 +39,46 @@
 	talloc_free(tmp);
 }
 
-
 void torture_ok(struct torture_context *context)
 {
+	context->success++;
+
+	if (!context->ui_ops->test_result)
+		return;
+
 	context->ui_ops->test_result(context, TORTURE_OK, NULL);
-	context->success++;
 }
 
 void torture_fail(struct torture_context *context, const char *fmt, ...) _PRINTF_ATTRIBUTE(2,3)
 {
 	va_list ap;
 	char *reason;
+	context->failed++;
+
+	if (!context->ui_ops->test_result)
+		return;
+
 	va_start(ap, fmt);
 	reason = talloc_vasprintf(context, fmt, ap);
 	va_end(ap);
 	context->ui_ops->test_result(context, TORTURE_FAIL, reason);
 	talloc_free(reason);
-
-	context->failed++;
 }
 
 void torture_skip(struct torture_context *context, const char *fmt, ...) _PRINTF_ATTRIBUTE(2,3)
 {
 	va_list ap;
 	char *reason;
+	context->skipped++;
+
+	if (!context->ui_ops->test_result)
+		return;
+
 	va_start(ap, fmt);
 	reason = talloc_vasprintf(context, fmt, ap);
 	va_end(ap);
 	context->ui_ops->test_result(context, TORTURE_SKIP, reason);
 	talloc_free(reason);
-	context->skipped++;
 }
 
 void torture_register_suite(struct torture_suite *suite)
@@ -133,9 +147,15 @@
 	BOOL ret = True;
 	struct torture_tcase *tcase;
 
+	if (context->ui_ops->suite_start)
+		context->ui_ops->suite_start(context, suite);
+
 	for (tcase = suite->testcases; tcase; tcase = tcase->next) {
 		ret &= torture_run_tcase(context, tcase);
 	}
+
+	if (context->ui_ops->suite_finish)
+		context->ui_ops->suite_finish(context, suite);
 	
 	return ret;
 }
@@ -143,7 +163,7 @@
 static BOOL internal_torture_run_test(struct torture_context *context, 
 					  struct torture_tcase *tcase,
 					  struct torture_test *test,
-					  void *tcase_data)
+					  const void *tcase_data)
 {
 	BOOL ret;
 	void *data = NULL;
@@ -159,7 +179,8 @@
 
 	context->active_tcase = tcase;
 	context->active_test = test;
-	context->ui_ops->test_start(context, tcase, test);
+	if (context->ui_ops->test_start)
+		context->ui_ops->test_start(context, tcase, test);
 
 	ret = test->run(context, tcase->setup?data:tcase->data, test->data);
 	context->active_test = NULL;
@@ -183,8 +204,10 @@
 		context->ui_ops->tcase_start(context, tcase);
 
 	if (tcase->fixture_persistent && tcase->setup 
-		&& !tcase->setup(context, &data))
-			return False;
+		&& !tcase->setup(context, &data)) {
+		ret = False;
+		goto done;
+	}
 
 	for (test = tcase->tests; test; test = test->next) {
 		ret &= internal_torture_run_test(context, tcase, test, 
@@ -193,10 +216,14 @@
 
 	if (tcase->fixture_persistent && tcase->teardown &&
 		!tcase->teardown(context, data))
-		return False;
+		ret = False;
 
+done:
 	context->active_tcase = NULL;
 
+	if (context->ui_ops->tcase_finish)
+		context->ui_ops->tcase_finish(context, tcase);
+
 	return ret;
 }
 

Modified: branches/SAMBA_4_0/source/torture/ui.h
===================================================================
--- branches/SAMBA_4_0/source/torture/ui.h	2006-06-16 23:07:42 UTC (rev 16320)
+++ branches/SAMBA_4_0/source/torture/ui.h	2006-06-16 23:10:15 UTC (rev 16321)
@@ -24,6 +24,7 @@
 
 struct torture_test;
 struct torture_context;
+struct torture_suite;
 struct torture_tcase;
 
 enum torture_result { 
@@ -36,6 +37,8 @@
 struct torture_ui_ops
 {
 	void (*comment) (struct torture_context *, const char *);
+	void (*suite_start) (struct torture_context *, struct torture_suite *);
+	void (*suite_finish) (struct torture_context *, struct torture_suite *);
 	void (*tcase_start) (struct torture_context *, struct torture_tcase *); 
 	void (*tcase_finish) (struct torture_context *, struct torture_tcase *);
 	void (*test_start) (struct torture_context *, 



More information about the samba-cvs mailing list