Commit | Line | Data |
7c79dcf3 |
1 | use strict; |
2 | use warnings; |
3 | |
4 | use Test::More tests => 5; |
cdb2bf9c |
5 | use Class::MOP::Class; |
7c79dcf3 |
6 | |
7 | use Catalyst (); |
8 | |
9 | my %log_messages; # TODO - Test log messages as expected. |
cdb2bf9c |
10 | my $mock_log = Class::MOP::Class->create_anon_class( |
11 | methods => { |
12 | map { my $level = $_; |
13 | $level => sub { |
14 | $log_messages{$level} ||= []; |
15 | push(@{ $log_messages{$level} }, $_[1]); |
16 | }, |
17 | } |
18 | qw/debug info warn error fatal/, |
19 | }, |
20 | )->new_object; |
7c79dcf3 |
21 | |
22 | sub mock_app { |
23 | my $name = shift; |
24 | %log_messages = (); # Flatten log messages. |
7c79dcf3 |
25 | my $meta = Moose->init_meta( for_class => $name ); |
26 | $meta->superclasses('Catalyst'); |
27 | $meta->add_method('log', sub { $mock_log }); |
28 | return $meta->name; |
29 | } |
30 | |
803210fa |
31 | local %ENV = %ENV; |
69c27273 |
32 | |
803210fa |
33 | # Remove all relevant env variables to avoid accidental fail |
34 | foreach my $name (grep { /^(CATALYST|TESTAPP)/ } keys %ENV) { |
35 | delete $ENV{$name}; |
36 | } |
7c79dcf3 |
37 | |
38 | { |
803210fa |
39 | my $app = mock_app('TestAppNoStats'); |
7c79dcf3 |
40 | $app->setup_stats(); |
41 | ok !$app->use_stats, 'stats off by default'; |
42 | } |
43 | { |
803210fa |
44 | my $app = mock_app('TestAppStats'); |
7c79dcf3 |
45 | $app->setup_stats(1); |
46 | ok $app->use_stats, 'stats on if you say >setup_stats(1)'; |
47 | } |
48 | { |
803210fa |
49 | my $app = mock_app('TestAppStatsDebugTurnsStatsOn'); |
7c79dcf3 |
50 | $app->meta->add_method('debug' => sub { 1 }); |
51 | $app->setup_stats(); |
52 | ok $app->use_stats, 'debug on turns stats on'; |
53 | } |
54 | { |
803210fa |
55 | local %ENV = %ENV; |
56 | $ENV{CATALYST_STATS} = 1; |
57 | my $app = mock_app('TestAppStatsEnvSet'); |
7c79dcf3 |
58 | $app->setup_stats(); |
59 | ok $app->use_stats, 'ENV turns stats on'; |
60 | } |
61 | { |
803210fa |
62 | local %ENV = %ENV; |
63 | $ENV{CATALYST_STATS} = 0; |
64 | my $app = mock_app('TestAppStatsEnvUnset'); |
7c79dcf3 |
65 | $app->meta->add_method('debug' => sub { 1 }); |
66 | $app->setup_stats(1); |
67 | ok !$app->use_stats, 'ENV turns stats off, even when debug on and ->setup_stats(1)'; |
68 | } |
69 | |