File: 17_escape.t

package info (click to toggle)
libhtml-template-compiled-perl 1.003-3
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 772 kB
  • sloc: perl: 4,759; makefile: 5
file content (93 lines) | stat: -rw-r--r-- 2,434 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl HTML-Template-Compiled.t'

use Test::More tests => 6;
use Data::Dumper;
use File::Spec;
use strict;
use warnings;
local $Data::Dumper::Indent = 1; local $Data::Dumper::Sortkeys = 1;
BEGIN { use_ok('HTML::Template::Compiled') };
BEGIN { use_ok('HTML::Template::Compiled::Plugin::XMLEscape') };
my $cache = File::Spec->catfile('t', 'cache');

{

	my $htc = HTML::Template::Compiled->new(
		scalarref => \<<'EOM',
<tmpl_var html>
<tmpl_var nohtml ESCAPE=0>
EOM
		default_escape => 'HTML',
		debug => 0,
	);
	my $html = '<html>';
	my $nohtml = $html;
	$htc->param(
		html => $html,
		nohtml => $nohtml,
	);
    $html = HTML::Template::Compiled::Utils::escape_html($html);
	my $out = $htc->output;
	$out =~ tr/\n\r //d;
	#print $out,$/;
	cmp_ok($out, "eq", $html . $nohtml, "default_escape");
}

{

    my $htc = HTML::Template::Compiled->new(
        scalarref => \<<"EOM",
<script>
var test = '<%= foo escape=JS %>';
</script>
EOM
        debug => 0,
    );
    my $foo = "test \\'foo";
    $htc->param(foo => $foo);
    my $out = $htc->output;
    $out =~ tr/\n\r//d;
    $out =~ s/^\s*//;
    #print $out, $/;
    cmp_ok($out, 'eq', q{<script>var test = 'test \\\\\\'foo';</script>}, "escape=JS");
}
{

    my $htc = HTML::Template::Compiled->new(
        scalarref => \<<"EOM",
        <xml foo="<%= foo escape=xml_attr %>"><%= foo escape=xml %></xml>
EOM
        plugin => [qw(::XMLEscape)],
        debug => 0,
    );
    #warn Data::Dumper->Dump([\$htc], ['htc']);
    my $foo = "<to_escape>";
    my $xml = HTML::Template::Compiled::Plugin::XMLEscape::escape_xml($foo);
    my $xml_attr = HTML::Template::Compiled::Plugin::XMLEscape::escape_xml_attr($foo);
    $htc->param(foo => $foo);
    my $out = $htc->output;
	$out =~ tr/\n\r//d;
    $out =~ s/^\s*//;
    #print $out, $/;
    cmp_ok($out, 'eq', qq{<xml foo="$xml_attr">$xml</xml>}, "Plugin XMLEscape");
}

{

    my $htc = HTML::Template::Compiled->new(
        scalarref => \<<"EOM",
        <%= foo escape=ijson %>
EOM
        debug => 0,
    );
    my $foo = q#{ "a" : "name='myvar'" }#;
    my $ijson = HTML::Template::Compiled::Utils::escape_ijson($foo);
    $htc->param(foo => $foo);
    my $out = $htc->output;
    $out =~ tr/\n\r//d;
    $out =~ s/^\s*//;
    #print $out, $/;
    cmp_ok($out, 'eq', qq{$ijson}, "ijson escape");
}