| #!perl |
| # |
| # Tests for STRICT features |
| # These tests first appeared in version 1.48. |
| |
| use strict; |
| use warnings; |
| use Test::More tests => 4; |
| |
| use_ok 'Text::Template' or exit 1; |
| |
| @Emptyclass1::ISA = 'Text::Template'; |
| @Emptyclass2::ISA = 'Text::Template'; |
| |
| my $tin = q{The value of $foo is: {$foo}}; |
| |
| Text::Template->always_prepend(q{$foo = "global"}); |
| |
| my $tmpl1 = Text::Template->new( |
| TYPE => 'STRING', |
| SOURCE => $tin); |
| |
| my $tmpl2 = Text::Template->new( |
| TYPE => 'STRING', |
| SOURCE => $tin, |
| PREPEND => q{$foo = "template"}); |
| |
| $tmpl1->compile; |
| $tmpl2->compile; |
| |
| # strict should cause t1 to contain an error message if wrong variable is used in template |
| my $t1 = $tmpl1->fill_in(PACKAGE => 'T1', STRICT => 1, HASH => { bar => 'baz' }); |
| |
| # non-strict still works |
| my $t2 = $tmpl2->fill_in(PACKAGE => 'T2', HASH => { bar => 'baz' }); |
| |
| # prepend overrides the hash values |
| my $t3 = $tmpl2->fill_in( |
| PREPEND => q{$foo = "fillin"}, |
| PACKAGE => 'T3', |
| STRICT => 1, |
| HASH => { foo => 'hashval2' }); |
| |
| like $t1, qr/Global symbol "\$foo" requires explicit package/; |
| is $t2, 'The value of $foo is: template', "non-strict hash still works"; |
| is $t3, "The value of \$foo is: fillin", "hash values with prepend, prepend wins, even under strict."; |