Beefy Boxes and Bandwidth Generously Provided by pair Networks
Come for the quick hacks, stay for the epiphanies.
 
PerlMonks  

Re: How can I enable utf8 layer on Test::More diag output

by pc88mxer (Vicar)
on Jul 22, 2008 at 14:48 UTC ( [id://699327]=note: print w/replies, xml ) Need Help??


in reply to How can I enable utf8 layer on Test::More diag output

Instead of calling diag($data) you probably have to do this:
my $tb = Test::More->builder; $tb->failure_output(\*STDOUT); $tb->diag($data);
Of course you can wrap it in a subroutine.

Update: Alternatively, instead of redefining failure_output, it might be better to just call binmode on it:

my $tb = Test::More->builder; binmode $tb->failure_output, ":utf8"; $tb->diag(...);

Replies are listed 'Best First'.
Re^2: How can I enable utf8 layer on Test::More diag output
by mje (Curate) on Jul 22, 2008 at 14:57 UTC
    This does in deed work and I've found out why. The problem is that Test::Builder duplicates STDOUT and STDERR (comments say so you can change them without affecting Test::More) but it does NOT duplicate the IO layers. The funny thing is has code to do it but it is commented out:
    sub _open_testhandles { my $self = shift; return if $Opened_Testhandles; # We dup STDOUT and STDERR so people can change them in their # test suites while still getting normal test output. open( $Testout, ">&STDOUT") or die "Can't dup STDOUT: $!"; open( $Testerr, ">&STDERR") or die "Can't dup STDERR: $!"; # $self->_copy_io_layers( \*STDOUT, $Testout ); # $self->_copy_io_layers( \*STDERR, $Testerr ); $Opened_Testhandles = 1; } sub _copy_io_layers { my($self, $src, $dst) = @_; $self->_try(sub { require PerlIO; my @src_layers = PerlIO::get_layers($src); binmode $dst, join " ", map ":$_", @src_layers if @src_layers; }); }
    I've no idea why this is commented out. However, setting utf8 io layer on STDOUT and then calling failure_output to reset Test::More's idea of failure output works - just seems a bit of a hack.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://699327]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others pondering the Monastery: (1)
As of 2024-04-25 00:31 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found