X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Funit_core_setup.t;h=00ee842d51bc5d73fa55d408f6388b148caae242;hb=9b1db775e21c29d58957aa1eb7f1446c83b4967a;hp=70b649ee14df8e14aee6be1a9a8b13c0eff0778e;hpb=ae29b412955743885e80350085167b54b69672da;p=catagits%2FCatalyst-Runtime.git diff --git a/t/unit_core_setup.t b/t/unit_core_setup.t index 70b649e..00ee842 100644 --- a/t/unit_core_setup.t +++ b/t/unit_core_setup.t @@ -1,61 +1,83 @@ use strict; use warnings; +use Class::MOP::Class; use Catalyst::Runtime; -use Test::More tests => 20; +use Test::More tests => 29; { # Silence the log. - no warnings 'redefine'; - *Catalyst::Log::_send_to_log = sub {}; + my $meta = Catalyst::Log->meta; + $meta->make_mutable; + $meta->remove_method('_send_to_log'); + $meta->add_method('_send_to_log', sub {}); } -TESTDEBUG: { - package MyTestDebug; - use base qw/Catalyst/; - __PACKAGE__->setup( - '-Debug', - ); +sub build_test_app_with_setup { + my ($name, @flags) = @_; + my $flags = '(' . join(', ', map { "'".$_."'" } @flags) . ')'; + $flags = '' if $flags eq '()'; + eval qq{ + package $name; + use Catalyst $flags; + $name->setup; + }; + die $@ if $@; + return $name; } -ok my $c = MyTestDebug->new, 'Get debug app object'; -ok my $log = $c->log, 'Get log object'; -isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; -ok !$log->is_warn, 'Warnings should be disabled'; -ok !$log->is_error, 'Errors should be disabled'; -ok !$log->is_fatal, 'Fatal errors should be disabled'; -ok !$log->is_info, 'Info should be disabled'; -ok $log->is_debug, 'Debugging should be enabled'; -can_ok 'MyTestDebug', 'debug'; -ok +MyTestDebug->debug, 'And it should return true'; +local %ENV; # Don't allow env variables to mess us up. +{ + my $app = build_test_app_with_setup('MyTestDebug', '-Debug'); -TESTAPP: { - package MyTestLog; - use base qw/Catalyst/; - __PACKAGE__->setup( - '-Log=warn,error,fatal' - ); + ok my $c = MyTestDebug->new, 'Get debug app object'; + ok my $log = $c->log, 'Get log object'; + isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; + ok $log->is_warn, 'Warnings should be enabled'; + ok $log->is_error, 'Errors should be enabled'; + ok $log->is_fatal, 'Fatal errors should be enabled'; + ok $log->is_info, 'Info should be enabled'; + ok $log->is_debug, 'Debugging should be enabled'; + ok $app->debug, 'debug method should return true'; } -ok $c = MyTestLog->new, 'Get log app object'; -ok $log = $c->log, 'Get log object'; -isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; -ok $log->is_warn, 'Warnings should be enabled'; -ok $log->is_error, 'Errors should be enabled'; -ok $log->is_fatal, 'Fatal errors should be enabled'; -ok !$log->is_info, 'Info should be disabled'; -ok !$log->is_debug, 'Debugging should be disabled'; +{ + my $app = build_test_app_with_setup('MyTestLogParam', '-Log=warn,error,fatal'); + + ok my $c = $app->new, 'Get log app object'; + ok my $log = $c->log, 'Get log object'; + isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; + ok $log->is_warn, 'Warnings should be enabled'; + ok $log->is_error, 'Errors should be enabled'; + ok $log->is_fatal, 'Fatal errors should be enabled'; + ok !$log->is_info, 'Info should be disabled'; + ok !$log->is_debug, 'Debugging should be disabled'; + ok !$c->debug, 'Catalyst debugging is off'; +} +{ + my $app = build_test_app_with_setup('MyTestNoParams'); -TESTOWNLOGGER: { + ok my $c = $app->new, 'Get log app object'; + ok my $log = $c->log, 'Get log object'; + isa_ok $log, 'Catalyst::Log', 'It should be a Catalyst::Log object'; + ok $log->is_warn, 'Warnings should be enabled'; + ok $log->is_error, 'Errors should be enabled'; + ok $log->is_fatal, 'Fatal errors should be enabled'; + ok $log->is_info, 'Info should be enabled'; + ok $log->is_debug, 'Debugging should be enabled'; + ok !$c->debug, 'Catalyst debugging turned off'; +} +my $log_meta = Class::MOP::Class->create_anon_class( + methods => { map { $_ => sub { 0 } } qw/debug error fatal info warn/ }, +); +{ package MyTestAppWithOwnLogger; use base qw/Catalyst/; - use Test::MockObject; - my $log = Test::MockObject->new; - $log->set_false(qw/debug error fatal info warn/); - __PACKAGE__->log($log); + __PACKAGE__->log($log_meta->new_object); __PACKAGE__->setup('-Debug'); } -ok $c = MyTestAppWithOwnLogger->new, 'Get with own logger app object'; +ok my $c = MyTestAppWithOwnLogger->new, 'Get with own logger app object'; ok $c->debug, '$c->debug is true'; +