Skip to content

Instantly share code, notes, and snippets.

@yappo
Created December 19, 2012 12:21
Show Gist options
  • Save yappo/4336310 to your computer and use it in GitHub Desktop.
Save yappo/4336310 to your computer and use it in GitHub Desktop.
use strict;
use warnings;
use Test::More;
use Text::Xslate;
subtest 'scope ok' => sub {
my $tx = Text::Xslate->new({
syntax => 'TTerse'
});
my $ret = $tx->render_string(<<TMPL,);
[% IF 1 -%]
[% SET chin = 'kiranai' -%]
[% chin -%]
[% END -%]
[% chin -%]
TMPL
is $ret, "kiranai";
};
subtest 'scope bug?' => sub {
my $tx = Text::Xslate->new({
syntax => 'TTerse'
});
my $ret = $tx->render_string(<<TMPL,);
[% SET chin = 'kiru' -%]
[% IF 1 -%]
[% SET chin = 'kiranai' -%]
[% chin -%]
[% END -%]
[% chin -%]
TMPL
is $ret, "kiranaikiru"; # kiranaikiranai が帰って来て失敗する
};
done_testing;
use strict;
use warnings;
use Test::More;
use Text::Xslate;
subtest 'ok' => sub {
my $tx = Text::Xslate->new({
syntax => 'TTerse'
});
eval {
$tx->render_string(<<TMPL,);
[% SET chin -%]
[% IF 1 -%]
[% chin = 'kiru' -%]
[% ELSIF 0 -%]
[% END -%]
TMPL
};
is $@, '';
};
subtest 'ng' => sub {
my $tx = Text::Xslate->new({
syntax => 'TTerse'
});
eval {
$tx->render_string(<<TMPL,);
[% SET chin -%]
[% IF 1 -%]
[% chin = 'kiru' -%]
[% ELSIF 0 -%]
[% chin = 'kiranai' -%]
[% END -%]
TMPL
};
like $@, qr/Text::Xslate::Compiler: Cannot modify chin, which is not a lexical variable/;
};
subtest 'ng 2' => sub {
my $tx = Text::Xslate->new({
syntax => 'TTerse'
});
eval {
$tx->render_string(<<TMPL,);
[% IF 1 -%]
[% SET chin = 'kiru' -%]
[% ELSIF 0 -%]
[% SET chin = 'kiranai' -%]
[% END -%]
TMPL
};
like $@, qr/Text::Xslate::Compiler: Cannot modify chin, which is not a lexical variable/;
};
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment