added support for token_re
[urisagit/Template-Simple.git] / t / include.t
CommitLineData
e374d8da 1#!perl
2
3use strict ;
4use lib qw(t) ;
5use common ;
6
7use File::Slurp ;
8use Data::Dumper ;
9
10# these dirs must be in order to the deepest for rmdir to work properly
11
12my @tmpl_dirs = qw( templates templates/deeper templates/deeper/deepest ) ;
13
14my %tmpl_files = (
15
16 'templates/FOO.tmpl' => <<FOO,
17this loads bar <[%include BAR%]>
18FOO
19 'templates/deeper/BAR.tmpl' => <<BAR,
20{this should hide}
21BAR
22 'templates/deeper/deepest/BAR.tmpl' => <<BAR,
23[this should be hidden then revealed]
24BAR
25
26) ;
27
28my $tests = [
29
30 {
31 name => 'simple include',
32 skip => 0,
33 opts => {
34
35 templates => {
36 'foo' => 'bar',
37 }
38 },
39 data => {},
40 template => '[%INCLUDE foo%]',
41 expected => 'bar',
42 },
43 {
44 name => 'nested includes',
45 skip => 0,
46 opts => {
47 templates => {
48 foo => '[%include bar%]',
49 bar => 'quux',
50 },
51 },
52 data => {},
53 template => '[%INCLUDE foo%]',
54 expected => 'quux',
55 },
56 {
57 name => 'serial includes',
58 skip => 0,
59 opts => {
60 templates => {
61 foo => 'foo is here',
62 bar => 'bar is too',
63 quux => 'quux is on the drums',
64 },
65 },
66 data => {},
67 template => '[%INCLUDE foo%] [%INCLUDE bar%] [%INCLUDE quux%]',
68 expected => 'foo is here bar is too quux is on the drums',
69 },
70
71 {
72 name => 'missing include',
73 skip => 0,
74 data => {},
75 keep_obj => 1,
76 pretest => sub { $_[0]{obj}->delete_templates() },
77 error => qr/can't find/,
78 },
79
80 {
81 name => 'load include files',
82 skip => 0,
83 opts => {
84 include_paths => [ qw(
85 templates
86 templates/deeper
87 templates/deeper/deepest
88 ) ],
89 },
90 data => {},
91 template => '[%INCLUDE FOO%]',
92 expected => <<EXPECTED,
93this loads bar <{this should hide}
94>
95EXPECTED
96
97 },
98 {
99 name => 'use lower path',
100 skip => 0,
101 opts => {
102 include_paths => [ qw(
103 templates
104 templates/deeper/deepest
105 ) ],
106 },
107 data => {},
108 expected => <<EXPECTED,
109this loads bar <[this should be hidden then revealed]
110>
111EXPECTED
112
113 },
114 {
115 name => 'delete covering file',
116 skip => 0,
117 opts => {
118 include_paths => [ qw(
119 templates
120 templates/deeper
121 templates/deeper/deepest
122 ) ],
123 },
124 pretest => sub { unlink 'templates/deeper/BAR.tmpl' },
125 data => {},
126 expected => <<EXPECTED,
127this loads bar <[this should be hidden then revealed]
128>
129EXPECTED
130
131 },
132] ;
133
134
135write_tmpl_files() ;
136
137template_tester( $tests ) ;
138
139#remove_tmpl_files() ;
140
141exit ;
142
143
144sub write_tmpl_files {
145
146 mkdir $_, 0755 for @tmpl_dirs ;
147
148 while( my( $file, $tmpl ) = each %tmpl_files ) {
149
150 write_file( $file, $tmpl ) ;
151 }
152}
153
154sub remove_tmpl_files {
155
156 unlink keys %tmpl_files ;
157
158 rmdir $_ for reverse @tmpl_dirs ;
159}