blob: fe0b944333482a5b38f2baf411143b31ba72879d [file] [log] [blame]
#!/usr/bin/perl -w
BEGIN {
unshift @INC, 't/lib';
}
use strict;
use Test::More tests => 25;
use App::Prove::State;
my $test_suite_data = test_suite_data();
#
# Test test suite results
#
can_ok 'App::Prove::State::Result', 'new';
isa_ok my $result = App::Prove::State::Result->new($test_suite_data),
'App::Prove::State::Result', '... and the object it returns';
ok $result, 'state_version';
ok defined $result->state_version, '... and it should be defined';
can_ok $result, 'generation';
is $result->generation, $test_suite_data->{generation},
'... and it should return the correct generation';
can_ok $result, 'num_tests';
is $result->num_tests, scalar keys %{ $test_suite_data->{tests} },
'... and it should return the number of tests run';
can_ok $result, 'raw';
is_deeply $result->raw, $test_suite_data,
'... and it should return the raw, unblessed data';
#
# Check individual tests.
#
can_ok $result, 'tests';
can_ok $result, 'test';
eval { $result->test };
my $error = $@;
like $error, qr/^\Qtest() requires a test name/,
'... and it should croak() if a test name is not supplied';
my $name = 't/compat/failure.t';
ok my $test = $result->test('t/compat/failure.t'),
'result() should succeed if the test name is found';
isa_ok $test, 'App::Prove::State::Result::Test',
'... and the object it returns';
can_ok $test, 'name';
is $test->name, $name, '... and it should return the test name';
can_ok $test, 'last_pass_time';
like $test->last_pass_time, qr/^\d+\.\d+$/,
'... and it should return a numeric value';
can_ok $test, 'last_fail_time';
ok !defined $test->last_fail_time,
'... and it should return undef if the test has never failed';
can_ok $result, 'remove';
ok $result->remove($name), '... and calling it should succeed';
ok $test = $result->test($name),
'... and fetching the removed test should suceed';
ok !defined $test->last_pass_time, '... and it should have clean values';
sub test_suite_data {
return {
'version' => App::Prove::State::Result->state_version,
'generation' => '51',
'tests' => {
't/compat/failure.t' => {
'last_result' => '0',
'last_run_time' => '1196371471.57738',
'last_pass_time' => '1196371471.57738',
'total_passes' => '48',
'seq' => '1549',
'gen' => '51',
'elapsed' => 0.1230,
'last_todo' => '1',
'mtime' => 1196285623,
},
't/yamlish-writer.t' => {
'last_result' => '0',
'last_run_time' => '1196371480.5761',
'last_pass_time' => '1196371480.5761',
'last_fail_time' => '1196368609',
'total_passes' => '41',
'seq' => '1578',
'gen' => '49',
'elapsed' => 12.2983,
'last_todo' => '0',
'mtime' => 1196285400,
},
't/compat/env.t' => {
'last_result' => '0',
'last_run_time' => '1196371471.42967',
'last_pass_time' => '1196371471.42967',
'last_fail_time' => '1196368608',
'total_passes' => '48',
'seq' => '1548',
'gen' => '52',
'elapsed' => 3.1290,
'last_todo' => '0',
'mtime' => 1196285739,
},
't/compat/version.t' => {
'last_result' => '2',
'last_run_time' => '1196371472.96476',
'last_pass_time' => '1196371472.96476',
'last_fail_time' => '1196368609',
'total_passes' => '47',
'seq' => '1555',
'gen' => '51',
'elapsed' => 0.2363,
'last_todo' => '4',
'mtime' => 1196285239,
},
't/compat/inc_taint.t' => {
'last_result' => '3',
'last_run_time' => '1196371471.89682',
'last_pass_time' => '1196371471.89682',
'total_passes' => '47',
'seq' => '1551',
'gen' => '51',
'elapsed' => 1.6938,
'last_todo' => '0',
'mtime' => 1196185639,
},
't/source.t' => {
'last_result' => '0',
'last_run_time' => '1196371479.72508',
'last_pass_time' => '1196371479.72508',
'total_passes' => '41',
'seq' => '1570',
'gen' => '51',
'elapsed' => 0.0143,
'last_todo' => '0',
'mtime' => 1186285639,
},
}
};
}