Diff between 4794384f4b83e7ac9ab61ec2cf82c274d1504d11 and 41a61de78a20446722bdda69d80e313630cdc853

Changed Files

File Additions Deletions Status
src/shared/tester.c +27 -6 modified
src/shared/tester.h +10 -5 modified

Full Patch

diff --git a/src/shared/tester.c b/src/shared/tester.c
index 5e7257b..5ead2e0 100644
--- a/src/shared/tester.c
+++ b/src/shared/tester.c
@@ -85,6 +85,8 @@ struct test_case {
 	tester_data_func_t post_teardown_func;
 	gdouble start_time;
 	gdouble end_time;
+	tester_destroy_func_t destroy;
+	void *user_data;
 };
 
 static GMainLoop *main_loop;
@@ -97,6 +99,9 @@ static void test_destroy(gpointer data)
 {
 	struct test_case *test = data;
 
+	if (test->destroy)
+		test->destroy(test->user_data);
+
 	g_free(test->name);
 	g_free(test);
 }
@@ -147,11 +152,12 @@ static void default_post_teardown(const void *test_data)
 }
 
 void tester_add_full(const char *name, const void *test_data,
-					tester_data_func_t pre_setup_func,
-					tester_data_func_t setup_func,
-					tester_data_func_t test_func,
-					tester_data_func_t teardown_func,
-					tester_data_func_t post_teardown_func)
+				tester_data_func_t pre_setup_func,
+				tester_data_func_t setup_func,
+				tester_data_func_t test_func,
+				tester_data_func_t teardown_func,
+				tester_data_func_t post_teardown_func,
+				void *user_data, tester_destroy_func_t destroy)
 {
 	struct test_case *test;
 
@@ -188,6 +194,9 @@ void tester_add_full(const char *name, const void *test_data,
 	else
 		test->post_teardown_func = default_post_teardown;
 
+	test->destroy = destroy;
+	test->user_data = user_data;
+
 	test_list = g_list_append(test_list, test);
 }
 
@@ -197,7 +206,19 @@ void tester_add(const char *name, const void *test_data,
 					tester_data_func_t teardown_func)
 {
 	tester_add_full(name, test_data, NULL, setup_func, test_func,
-							teardown_func, NULL);
+					teardown_func, NULL, NULL, NULL);
+}
+
+void *tester_get_data(void)
+{
+	struct test_case *test;
+
+	if (!test_current)
+		return NULL;
+
+	test = test_current->data;
+
+	return test->user_data;
 }
 
 static void tester_summarize(void)
diff --git a/src/shared/tester.h b/src/shared/tester.h
index 7c23340..4c4b8ac 100644
--- a/src/shared/tester.h
+++ b/src/shared/tester.h
@@ -34,19 +34,24 @@ void tester_print(const char *format, ...)
 void tester_warn(const char *format, ...)
 				__attribute__((format(printf, 1, 2)));
 
+typedef void (*tester_destroy_func_t)(void *user_data);
 typedef void (*tester_data_func_t)(const void *test_data);
 
 void tester_add_full(const char *name, const void *test_data,
-					tester_data_func_t pre_setup_func,
-					tester_data_func_t setup_func,
-					tester_data_func_t test_func,
-					tester_data_func_t teardown_func,
-					tester_data_func_t post_teardown_func);
+				tester_data_func_t pre_setup_func,
+				tester_data_func_t setup_func,
+				tester_data_func_t test_func,
+				tester_data_func_t teardown_func,
+				tester_data_func_t post_teardown_func,
+				void *user_data, tester_destroy_func_t destroy);
+
 void tester_add(const char *name, const void *test_data,
 					tester_data_func_t setup_func,
 					tester_data_func_t test_func,
 					tester_data_func_t teardown_func);
 
+void *tester_get_data(void);
+
 void tester_pre_setup_complete(void);
 void tester_pre_setup_failed(void);