X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Faggregate%2Funit_core_setup_log.t;fp=t%2Faggregate%2Funit_core_setup_log.t;h=1406944eb032d450db7f56bc9c47d7f29419accb;hb=4a41d5d1ec3187cc41e15767b21c14b2aee31740;hp=0000000000000000000000000000000000000000;hpb=2757db2c7c600c8a0b8e2b4366f38c97804c2844;p=catagits%2FCatalyst-Runtime.git diff --git a/t/aggregate/unit_core_setup_log.t b/t/aggregate/unit_core_setup_log.t new file mode 100644 index 0000000..1406944 --- /dev/null +++ b/t/aggregate/unit_core_setup_log.t @@ -0,0 +1,101 @@ +use strict; +use warnings; + +use Test::More tests => 30; +use Test::Exception; + +use Catalyst (); + +sub mock_app { + my $name = shift; + print "Setting up mock application: $name\n"; + my $meta = Moose->init_meta( for_class => $name ); + $meta->superclasses('Catalyst'); + return $meta->name; +} + +sub test_log_object { + my ($log, %expected) = @_; + foreach my $level (keys %expected) { + my $method_name = "is_$level"; + if ($expected{$level}) { + ok( $log->$method_name(), "Level $level on" ); + } + else { + ok( !$log->$method_name(), "Level $level off" ); + } + } +} + +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('TestAppParseLogLevels'); + $app->setup_log('error,warn'); + ok !$app->debug, 'Not in debug mode'; + test_log_object($app->log, + fatal => 1, + error => 1, + warn => 1, + info => 0, + debug => 0, + ); +} +{ + local %ENV = %ENV; + $ENV{CATALYST_DEBUG} = 1; + my $app = mock_app('TestAppLogDebugEnvSet'); + $app->setup_log(''); + ok $app->debug, 'In debug mode'; + test_log_object($app->log, + fatal => 1, + error => 1, + warn => 1, + info => 1, + debug => 1, + ); +} +{ + local %ENV = %ENV; + $ENV{CATALYST_DEBUG} = 0; + my $app = mock_app('TestAppLogDebugEnvUnset'); + $app->setup_log('warn'); + ok !$app->debug, 'Not In debug mode'; + test_log_object($app->log, + fatal => 1, + error => 1, + warn => 1, + info => 0, + debug => 0, + ); +} +{ + my $app = mock_app('TestAppLogEmptyString'); + $app->setup_log(''); + ok !$app->debug, 'Not In debug mode'; + # Note that by default, you get _all_ the log levels turned on + test_log_object($app->log, + fatal => 1, + error => 1, + warn => 1, + info => 1, + debug => 1, + ); +} +{ + my $app = mock_app('TestAppLogDebugOnly'); + $app->setup_log('debug'); + ok $app->debug, 'In debug mode'; + test_log_object($app->log, + fatal => 1, + error => 1, + warn => 1, + info => 1, + debug => 1, + ); +}