summaryrefslogtreecommitdiff
path: root/cpan/Test-Simple/t/Modern/encoding_test.t
diff options
context:
space:
mode:
authorChad Granum <chad.granum@dreamhost.com>2014-08-15 08:40:10 -0700
committerJames E Keenan <jkeenan@cpan.org>2014-08-16 23:19:29 +0200
commit6bdb88770f849c47b5c09e733ac460ce3e9dbc97 (patch)
tree3eda7f11aea1019f7a802c1caecfb81ab26e7761 /cpan/Test-Simple/t/Modern/encoding_test.t
parent7d16fb5f4895e672484c0b7490722d46df82b099 (diff)
downloadperl-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.t66
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;