t/examples: skip missing command dependencies
[barcat.git] / t / examples.t
index cdf77f9ca0ace15ecaea2de243129e3ba83822db..29f7c5024109594b56261d6d175cbf4a1f976b9d 100755 (executable)
@@ -21,6 +21,7 @@ open my $input, '<', $filename
 
 local $/ = "\n\n";
 while (readline $input) {
+SKIP: {
        # find scriptlets in the appropriate section
        /^=head1 EXAMPLES/ ... /^=head1/ or next;
        /^\h/ or next;  # indented code snippet
@@ -68,11 +69,24 @@ while (readline $input) {
                $cmd =~ s/\b$subcmd/$args/;
        }
 
+       for my $param ($cmd =~ m{^[(\h]* (\w\S*)}gx) {
+               $param eq 'cat' or
+               runres(['which', $param])
+                       or diag("dependency $param missing at $ref\n$cmd"), skip($name, 1);
+       }
+
        # run and report unexpected results
        my $output = runres($cmd);
        ok(!!$output, $name)
                or diag("command at $ref\n$cmd\n" . ($@ || 'empty output'));
-}
+       defined $output or next;
+
+       # record output for review
+       my $numprefix = sprintf '%02d', Test::More->builder->current_test;
+       if (open my $record, '>', "sample/out/t$numprefix-$name.txt") {
+               print {$record} $output;
+       }
+}}
 
 sub runres {
        my ($cmd) = @_;