| File: | t/01_invoke.t |
| Coverage: | 95.2% |
| line | stmt | bran | cond | sub | time | code |
|---|---|---|---|---|---|---|
| 1 | 1 1 1 | 3525 4 40 | use strict; | |||
| 2 | 1 1 1 | 5 3 34 | use warnings; | |||
| 3 | ||||||
| 4 | 1 1 1 | 404 19658 9 | use Test::More tests => 6; | |||
| 5 | 1 1 1 | 688 28952 69 | use Class::Load qw( try_load_class ); | |||
| 6 | ||||||
| 7 | 1 1 1 | 268 1053 1639 | use FindBin qw( $Bin ); | |||
| 8 | 1 | 101734 | my $command = "$^X $Bin/../bin/plackbench"; | |||
| 9 | ||||||
| 10 | SKIP: { | |||||
| 11 | 1 1 | 3 4 | if ( !try_load_class('Capture::Tiny') ) { | |||
| 12 | 0 | 0 | skip 'Capture::Tiny not installed', 6; | |||
| 13 | } | |||||
| 14 | ||||||
| 15 | 1 | 25484 | my ($stdout, $stderr, $exit); | |||
| 16 | ||||||
| 17 | 1 | 5 | ($stdout, $stderr, $exit) = run($command); | |||
| 18 | 1 | 733 | like($stdout, qr/Usage/, 'should output a usage message with no args'); | |||
| 19 | 1 | 372 | ok($exit, 'should exit unsuccessfully when passed no args'); | |||
| 20 | ||||||
| 21 | 1 | 260 | ($stdout, $stderr, $exit) = run("$command -n 10 $Bin/test_app.psgi /ok"); | |||
| 22 | 1 | 735 | ok(!$exit, 'should exit successfully'); | |||
| 23 | 1 | 423 | like($stdout, qr/Request times/, 'should output something reasonable'); | |||
| 24 | ||||||
| 25 | 1 | 260 | ($stdout, $stderr, $exit) = run("$command -e'\$_->url(\"/fail\")' $Bin/test_app.psgi /ok"); | |||
| 26 | 1 | 734 | ok($exit, 'should use -e flag as a fixup'); | |||
| 27 | ||||||
| 28 | 1 | 424 | ($stdout, $stderr, $exit) = run("$command -f $Bin/fail_redirect $Bin/test_app.psgi /ok"); | |||
| 29 | 1 | 700 | ok($exit, 'should use -f flag as a fixup file path'); | |||
| 30 | } | |||||
| 31 | ||||||
| 32 | sub run { | |||||
| 33 | 4 | 13 | my $command = shift; | |||
| 34 | return Capture::Tiny::capture(sub { | |||||
| 35 | 4 | 3067839 | system($command); | |||
| 36 | 4 | 304 | }); | |||
| 37 | } | |||||