diff options
author | Chad Granum <chad.granum@dreamhost.com> | 2014-08-15 08:40:10 -0700 |
---|---|---|
committer | James E Keenan <jkeenan@cpan.org> | 2014-08-16 23:19:29 +0200 |
commit | 6bdb88770f849c47b5c09e733ac460ce3e9dbc97 (patch) | |
tree | 3eda7f11aea1019f7a802c1caecfb81ab26e7761 /cpan/Test-Simple/t/Modern/encoding_test.t | |
parent | 7d16fb5f4895e672484c0b7490722d46df82b099 (diff) | |
download | perl-6bdb88770f849c47b5c09e733ac460ce3e9dbc97.tar.gz |
Update to include latest Test::Builder alpha
Also updated some tests that the new builder broke
Diffstat (limited to 'cpan/Test-Simple/t/Modern/encoding_test.t')
-rw-r--r-- | cpan/Test-Simple/t/Modern/encoding_test.t | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/cpan/Test-Simple/t/Modern/encoding_test.t b/cpan/Test-Simple/t/Modern/encoding_test.t new file mode 100644 index 0000000000..23cf34274f --- /dev/null +++ b/cpan/Test-Simple/t/Modern/encoding_test.t @@ -0,0 +1,66 @@ +use strict; +use warnings; +no utf8; + +use Test::More qw/modern/; +use Test::Tester2; + +BEGIN { + my $norm = eval { require Unicode::Normalize; require Encode; 1 }; + plan skip_all => 'Unicode::Normalize is required for this test' unless $norm; +} + +my $filename = "encoding_tést.t"; +ok(!utf8::is_utf8($filename), "filename is not in utf8 already"); +my $utf8name = Unicode::Normalize::NFKC(Encode::decode('utf8', "$filename", Encode::FB_CROAK)); +ok( $filename ne $utf8name, "sanity check" ); + +tap_encoding 'utf8'; +my $trace_utf8 = Test::Builder::Trace->new(); +$trace_utf8->report->file($filename); + +tap_encoding 'legacy'; +my $trace_legacy = Test::Builder::Trace->new(); +$trace_legacy->report->file($filename); + +is($trace_utf8->encoding, 'utf8', "got a utf8 trace"); +is($trace_legacy->encoding, 'legacy', "got a legacy trace"); + +my $diag_utf8 = Test::Builder::Result::Diag->new( + message => "failed blah de blah\nFatal error in $filename line 42.\n", + trace => $trace_utf8, +); + +my $diag_legacy = Test::Builder::Result::Diag->new( + message => "failed blah de blah\nFatal error in $filename line 42.\n", + trace => $trace_legacy, +); + +ok( $diag_legacy->to_tap ne $diag_utf8->to_tap, "The utf8 diag has a different output" ); + +is( + $diag_legacy->to_tap, + "# failed blah de blah\n# Fatal error in $filename line 42.\n", + "Got unaltered filename in legacy" +); + +# Change encoding for the scope of the next test so that errors make more sense. +tap_encoding 'utf8' => sub { + is( + $diag_utf8->to_tap, + "# failed blah de blah\n# Fatal error in $utf8name line 42.\n", + "Got transcoded filename in utf8" + ); +}; + +{ + my $file = __FILE__; + my $success = eval { tap_encoding 'invalid_encoding'; 1 }; my $line = __LINE__; + chomp(my $error = $@); + ok(!$success, "Threw an exception when using invalid encoding"); + like($error, qr/^encoding 'invalid_encoding' is not valid, or not available at $file line $line/, 'validate encoding'); +}; + + + +done_testing; |