Test case using Exception::Class
[catagits/Catalyst-Runtime.git] / t / unit_core_setup_log.t
index 7bc687d..1406944 100644 (file)
@@ -1,13 +1,14 @@
 use strict;
 use warnings;
 
-use Test::More tests => 24;
+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;
@@ -26,16 +27,19 @@ sub test_log_object {
     }
 }
 
-local %ENV; # Ensure blank or someone, somewhere will fail..
+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('TestLogAppParseLevels');
+    my $app = mock_app('TestAppParseLogLevels');
     $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?
+        fatal => 1,
         error => 1,
         warn => 1,
         info => 0,
@@ -43,40 +47,55 @@ local %ENV; # Ensure blank or someone, somewhere will fail..
     );
 }
 {
-    local %ENV = ( CATALYST_DEBUG => 1 );
-    my $app = mock_app('TestLogAppDebugEnvSet');
+    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, # Note, log levels _are_ seemingly additive if debug is on.
-        error => 1, # CRACK - someone has been smoking it.
+        fatal => 1,
+        error => 1,
         warn => 1,
         info => 1,
         debug => 1,
     );
 }
 {
-    local %ENV = ( CATALYST_DEBUG => 0 );
-    my $app = mock_app('TestLogAppDebugEnvUnset');
-    $app->setup_log('');
+    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 => 0,
-        error => 0,
-        warn => 0,
+        fatal => 1,
+        error => 1,
+        warn => 1,
         info => 0,
         debug => 0,
     );
 }
 {
-    my $app = mock_app('TestLogAppDebugOnly');
+    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 => 0,
-        error => 0,
-        warn => 0,
-        info => 0,
+        fatal => 1,
+        error => 1,
+        warn => 1,
+        info => 1,
         debug => 1,
     );
 }