Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?
 
PerlMonks  

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

by pc88mxer (Vicar)
on Jul 22, 2008 at 14:48 UTC ( #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(...);


Comment on Re: How can I enable utf8 layer on Test::More diag output
Select or Download Code
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
Node Status?
node history
Node Type: note [id://699327]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others making s'mores by the fire in the courtyard of the Monastery: (15)
As of 2015-07-06 17:41 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (79 votes), past polls