use strictures; # strict + fatal warnings use Test::More; use Capture::Tiny "capture"; ok 1, "1 is ok"; # Test simple truthiness. diag "Dialog always shows"; note "Notes show when running verbose tests"; # Isolate a batch of tests into a subtest. subtest "My unit tests" => sub { require_ok("DBI"); # Use your own package here. # Test methods/subs in as minimalistic/decoupled a way as possible. done_testing(1); # + whatever you add. }; subtest "My system tests" => sub { my ( $out, $err, $exit ) = capture { system qw/ ls -l -A -f /; # Your program/glue here instead. }; is $exit, 0, "Executed normally"; ok ! $err, "Without errors"; like $out, qr/\n-rw/, "Found some read/write nodes... very clumsily"; done_testing(3); }; done_testing(3); #### moo@cow[44]~/>prove pm-1113898 -v pm-1113898 .. ok 1 - 1 is ok # Notes show when running verbose tests # Subtest: My unit tests # Dialog always shows ok 1 - require DBI; 1..1 ok 2 - My unit tests # Subtest: My system tests ok 1 - Executed normally ok 2 - Without errors ok 3 - Found some read/write nodes... very clumsily 1..3 ok 3 - My system tests 1..3 ok All tests successful. Files=1, Tests=3, 0 wallclock secs ( 0.02 usr 0.01 sys + 0.04 cusr 0.00 csys = 0.07 CPU) Result: PASS