X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Faggregate%2Funit_core_setup_stats.t;fp=t%2Faggregate%2Funit_core_setup_stats.t;h=9aca059cfe15c7955915190b6bef3b3c5204d3ea;hb=4a41d5d1ec3187cc41e15767b21c14b2aee31740;hp=0000000000000000000000000000000000000000;hpb=2757db2c7c600c8a0b8e2b4366f38c97804c2844;p=catagits%2FCatalyst-Runtime.git diff --git a/t/aggregate/unit_core_setup_stats.t b/t/aggregate/unit_core_setup_stats.t new file mode 100644 index 0000000..9aca059 --- /dev/null +++ b/t/aggregate/unit_core_setup_stats.t @@ -0,0 +1,70 @@ +use strict; +use warnings; + +use Test::More tests => 5; +use Class::MOP::Class; + +use Catalyst (); + +local our %log_messages; # TODO - Test log messages as expected. +my $mock_log = Class::MOP::Class->create_anon_class( + methods => { + map { my $level = $_; + $level => sub { + $log_messages{$level} ||= []; + push(@{ $log_messages{$level} }, $_[1]); + }, + } + qw/debug info warn error fatal/, + }, +)->new_object; + +sub mock_app { + my $name = shift; + my $mock_log = shift; + %log_messages = (); # Flatten log messages. + my $meta = Moose->init_meta( for_class => $name ); + $meta->superclasses('Catalyst'); + $meta->add_method('log', sub { $mock_log }); + return $meta->name; +} + +local %ENV = %ENV; + +# Remove all relevant env variables to avoid accidental fail +foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) { + delete $ENV{$name}; +} + +{ + my $app = mock_app('TestAppNoStats', $mock_log); + $app->setup_stats(); + ok !$app->use_stats, 'stats off by default'; +} +{ + my $app = mock_app('TestAppStats', $mock_log); + $app->setup_stats(1); + ok $app->use_stats, 'stats on if you say >setup_stats(1)'; +} +{ + my $app = mock_app('TestAppStatsDebugTurnsStatsOn', $mock_log); + $app->meta->add_method('debug' => sub { 1 }); + $app->setup_stats(); + ok $app->use_stats, 'debug on turns stats on'; +} +{ + local %ENV = %ENV; + $ENV{CATALYST_STATS} = 1; + my $app = mock_app('TestAppStatsEnvSet', $mock_log); + $app->setup_stats(); + ok $app->use_stats, 'ENV turns stats on'; +} +{ + local %ENV = %ENV; + $ENV{CATALYST_STATS} = 0; + my $app = mock_app('TestAppStatsEnvUnset', $mock_log); + $app->meta->add_method('debug' => sub { 1 }); + $app->setup_stats(1); + ok !$app->use_stats, 'ENV turns stats off, even when debug on and ->setup_stats(1)'; +} +