summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/kit_test/test.c94
1 files changed, 70 insertions, 24 deletions
diff --git a/source/kit_test/test.c b/source/kit_test/test.c
index e5e2862..0e29806 100644
--- a/source/kit_test/test.c
+++ b/source/kit_test/test.c
@@ -27,12 +27,12 @@ static long long sec_to_ms(long long sec) {
return 1000 * sec;
}
-enum { white, yellow, red, green };
+enum { white, blue, light, yellow, red, green };
-char const *const color_codes[] = { [white] = "\x1b[37m",
- [yellow] = "\x1b[33m",
- [red] = "\x1b[31m",
- [green] = "\x1b[32m" };
+char const *const color_codes[] = {
+ [white] = "\x1b[38m", [blue] = "\x1b[34m", [light] = "\x1b[37m",
+ [yellow] = "\x1b[33m", [red] = "\x1b[31m", [green] = "\x1b[32m"
+};
static int print_color(int c) {
return printf("%s", color_codes[c]);
@@ -102,6 +102,7 @@ int kit_run_tests(int argc, char **argv) {
int status = 0;
int quiet = 0;
int no_color = 0;
+ int line_width = 20;
int carriage_return = 1;
for (int i = 0; i < argc; i++)
@@ -115,13 +116,55 @@ int kit_run_tests(int argc, char **argv) {
if (quiet)
no_color = 1;
+ char const *file = NULL;
+ ptrdiff_t file_root = -1;
+
+ for (int i = 0; i < kit_tests_list.size && i < KIT_TESTS_SIZE_LIMIT;
+ i++) {
+ int const l = 2 + (int) strlen(kit_tests_list.tests[i].test_name);
+ if (line_width < l)
+ line_width = l;
+ }
+
+ if (kit_tests_list.size > 0) {
+ char const *const s = kit_tests_list.tests[0].test_file;
+
+ for (int j = 1;
+ j < kit_tests_list.size && j < KIT_TESTS_SIZE_LIMIT; j++) {
+ if (strcmp(s, kit_tests_list.tests[j].test_file) == 0)
+ continue;
+ int k = 0;
+ for (; s[k] != '\0' &&
+ kit_tests_list.tests[j].test_file[k] != '\0' &&
+ s[k] == kit_tests_list.tests[j].test_file[k];
+ k++) { }
+ if (file_root == -1 || file_root > k)
+ file_root = k;
+ }
+
+ if (file_root == -1) {
+ for (int i = 0; s[i] != '\0'; i++)
+ if (s[i] == '/' || s[i] == '\\')
+ file_root = i + 1;
+ }
+ }
+
for (int i = 0; i < kit_tests_list.size && i < KIT_TESTS_SIZE_LIMIT;
i++) {
- no_color || print_color(yellow);
- quiet ||
- printf("[ RUN... ] %s ", kit_tests_list.tests[i].test_name);
- carriage_return || quiet || printf("\n");
- no_color || print_color(white);
+ if (file == NULL ||
+ strcmp(file, kit_tests_list.tests[i].test_file) != 0) {
+ if (file != NULL)
+ quiet || printf("\n");
+ file = kit_tests_list.tests[i].test_file;
+ no_color || print_color(blue);
+ quiet || printf("*");
+ no_color || print_color(white);
+ quiet || printf(" %s\n", file + file_root);
+ }
+
+ !carriage_return || no_color || print_color(yellow);
+ carriage_return || no_color || print_color(light);
+ quiet || printf("` %s ", kit_tests_list.tests[i].test_name);
quiet || fflush(stdout);
struct timespec begin, end;
@@ -133,8 +176,6 @@ int kit_run_tests(int argc, char **argv) {
int duration = (int) (ns_to_ms(end.tv_nsec - begin.tv_nsec) +
sec_to_ms(end.tv_sec - begin.tv_sec));
- !carriage_return || quiet || printf("\r");
-
for (int j = 0; j < kit_tests_list.tests[i].assertions; j++)
if (kit_tests_list.tests[i].status[j] == 0) {
fail_assertion_count++;
@@ -147,29 +188,32 @@ int kit_run_tests(int argc, char **argv) {
total_assertion_count += kit_tests_list.tests[i].assertions;
+ if (carriage_return) {
+ no_color || print_color(light);
+ quiet || printf("\r` %s ", kit_tests_list.tests[i].test_name);
+ }
+
+ int const l = (int) strlen(kit_tests_list.tests[i].test_name);
+ quiet || printf("%*c", line_width - l, ' ');
+
if (test_status == 0) {
no_color || print_color(red);
- quiet || printf("[ RUN ] %s\n",
- kit_tests_list.tests[i].test_name);
- quiet ||
- printf("[ FAILED ] %s", kit_tests_list.tests[i].test_name);
- no_color || print_color(white);
- duration == 0 || quiet || printf(" - %d ms", duration);
+ quiet || printf("FAIL");
+ no_color || print_color(light);
+ duration == 0 || quiet || printf(" %d ms", duration);
quiet || printf("\n");
status = 1;
} else {
no_color || print_color(green);
- quiet || printf("[ RUN ] %s\n",
- kit_tests_list.tests[i].test_name);
- quiet ||
- printf("[ OK ] %s", kit_tests_list.tests[i].test_name);
- no_color || print_color(white);
- duration == 0 || quiet || printf(" - %d ms", duration);
+ quiet || printf("OK");
+ no_color || print_color(light);
+ duration == 0 || quiet || printf(" %d ms", duration);
quiet || printf("\n");
success_count++;
}
}
+ no_color || print_color(white);
quiet || printf("\n%d of %d tests passed.\n", success_count,
kit_tests_list.size);
@@ -177,6 +221,8 @@ int kit_run_tests(int argc, char **argv) {
total_assertion_count - fail_assertion_count,
total_assertion_count);
+ no_color || print_color(light);
+
if (status != 0) {
for (int i = 0;
i < kit_tests_list.size && i < KIT_TESTS_SIZE_LIMIT; i++) {