Core Testing Tools
Plan Counts
A test plan states how many checks a file expects to run.
plan-counts
Plan counts help a test runner notice when a file exits too early or runs more checks than expected.
Plan Counts
plan_counts.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $planned = 3;
my @checks = ("ok", "ok", "not ok");
my $ran = scalar @checks;
my $plan_line = "1..$planned";
my $status = $planned == $ran ? "matched" : "mismatch";
print "plan=$plan_line\n";
print "ran=$ran\n";
print "status=$status\n";
use strict;
use warnings;
my $planned = 2;
my @checks = ("ok", "ok", "not ok");
my $ran = scalar @checks;
my $plan_line = "1..$planned";
my $status = $planned == $ran ? "matched" : "mismatch";
print "plan=$plan_line\n";
print "ran=$ran\n";
print "status=$status\n";
use strict;
use warnings;
my $planned = 4;
my @checks = ("ok", "ok", "not ok");
my $ran = scalar @checks;
my $plan_line = "1..$planned";
my $status = $planned == $ran ? "matched" : "mismatch";
print "plan=$plan_line\n";
print "ran=$ran\n";
print "status=$status\n";
$planned ← 3, @checks ← 3, $ran ← 3, $plan_line ← 1..3, $status ← matched
4my $planned→ 3 = 3; #@planned=2, 45my @checks→ 3 = ("ok", "ok", "not ok");6my $ran→ 3 = scalar @checks3;7my $plan_line→ 1..3 = "1..$planned3";8my $status→ matched = $planned3 == $ran3 ? "matched" : "mismatch";910print "plan=$plan_line1..3\n";11print "ran=$ran3\n";12print "status=$statusmatched\n";outputplan=1..3 ran=3 status=matched
$planned ← 2, @checks ← 3, $ran ← 3, $plan_line ← 1..2, $status ← mismatch
4my $planned→ 2 = 2;5my @checks→ 3 = ("ok", "ok", "not ok");6my $ran→ 3 = scalar @checks3;7my $plan_line→ 1..2 = "1..$planned2";8my $status→ mismatch = $planned2 == $ran3 ? "matched" : "mismatch";910print "plan=$plan_line1..2\n";11print "ran=$ran3\n";12print "status=$statusmismatch\n";outputplan=1..2 ran=3 status=mismatch
$planned ← 4, @checks ← 3, $ran ← 3, $plan_line ← 1..4, $status ← mismatch
4my $planned→ 4 = 4;5my @checks→ 3 = ("ok", "ok", "not ok");6my $ran→ 3 = scalar @checks3;7my $plan_line→ 1..4 = "1..$planned4";8my $status→ mismatch = $planned4 == $ran3 ? "matched" : "mismatch";910print "plan=$plan_line1..4\n";11print "ran=$ran3\n";12print "status=$statusmismatch\n";outputplan=1..4 ran=3 status=mismatch