| #!/usr/bin/perl -w |
| |
| BEGIN { |
| unshift @INC, 't/lib'; |
| } |
| |
| use strict; |
| use Test::More; |
| use App::Prove::State; |
| use App::Prove::State::Result; |
| |
| sub mn { |
| my $pfx = ''; |
| return map {"$pfx$_"} @_; |
| } |
| |
| my @schedule = ( |
| { options => 'all', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/source_handler.t', |
| 't/yamlish-writer.t', |
| ], |
| }, |
| { options => 'failed', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| ], |
| }, |
| { options => 'passed', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/source_handler.t', |
| 't/yamlish-writer.t', |
| ], |
| }, |
| { options => 'last', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/source_handler.t', |
| ], |
| }, |
| { options => 'todo', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/version.t', |
| 't/compat/failure.t', |
| ], |
| |
| }, |
| { options => 'hot', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/version.t', |
| 't/yamlish-writer.t', |
| 't/compat/env.t', |
| ], |
| }, |
| { options => 'adrian', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/version.t', |
| 't/yamlish-writer.t', |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/compat/inc_taint.t', |
| 't/source_handler.t', |
| ], |
| }, |
| { options => 'failed,passed', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/source_handler.t', |
| 't/yamlish-writer.t', |
| ], |
| }, |
| { options => [ 'failed', 'passed' ], |
| get_tests_args => [], |
| expect => [ |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/source_handler.t', |
| 't/yamlish-writer.t', |
| ], |
| }, |
| { options => 'slow', |
| get_tests_args => [], |
| expect => [ |
| 't/yamlish-writer.t', |
| 't/compat/env.t', |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/compat/failure.t', |
| 't/source_handler.t', |
| ], |
| }, |
| { options => 'fast', |
| get_tests_args => [], |
| expect => [ |
| 't/source_handler.t', |
| 't/compat/failure.t', |
| 't/compat/version.t', |
| 't/compat/inc_taint.t', |
| 't/compat/env.t', |
| 't/yamlish-writer.t', |
| ], |
| }, |
| { options => 'old', |
| get_tests_args => [], |
| expect => [ |
| 't/source_handler.t', |
| 't/compat/inc_taint.t', |
| 't/compat/version.t', |
| 't/yamlish-writer.t', |
| 't/compat/failure.t', |
| 't/compat/env.t', |
| ], |
| }, |
| { options => 'new', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| 't/yamlish-writer.t', |
| 't/compat/version.t', |
| 't/compat/inc_taint.t', |
| 't/source_handler.t', |
| ], |
| }, |
| { options => 'fresh', |
| get_tests_args => [], |
| expect => [ |
| 't/compat/env.t', |
| 't/compat/failure.t', |
| ], |
| }, |
| ); |
| |
| plan tests => @schedule * 2; |
| |
| for my $test (@schedule) { |
| my $state = App::Prove::State->new; |
| isa_ok $state, 'App::Prove::State'; |
| |
| my $desc = $test->{options}; |
| |
| # Naughty |
| $state->{_} = get_state(); |
| my $options = $test->{options}; |
| $options = [$options] unless 'ARRAY' eq ref $options; |
| $state->apply_switch(@$options); |
| |
| my @got = $state->get_tests( @{ $test->{get_tests_args} } ); |
| my @expect = mn( @{ $test->{expect} } ); |
| unless ( is_deeply \@got, \@expect, "$desc: order OK" ) { |
| use Data::Dumper; |
| diag( Dumper( { got => \@got, want => \@expect } ) ); |
| } |
| } |
| |
| sub get_state { |
| return App::Prove::State::Result->new( |
| { generation => 51, |
| last_run_time => 1196285439, |
| tests => { |
| mn('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, |
| }, |
| mn('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, |
| }, |
| mn('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, |
| }, |
| mn('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, |
| }, |
| mn('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, |
| }, |
| mn('t/source_handler.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, |
| }, |
| } |
| } |
| ); |
| } |