#!perl # there were mojibake when caches were used use strict; use warnings; use Text::Xslate; #use if !Text::Xslate->USE_XS, # 'Test::More', skip_all => 'PP impl differs from XS impl'; use Test::More; use File::Temp qw(tempdir); use Encode qw(decode); binmode $_, 'utf8' for \*STDOUT, \*STDERR, Test::More->builder->output, Test::More->builder->failure_output, Test::More->builder->todo_output; sub d { return decode('utf8', shift); } my %vpath = ( 'layout.tx' => d(<<'T'),

: block content -> {}

T foo => d(<<'T'), : cascade layout; : around content -> { <: $bar :> : } T ); my $tmpdir = tempdir(DIR => ".", CLEANUP => 1); my %opts = ( path => \%vpath, cache => 1, cache_dir => $tmpdir, ); my %vars = ( bar => ('こんにちは'), ); my $expected = d(<<'T');

こんにちは

T note 'utf-8 encoded bytes'; foreach my $i(1 .. 2) { my $tx = Text::Xslate->new(\%opts); for my $j(1 .. 2) { is $tx->render(foo => \%vars), $expected, "process $i, render $j"; } } $tmpdir = tempdir(DIR => ".", CLEANUP => 1); note 'text string'; utf8::decode($vars{bar}); foreach my $i(1 .. 2) { my $tx = Text::Xslate->new(\%opts); for my $j(1 .. 2) { is $tx->render(foo => \%vars), $expected, "process $i, render $j"; } } undef $tmpdir; done_testing;