1use strict; 2 3use Test::Tester; 4 5use Data::Dumper qw(Dumper); 6 7my $test = Test::Builder->new; 8$test->plan(tests => 139); 9 10my $cap; 11 12$cap = Test::Tester->capture; 13 14my @tests = ( 15 [ 16 'pass', 17 '$cap->ok(1, "pass");', 18 { 19 name => "pass", 20 ok => 1, 21 actual_ok => 1, 22 reason => "", 23 type => "", 24 diag => "", 25 depth => 0, 26 }, 27 ], 28 [ 29 'pass diag', 30 '$cap->ok(1, "pass diag"); 31 $cap->diag("pass diag1"); 32 $cap->diag("pass diag2");', 33 { 34 name => "pass diag", 35 ok => 1, 36 actual_ok => 1, 37 reason => "", 38 type => "", 39 diag => "pass diag1\npass diag2\n", 40 depth => 0, 41 }, 42 ], 43 [ 44 'pass diag no \\n', 45 '$cap->ok(1, "pass diag"); 46 $cap->diag("pass diag1"); 47 $cap->diag("pass diag2");', 48 { 49 name => "pass diag", 50 ok => 1, 51 actual_ok => 1, 52 reason => "", 53 type => "", 54 diag => "pass diag1\npass diag2", 55 depth => 0, 56 }, 57 ], 58 [ 59 'fail', 60 '$cap->ok(0, "fail"); 61 $cap->diag("fail diag");', 62 { 63 name => "fail", 64 ok => 0, 65 actual_ok => 0, 66 reason => "", 67 type => "", 68 diag => "fail diag\n", 69 depth => 0, 70 }, 71 ], 72 [ 73 'skip', 74 '$cap->skip("just because");', 75 { 76 name => "", 77 ok => 1, 78 actual_ok => 1, 79 reason => "just because", 80 type => "skip", 81 diag => "", 82 depth => 0, 83 }, 84 ], 85 [ 86 'todo_skip', 87 '$cap->todo_skip("why not");', 88 { 89 name => "", 90 ok => 1, 91 actual_ok => 0, 92 reason => "why not", 93 type => "todo_skip", 94 diag => "", 95 depth => 0, 96 }, 97 ], 98 [ 99 'pass diag qr', 100 '$cap->ok(1, "pass diag qr"); 101 $cap->diag("pass diag qr");', 102 { 103 name => "pass diag qr", 104 ok => 1, 105 actual_ok => 1, 106 reason => "", 107 type => "", 108 diag => qr/pass diag qr/, 109 depth => 0, 110 }, 111 ], 112 [ 113 'fail diag qr', 114 '$cap->ok(0, "fail diag qr"); 115 $cap->diag("fail diag qr");', 116 { 117 name => "fail diag qr", 118 ok => 0, 119 actual_ok => 0, 120 reason => "", 121 type => "", 122 diag => qr/fail diag qr/, 123 depth => 0, 124 }, 125 ], 126); 127 128my $big_code = ""; 129my @big_expect; 130 131foreach my $test (@tests) 132{ 133 my ($name, $code, $expect) = @$test; 134 135 $big_code .= "$code\n"; 136 push(@big_expect, $expect); 137 138 my $test_sub = eval "sub {$code}"; 139 140 check_test($test_sub, $expect, $name); 141} 142 143my $big_test_sub = eval "sub {$big_code}"; 144 145check_tests($big_test_sub, \@big_expect, "run all"); 146