diff --git a/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike b/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike index faa05d64125f1ae64efe899355b7ac1cea92a234..d22afb82a5675970a4f99eac991584992d22d286 100755 --- a/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike +++ b/lib/modules/Tools.pmod/Standalone.pmod/test_pike.pike @@ -5,6 +5,7 @@ constant description = "Executes tests according to testsuite files."; constant log_msg = Tools.Testsuite.log_msg; constant log_msg_cont = Tools.Testsuite.log_msg_cont; +constant log_msg_result = Tools.Testsuite.log_msg_result; constant log_status = Tools.Testsuite.log_status; protected enum exit_codes { @@ -1153,7 +1154,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n",a); + log_msg_result("o->a(): %O\n",a); errors++; } else { @@ -1167,7 +1168,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n",a); + log_msg_result("o->a(): %O\n",a); errors++; } else { @@ -1180,7 +1181,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n", a); + log_msg_result("o->a(): %O\n", a); } else { pushed_warnings[a]++; } @@ -1191,7 +1192,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n", a); + log_msg_result("o->a(): %O\n", a); } else if (pushed_warnings[a]) { if (!--pushed_warnings[a]) { m_delete(pushed_warnings, a); @@ -1200,7 +1201,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O not pushed!\n", a); + log_msg_result("o->a(): %O not pushed!\n", a); } break; @@ -1216,7 +1217,7 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed to return proper results.\n"); print_code(test); - log_msg("o->a(): %O\n",a); + log_msg_result("o->a(): %O\n",a); errors++; } else { @@ -1240,8 +1241,8 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n" - "o->b(): %O\n", a, b); + log_msg_result("o->a(): %O\n" + "o->b(): %O\n", a, b); errors++; if (stringp(a) && stringp(b) && (sizeof(a) == sizeof(b)) && (sizeof(a) > 20)) { @@ -1268,8 +1269,8 @@ int main(int argc, array(string) argv) watchdog_show_last_test(); log_msg(fname + " failed.\n"); print_code(test); - log_msg("o->a(): %O\n" - "o->b(): %O\n", a, b); + log_msg_result("o->a(): %O\n" + "o->b(): %O\n", a, b); errors++; if (stringp(a) && stringp(b) && (sizeof(a) == sizeof(b)) && (sizeof(a) > 20)) { diff --git a/lib/modules/Tools.pmod/Testsuite.pmod b/lib/modules/Tools.pmod/Testsuite.pmod index 19ab089f1dc8b9b46a219d671ff5aec0e286b1fb..535f2edbd1f65e85075f00a5cb3489182f532ba1 100644 --- a/lib/modules/Tools.pmod/Testsuite.pmod +++ b/lib/modules/Tools.pmod/Testsuite.pmod @@ -85,6 +85,24 @@ protected void unlocked_log_msg_cont (string msg) } } +// Cut strings to below 4K +void log_msg_result (string msg, mixed ... args) +{ + array a = msg/"%"; + foreach(a; int pos; string part) + { + if(pos==0) continue; + if(has_prefix(part, "O") && pos-1<=sizeof(args) && + stringp(args[pos-1]) && sizeof(args[pos-1])>4000) + { + part[0] = 's'; + a[pos] = part; + args[pos-1] = sprintf("%O...", args[pos-1][..4000-1]); + } + } + log_msg(a*"%", @args); +} + void log_msg (string msg, mixed... args) //! Logs a testsuite message to stderr. The message is shown //! regardless of the verbosity level. If the previous message was