fix broken tests for new psgi logging code
[catagits/Catalyst-Runtime.git] / t / lib / TestApp / View / Dump.pm
CommitLineData
fbcc39ad 1package TestApp::View::Dump;
2
3use strict;
ae0e35ee 4use base 'Catalyst::View';
fbcc39ad 5
6use Data::Dumper ();
610bc6ec 7use Scalar::Util qw(blessed weaken);
fbcc39ad 8
9sub dump {
9310b818 10 my ( $self, $reference, $purity ) = @_;
fbcc39ad 11
12 return unless $reference;
13
6721fe5a 14 $purity = defined $purity ? $purity : 1;
9310b818 15
fbcc39ad 16 my $dumper = Data::Dumper->new( [$reference] );
17 $dumper->Indent(1);
9310b818 18 $dumper->Purity($purity);
fbcc39ad 19 $dumper->Useqq(0);
20 $dumper->Deepcopy(1);
a54d8c48 21 $dumper->Quotekeys(1);
fbcc39ad 22 $dumper->Terse(1);
23
0a1a7923 24 local $SIG{ __WARN__ } = sub { warn unless $_[ 0 ] =~ m{dummy} };
fbcc39ad 25 return $dumper->Dump;
26}
27
28sub process {
9310b818 29 my ( $self, $c, $reference, $purity ) = @_;
fbcc39ad 30
31 # Force processing of on-demand data
32 $c->prepare_body;
33
fbcc39ad 34 # Remove body from reference if needed
610bc6ec 35 $reference->{__body_type} = blessed $reference->body
36 if (blessed $reference->{_body});
fbcc39ad 37 my $body = delete $reference->{_body};
38
610bc6ec 39 # Remove context from reference if needed
40 my $context = delete $reference->{_context};
41
0eb98ebd 42 if (my $log = $reference->{_log}) {
a273dd58 43 $log->clear_psgi if ($log->can('psgienv'));
0eb98ebd 44 }
45
fbcc39ad 46 if ( my $output =
9310b818 47 $self->dump( $reference, $purity ) )
fbcc39ad 48 {
49
50 $c->res->headers->content_type('text/plain');
51 $c->res->output($output);
52
c3fd63d4 53 if ($context) {
54 # Repair context
55 $reference->{_context} = $context;
56 weaken( $reference->{_context} );
57 }
58
59 if ($body) {
60 # Repair body
61 delete $reference->{__body_type};
62 $reference->{_body} = $body;
63 }
fbcc39ad 64
65 return 1;
66 }
67
68 return 0;
69}
70
711;