#! /usr/bin/perl
use strict;
use warnings;
use Test::More tests => 4;
use Test::Exception;
use Test::Builder::Tester;
{ package MyTestClass;
use base qw(Test::Class);
use Test::More;
sub startup : Test( startup => 1 ) { pass "startup" }
sub shutdown : Test( shutdown => 1 ) { pass "shutdown" }
sub setup : Test( setup => 1 ) { pass "setup" }
sub teardown : Test( teardown => 1 ) { pass "teardown" }
sub test1 : Test { pass "test1" }
sub test2 : Test { pass "test2" }
sub test3 : Test { pass "test3" }
}
$ENV{ TEST_VERBOSE } = 0;
$ENV{ TEST_METHOD } = '+++';
throws_ok { MyTestClass->runtests }
qr/\A\QTEST_METHOD (+++) is not a valid regexp/,
'$ENV{TEST_METHOD} with an invalid regex should die';
delete $ENV{ TEST_METHOD };
expecting_tests( qw( startup setup test1 teardown setup test2 teardown setup test3 teardown shutdown ) );
test_test( "no TEST_METHOD runs all tests" );
$ENV{ TEST_METHOD } = 'test1';
expecting_tests( qw( startup setup test1 teardown shutdown ) );
test_test( "single match just runs one test" );
$ENV{ TEST_METHOD } = 'test[13]';
expecting_tests( qw( startup setup test1 teardown setup test3 teardown shutdown ) );
test_test( "two matches run both tests" );
####
sub expecting_tests {
my @test_descriptions = @_;
my $n = 1;
foreach my $description ( @test_descriptions ) {
test_out( "ok " . $n++ . " - $description" );
}
MyTestClass->runtests;
}