From: Tomas Doran Date: Tue, 21 Apr 2009 21:38:02 +0000 (+0000) Subject: Tests for kds fail. Comments indicate other fail? X-Git-Tag: 5.80002~5 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=812082c68a6375c17dbf9b9f36385176d7f417fa Tests for kds fail. Comments indicate other fail? --- diff --git a/t/unit_core_setup_log.t b/t/unit_core_setup_log.t new file mode 100644 index 0000000..7bc687d --- /dev/null +++ b/t/unit_core_setup_log.t @@ -0,0 +1,82 @@ +use strict; +use warnings; + +use Test::More tests => 24; +use Test::Exception; + +use Catalyst (); + +sub mock_app { + my $name = shift; + 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; # Ensure blank or someone, somewhere will fail.. + +{ + my $app = mock_app('TestLogAppParseLevels'); + $app->setup_log('error,warn'); + ok !$app->debug, 'Not in debug mode'; + test_log_object($app->log, + fatal => 0, # WTF - I thought log levels were additive these days, + # or do I not understand the patch which pupported to make + # them so? + error => 1, + warn => 1, + info => 0, + debug => 0, + ); +} +{ + local %ENV = ( CATALYST_DEBUG => 1 ); + my $app = mock_app('TestLogAppDebugEnvSet'); + $app->setup_log(''); + ok $app->debug, 'In debug mode'; + test_log_object($app->log, + fatal => 1, # Note, log levels _are_ seemingly additive if debug is on. + error => 1, # CRACK - someone has been smoking it. + warn => 1, + info => 1, + debug => 1, + ); +} +{ + local %ENV = ( CATALYST_DEBUG => 0 ); + my $app = mock_app('TestLogAppDebugEnvUnset'); + $app->setup_log(''); + ok !$app->debug, 'Not In debug mode'; + test_log_object($app->log, + fatal => 0, + error => 0, + warn => 0, + info => 0, + debug => 0, + ); +} +{ + my $app = mock_app('TestLogAppDebugOnly'); + $app->setup_log('debug'); + ok $app->debug, 'In debug mode'; + test_log_object($app->log, + fatal => 0, + error => 0, + warn => 0, + info => 0, + debug => 1, + ); +}