]> git.ipfire.org Git - thirdparty/freeradius-server.git/commitdiff
make diff output easier to read
authorAlan T. DeKok <aland@freeradius.org>
Mon, 3 Mar 2025 00:10:11 +0000 (19:10 -0500)
committerAlan T. DeKok <aland@freeradius.org>
Mon, 3 Mar 2025 02:51:12 +0000 (21:51 -0500)
src/bin/unit_test_attribute.c

index fe0b09e91fcb4e6e41d10f2e439b1894f575e0ac..8f7df15f5a5e9b0f6e0222eed6d4400f5a234e7a 100644 (file)
@@ -344,13 +344,13 @@ static void mismatch_print(command_file_ctx_t *cc, char const *command,
                           bool print_diff)
 {
        char *g, *e;
-       char *spaces;
 
        ERROR("%s failed %s/%s:%d", command, cc->path, cc->filename, cc->lineno);
-       ERROR("  got      : %.*s", (int) got_len, got);
-       ERROR("  expected : %.*s", (int) expected_len, expected);
 
-       if (print_diff) {
+       if (!print_diff) {
+               ERROR("  got      : %.*s", (int) got_len, got);
+               ERROR("  expected : %.*s", (int) expected_len, expected);
+       } else {
                g = got;
                e = expected;
 
@@ -359,15 +359,23 @@ static void mismatch_print(command_file_ctx_t *cc, char const *command,
                        e++;
                }
 
-               spaces = talloc_zero_array(NULL, char, (e - expected) + 1);
-               memset(spaces, ' ', talloc_array_length(spaces) - 1);
-               if (((e - expected) < 80) && (expected_len < 80)) {
-                       ERROR("             %s^ differs here", spaces);
+               if (expected_len < 80) {
+                       char const *spaces = "                                                                                ";
+
+                       ERROR("  got      : %.*s", (int) got_len, got);
+                       ERROR("  expected : %.*s", (int) expected_len, expected);
+                       ERROR("             %s^ differs here (%zu)", spaces, e - expected);
                } else {
-                       ERROR("             %s^ differs here (%zu) ... %.*s ...", spaces, e - expected,
-                             16, e);
+                       size_t glen, elen;
+
+                       elen = strlen(e);
+                       if (elen > 40) elen = 40;
+                       glen = strlen(g);
+                       if (glen > 40) glen = 40;
+
+                       ERROR("(%zu) ... %.*s ... ", e - expected, (int) elen, e);
+                       ERROR("(%zu) ... %.*s ... ", e - expected, (int) glen, g);
                }
-               talloc_free(spaces);
        }
 }