custom diagnostics in example test failure
authorMischa POSLAWSKY <perl@shiar.org>
Sat, 13 Mar 2021 05:42:54 +0000 (06:42 +0100)
committerMischa POSLAWSKY <perl@shiar.org>
Mon, 18 Apr 2022 09:04:29 +0000 (11:04 +0200)
Replace constant "Failed test at line" by a more interesting report of
source location and result discrepancy.

t/examples.t

index 0b5e77855b86f7dd1163044957b3898003b8384b..ae3e7c9c8721d9a7ab43375c0f3159e48c138fa2 100755 (executable)
@@ -2,7 +2,12 @@
 use 5.014;
 use warnings;
 use re '/ms';
+
 use Test::More;
+{ # silence fail diagnostics because of single caller
+       no warnings 'redefine';
+       sub Test::Builder::_ok_debug {}
+}
 
 my %CMDARGS = (
        ping => '-c 1',
@@ -46,9 +51,11 @@ while (readline $input) {
 
        # run and report unexpected results
        ok(eval {
-               qx($cmd) or return;
-               return $? == 0;
-       }, $name) or diag($cmd);
+               my $output = qx($cmd);
+               $? == 0 or die "error status ", $? >> 8, "\n";
+               length $output or die "empty output\n";
+               return 1;
+       }, $name) or diag("Failed command\n$cmd\nfrom $filename line $.: $@");
 }
 
 done_testing();