diff options
Diffstat (limited to 'lib/subunit')
-rw-r--r-- | lib/subunit/c/include/subunit/child.h | 17 | ||||
-rw-r--r-- | lib/subunit/c/lib/child.c | 22 | ||||
-rw-r--r-- | lib/subunit/c/tests/test_child.c | 39 |
3 files changed, 78 insertions, 0 deletions
diff --git a/lib/subunit/c/include/subunit/child.h b/lib/subunit/c/include/subunit/child.h index 0a4e60127b..896d2dfad0 100644 --- a/lib/subunit/c/include/subunit/child.h +++ b/lib/subunit/c/include/subunit/child.h @@ -74,6 +74,23 @@ extern void subunit_test_skip(char const * const name, char const * const reason); +enum subunit_progress_whence { + SUBUNIT_PROGRESS_SET, + SUBUNIT_PROGRESS_CUR, + SUBUNIT_PROGRESS_POP, + SUBUNIT_PROGRESS_PUSH, +}; + +/** + * subunit_progress: + * + * Report the progress of a test run. + * @whence: The type of progress update to report. + * @offset: Offset of the progress (only for SUBUNIT_PROGRESS_SET + * and SUBUNIT_PROGRESS_CUR). + */ +extern void subunit_progress(enum subunit_progress_whence whence, int offset); + #ifdef __cplusplus } #endif diff --git a/lib/subunit/c/lib/child.c b/lib/subunit/c/lib/child.c index 2b59747c0e..20f38da8c9 100644 --- a/lib/subunit/c/lib/child.c +++ b/lib/subunit/c/lib/child.c @@ -80,3 +80,25 @@ subunit_test_skip(char const * const name, char const * const reason) { subunit_send_event("skip", name, reason); } + +void +subunit_progress(enum subunit_progress_whence whence, int offset) +{ + switch (whence) { + case SUBUNIT_PROGRESS_SET: + printf("progress: %d\n", offset); + break; + case SUBUNIT_PROGRESS_CUR: + printf("progress: %+-d\n", offset); + break; + case SUBUNIT_PROGRESS_POP: + printf("progress: pop\n"); + break; + case SUBUNIT_PROGRESS_PUSH: + printf("progress: push\n"); + break; + default: + fprintf(stderr, "Invalid whence %d in subunit_progress()\n", whence); + break; + } +} diff --git a/lib/subunit/c/tests/test_child.c b/lib/subunit/c/tests/test_child.c index 6399eeb645..0744599b9f 100644 --- a/lib/subunit/c/tests/test_child.c +++ b/lib/subunit/c/tests/test_child.c @@ -164,6 +164,44 @@ START_TEST (test_skip) } END_TEST + +static void +call_test_progress_pop(void) +{ + subunit_progress(SUBUNIT_PROGRESS_POP, 0); +} + +static void +call_test_progress_set(void) +{ + subunit_progress(SUBUNIT_PROGRESS_SET, 5); +} + +static void +call_test_progress_push(void) +{ + subunit_progress(SUBUNIT_PROGRESS_PUSH, 0); +} + +static void +call_test_progress_cur(void) +{ + subunit_progress(SUBUNIT_PROGRESS_CUR, -6); +} + +START_TEST (test_progress) +{ + test_stdout_function("progress: pop\n", + call_test_progress_pop); + test_stdout_function("progress: push\n", + call_test_progress_push); + test_stdout_function("progress: 5\n", + call_test_progress_set); + test_stdout_function("progress: -6\n", + call_test_progress_cur); +} +END_TEST + static Suite * child_suite(void) { @@ -175,6 +213,7 @@ child_suite(void) tcase_add_test (tc_core, test_fail); tcase_add_test (tc_core, test_error); tcase_add_test (tc_core, test_skip); + tcase_add_test (tc_core, test_progress); return s; } |