File Coverage

blib/lib/Test2/Plugin/UTF8.pm
Criterion Covered Total %
statement 27 31 87.1
branch 4 10 40.0
condition 1 2 50.0
subroutine 6 6 100.0
pod n/a
total 38 49 77.5


line stmt bran cond sub pod time code
1             package Test2::Plugin::UTF8;
2 157     157   2641 use strict;
  157         2881  
  157         4710  
3 157     157   923 use warnings;
  157         433  
  157         6867  
4              
5             our $VERSION = '0.000155';
6              
7 157     157   970 use Carp qw/croak/;
  157         365  
  157         9006  
8              
9 157         46491 use Test2::API qw{
10             test2_add_callback_post_load
11             test2_stack
12 157     157   2170 };
  157         144838  
13              
14             my $LOADED = 0;
15              
16             sub import {
17 315     315   761 my $class = shift;
18              
19 315         624 my $import_utf8 = 1;
20 315         1221 while ( my $arg = shift @_ ) {
21 0 0       0 croak "Unsupported import argument '$arg'" unless $arg eq 'encoding_only';
22 0         0 $import_utf8 = 0;
23             }
24              
25             # Load and import UTF8 into the caller.
26 315 50       993 if ( $import_utf8 ) {
27 315         3003 require utf8;
28 315         2002 utf8->import;
29             }
30              
31 315 100       2161 return if $LOADED++; # do not add multiple hooks
32              
33             # Set the output formatters to use utf8
34             test2_add_callback_post_load(sub {
35 157     157   52592 my $stack = test2_stack;
36 157         2532 $stack->top; # Make sure we have at least 1 hub
37              
38 157         3106310 my $warned = 0;
39 157         1328 for my $hub ($stack->all) {
40 157   50     1664 my $format = $hub->format || next;
41              
42 157 50       2774 unless ($format->can('encoding')) {
43 0 0       0 warn "Could not apply UTF8 to unknown formatter ($format)\n" unless $warned++;
44 0         0 next;
45             }
46              
47 157         989 $format->encoding('utf8');
48             }
49 157         2087 });
50             }
51              
52             1;
53              
54             __END__